this repo has no description
1/***
2!Test
3expected:
4- !Result
5 solution: !Solution
6 obj: 224
7 objective: 224
8 x:
9 - [0, 0, 0, 1, 0, 0]
10 - [1, 0, 1, 0, 1, 1]
11 - [0, 1, 0, 0, 1, 0]
12 - [1, 0, 0, 0, 0, 1]
13- !Result
14 solution: !Solution
15 obj: 224
16 objective: 224
17 x:
18 - [0, 0, 0, 1, 0, 0]
19 - [0, 1, 1, 0, 1, 1]
20 - [1, 0, 0, 0, 1, 0]
21 - [1, 0, 0, 0, 0, 1]
22- !Result
23 solution: !Solution
24 obj: 224
25 objective: 224
26 x:
27 - [0, 0, 0, 1, 0, 0]
28 - [1, 1, 0, 0, 1, 1]
29 - [0, 0, 1, 0, 0, 1]
30 - [1, 0, 0, 0, 1, 0]
31- !Result
32 solution: !Solution
33 obj: 224
34 objective: 224
35 x:
36 - [0, 0, 0, 1, 0, 0]
37 - [1, 0, 1, 0, 1, 1]
38 - [1, 0, 0, 0, 1, 0]
39 - [0, 1, 0, 0, 0, 1]
40***/
41
42%------------------------------------------------------------------------------%
43% trucking.mzn
44% Jakob Puchinger
45% December 2007
46% vim: ft=zinc ts=4 sw=4 et tw=0
47% Original model comes from Peters Student Tim
48% There are N Trucks which have to can be used in every time period,
49% Each truck can transport a given Load of material.
50% Each truck has an associated cost.
51% In each time period a demand has to be fulfilled.
52% Truck1 and Truck2 have some further constraints, disallowing
53% them to be used more than once in consecutive or two consecutive time periods.
54% The goal is to minimise the cost
55%------------------------------------------------------------------------------%
56
57 % Time Periods
58int: T;
59 % Trucks
60int: N;
61
621..N: Truck1;
631..N: Truck2;
64
65array[1..T] of int: Demand;
66array[1..N] of int: Cost;
67array[1..N] of int: Loads;
68
69array[1..N, 1..T] of var 0..1: x;
70
71constraint
72 forall(t in 1..T)(
73 sum(i in 1..N)( Loads[i] * x[i,t]) >= Demand[t]
74 );
75
76constraint
77 forall(tau in 1..T-2)(
78 sum(t in tau..tau+2)( x[Truck1, t] ) <= 1
79 );
80
81constraint
82 forall(tau in 1..T-1)(
83 sum(t in tau..tau+1)( x[Truck2, t] ) <= 1
84 );
85
86solve minimize
87 sum(i in 1..N)(sum(t in 1..T )( Cost[i] * x[i,t] ));
88
89 % required for showing the objective function
90var int: obj;
91constraint
92 obj = sum(i in 1..N)(sum(t in 1..T )( Cost[i] * x[i,t] ));
93
94output
95[ "Cost = ", show( obj ), "\n" ] ++
96[ "X = \n\t" ] ++
97[ show(x[i, t]) ++ if t = T then "\n\t" else " " endif |
98 i in 1..N, t in 1..T ] ++
99[ "\n" ];
100
101%------------------------------------------------------------------------------%
102% Data
103
104T = 6;
105N = 4;
106Cost = [30, 27, 23, 20];
107Loads = [20, 18, 15, 13];
108Demand = [27, 11, 14, 19, 25, 22];
109Truck1 = 3;
110Truck2 = 4;