mdl.add(end_before_start(facade, moving)) mdl.add(end_before_start(garden, moving)) mdl.add(end_before_start(painting, moving)) ############################################################################## # Solving ############################################################################## # Trace model if False: from CpoCompiler import * cplr = CpoCompiler(mdl) cplr.set_source_location(False) cplr.print_model() # Solve model print("Solving model....") msol = mdl.solve() print("Solution: ") msol.print_solution() ############################################################################## # Display result ############################################################################## # Draw solution if msol and visu.is_visu_enabled(): visu.show(msol)
for j in range(nbMchs)]))) ############################################################################## # Model solving ############################################################################## # Solve model print("Solving model....") msol = mdl.solve(FailLimit=10000) print("Solution: ") msol.print_solution() ############################################################################## # Display result ############################################################################## # Draw solution if msol and visu.is_visu_enabled(): visu.timeline("Solution for open-shop " + filename) visu.panel("Jobs") for i in range(nbJobs): visu.sequence(name='J' + str(i), intervals=[(msol.get_var_solution(ITVS[i][j]), j, 'M' + str(j)) for j in range(nbMchs)]) visu.panel("Machines") for j in range(nbMchs): visu.sequence(name='M' + str(j), intervals=[(msol.get_var_solution(ITVS[i][j]), j, 'J' + str(i)) for i in range(nbJobs)]) visu.show()