|
13 | 13 | Please refer to documentation for appropriate setup of solving configuration. |
14 | 14 | """ |
15 | 15 |
|
16 | | -from docplex.cp.model import CpoModel |
17 | | -import docplex.cp.utils_visu as visu |
| 16 | +from docplex.cp.model import * |
18 | 17 |
|
19 | 18 |
|
20 | 19 | #----------------------------------------------------------------------------- |
|
24 | 23 | # Create model |
25 | 24 | mdl = CpoModel() |
26 | 25 |
|
27 | | -masonry = mdl.interval_var(name='masonry', size=35) |
28 | | -carpentry = mdl.interval_var(name='carpentry', size=15) |
29 | | -plumbing = mdl.interval_var(name='plumbing', size=40) |
30 | | -ceiling = mdl.interval_var(name='ceiling', size=15) |
31 | | -roofing = mdl.interval_var(name='roofing', size=5) |
32 | | -painting = mdl.interval_var(name='painting', size=10) |
33 | | -windows = mdl.interval_var(name='windows', size=5) |
34 | | -facade = mdl.interval_var(name='facade', size=10) |
35 | | -garden = mdl.interval_var(name='garden', size=5) |
36 | | -moving = mdl.interval_var(name='moving', size=5) |
| 26 | +masonry = interval_var(name='masonry', size=35) |
| 27 | +carpentry = interval_var(name='carpentry', size=15) |
| 28 | +plumbing = interval_var(name='plumbing', size=40) |
| 29 | +ceiling = interval_var(name='ceiling', size=15) |
| 30 | +roofing = interval_var(name='roofing', size=5) |
| 31 | +painting = interval_var(name='painting', size=10) |
| 32 | +windows = interval_var(name='windows', size=5) |
| 33 | +facade = interval_var(name='facade', size=10) |
| 34 | +garden = interval_var(name='garden', size=5) |
| 35 | +moving = interval_var(name='moving', size=5) |
37 | 36 |
|
38 | 37 | # Add precedence constraints |
39 | | -mdl.add(mdl.end_before_start(masonry, carpentry)) |
40 | | -mdl.add(mdl.end_before_start(masonry, plumbing)) |
41 | | -mdl.add(mdl.end_before_start(masonry, ceiling)) |
42 | | -mdl.add(mdl.end_before_start(carpentry, roofing)) |
43 | | -mdl.add(mdl.end_before_start(ceiling, painting)) |
44 | | -mdl.add(mdl.end_before_start(roofing, windows)) |
45 | | -mdl.add(mdl.end_before_start(roofing, facade)) |
46 | | -mdl.add(mdl.end_before_start(plumbing, facade)) |
47 | | -mdl.add(mdl.end_before_start(roofing, garden)) |
48 | | -mdl.add(mdl.end_before_start(plumbing, garden)) |
49 | | -mdl.add(mdl.end_before_start(windows, moving)) |
50 | | -mdl.add(mdl.end_before_start(facade, moving)) |
51 | | -mdl.add(mdl.end_before_start(garden, moving)) |
52 | | -mdl.add(mdl.end_before_start(painting, moving)) |
| 38 | +mdl.add(end_before_start(masonry, carpentry)) |
| 39 | +mdl.add(end_before_start(masonry, plumbing)) |
| 40 | +mdl.add(end_before_start(masonry, ceiling)) |
| 41 | +mdl.add(end_before_start(carpentry, roofing)) |
| 42 | +mdl.add(end_before_start(ceiling, painting)) |
| 43 | +mdl.add(end_before_start(roofing, windows)) |
| 44 | +mdl.add(end_before_start(roofing, facade)) |
| 45 | +mdl.add(end_before_start(plumbing, facade)) |
| 46 | +mdl.add(end_before_start(roofing, garden)) |
| 47 | +mdl.add(end_before_start(plumbing, garden)) |
| 48 | +mdl.add(end_before_start(windows, moving)) |
| 49 | +mdl.add(end_before_start(facade, moving)) |
| 50 | +mdl.add(end_before_start(garden, moving)) |
| 51 | +mdl.add(end_before_start(painting, moving)) |
53 | 52 |
|
54 | 53 |
|
55 | 54 | #----------------------------------------------------------------------------- |
56 | 55 | # Solve the model and display the result |
57 | 56 | #----------------------------------------------------------------------------- |
58 | 57 |
|
59 | 58 | # Solve model |
60 | | -print("Solving model....") |
61 | | -msol = mdl.solve(TimeLimit=10) |
62 | | -print("Solution: ") |
63 | | -msol.print_solution() |
| 59 | +print('Solving model...') |
| 60 | +res = mdl.solve(TimeLimit=10) |
| 61 | +print('Solution:') |
| 62 | +res.print_solution() |
64 | 63 |
|
65 | 64 | # Draw solution |
66 | | -if msol and visu.is_visu_enabled(): |
67 | | - visu.show(msol) |
| 65 | +import docplex.cp.utils_visu as visu |
| 66 | +if res and visu.is_visu_enabled(): |
| 67 | + visu.show(res) |
0 commit comments