Hi,
I was a production planner at a rotational molding factory, and now I try to model this environment in Aimms by using the example of the machine shop scheduling problem.
For my model I only need one extra ‘dependent’ variable → a variable that tracks starts and ends of products on a machine. The reason is that starts/ends of a product on a machine involves set-up cost, and I want this to be a penalty in the TotalCostOfStartingOrders.
So I created the binary variable DoYouStartOrRemoveAProductFromAPosition(m,a,s,p,pn,i_dc), in where m is the machine (2 machines), a is the arm (each machine has 3 arms), s is the side of de arm (each arm has 2 sides: up or down), p the position (each side has 3 positions), pn is the product name (the model contains 12 products) and i_dc is the daily calender in workdays (66 workdays).
This binary variable is defined by three contraints:
DoYouStartOrRemoveAProductFromAPosition(m,a,s,p,pn,i_dc)<=(DoYouHaveProductionOfAProductInAPeriod(m,a,s,p,pn,i_dc) + DoYouHaveProductionOfAProductInAPeriod(m,a,s,p,pn,i_dc-1))
DoYouStartOrRemoveAProductFromAPosition(m,a,s,p,pn,i_dc)>=(DoYouHaveProductionOfAProductInAPeriod(m,a,s,p,pn,i_dc) - DoYouHaveProductionOfAProductInAPeriod(m,a,s,p,pn,i_dc-1))
DoYouStartOrRemoveAProductFromAPosition(m,a,s,p,pn,i_dc)>=(DoYouHaveProductionOfAProductInAPeriod(m,a,s,p,pn,i_dc-1) - DoYouHaveProductionOfAProductInAPeriod(m,a,s,p,pn,i_dc))
I added the variable in the cost function:
sum ((m,a,s,p,o,pn,i_dc), StartProductionOnProductionLine(m,a,s,p,o,i_dc)*P_CostOfStartingOrderOvens(m,a,s,p,o,i_dc)+DoYouStartOrRemoveAProductFromAPosition(m,a,s,p,pn,i_dc))
The thing is that after I implemented the variable in the cost function, the solver does not work properly → after it finds an ‘ok’ solution, it does not find better solutions. You can see this in screenshot 1: a solution of 4470 is found. In the attachment it is version 10.
When you remove the variable and the constraints, and you run the solver again it finds a solution of 2832, see screenshot 2 and version 11. Because the model has 30 orders, which means in the worst case scenario 30 starts and 30 ends (penalty of 60), a solution of 2892 or lower is what I'm looking for in version 10. But I get 4470, which is way off. Who can help me to find a better way to track starts and ends in the model and use it as a penalty in the cost function?