<div dir="ltr"><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">Hi all,</span><div style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></div><div style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Arial,Helvetica,sans-serif;font-size:13px">I am trying to program software for automated roster planning. My program works fine if I use CPLEX, but the final goal is to use CBC (or some other free solver). I have several cases which CPLEX solves in about half a minute, while CBC is still not done after 10 minutes.</div><div style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></div><div style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Arial,Helvetica,sans-serif;font-size:13px">Do you have a tip how to make CBC run faster? I.e., is it better to add constraints / variables? Or to remove them? Or can I influence the solver in any other way? Or is there another free solver which might run faster?</div><div style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></div><div style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Arial,Helvetica,sans-serif;font-size:13px">Here are some  more details about the model: I use MIPs,</div><div style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Arial,Helvetica,sans-serif;font-size:13px"><ul><li style="line-height:17px">the variables are essentially binary variables, one for each tuple (worker, time, task)<br></li><li style="line-height:17px">the constraints consist of</li><ul><li style="line-height:17px"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;line-height:normal">the intuitive roster constraints such as &quot;there is at most one task for each worker at each time&quot;, &quot;each task must be executed by exactly one worker&quot;, etc.</span><br></li><li style="line-height:17px"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;line-height:normal">additional constraints such as &quot;for every worker, Task X must take at most 30% of his time&quot; (where Task X is some unpleasant task)</span></li><li style="line-height:17px"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;line-height:normal">additional constraints such as &quot;after doing Task X, every worker has to take a break&quot;, &quot;Task Y is forbidden after Task X&quot;</span></li></ul><li style="line-height:17px"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;line-height:normal">the objective function - which is to be minimized - can be</span></li><ul><li style="line-height:17px"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;line-height:normal">the number of additional workers needed to make the schedule feasible, or (once there is a feasible schedule)</span></li><li style="line-height:17px">the maximum percentage of Task X any worker has to do.</li></ul></ul><div style="margin:0px;padding:0px;border:0px;vertical-align:baseline">Thank you in advance!</div></div></div>