Hello,
I have a problem with a FD script. When I only
change names in Root-Tuple, I become another search time and another search
tree. Please see two examples at the end of this Message. First example is
finished in few seconds and invoke cca 500 thousend propagators. Second
example is same as the first one, only some variables have other name. This
second example runs about 5 minutes and invoke cca 15 million
propagators.
I mean this two scripts should be same. Variable
name should not have influence on the search tree.
Could you help me please? Why have this
two scripts different run time?
Thank you very much
Vladimir Dusa
Example one:
Variables Created: 71
Propagators Created: 156
Propagators Invoked: 479159
%% BEGINNING OF SCRIPT
local FirstSolution SolutionList Scheduling ScheduleOrder TotalCosts in
proc {Scheduling Root}
L6 M6 L8 M8 E1 G1 H1 I1 K1 L1 M1 N1 O1 P1 U1 W1 X1 Y1 E2 G2 H2 J2 L2 M2 N2 O2 U2 W2 X2 Z2 L7 M7 P7 D4 F4 Q4 R4 T4 V4 E5 G5 H5 L5 M5 N5 O5 P5 U5 W5 X5 D3 E3 F3 G3 H3 K3 L3 M3 N3 O3 P3 Q3 R3 S3 T3 U3 V3 W3 X3
in
Root=sol(l6:L6 m6:M6 l8:L8 m8:M8 e1:E1 g1:G1 h1:H1 i1:I1 k1:K1 l1:L1 m1:M1 n1:N1 o1:O1 p1:P1 u1:U1 w1:W1 x1:X1 y1:Y1 e2:E2 g2:G2 h2:H2 j2:J2 l2:L2 m2:M2 n2:N2 o2:O2 u2:U2 w2:W2 x2:X2 z2:Z2 l7:L7 m7:M7 p7:P7 d4:D4 f4:F4 q4:Q4 r4:R4 t4:T4 v4:V4 e5:E5 g5:G5 h5:H5 l5:L5 m5:M5 n5:N5 o5:O5 p5:P5 u5:U5 w5:W5 x5:X5 d3:D3 e3:E3 f3:F3 g3:G3 h3:H3 k3:K3 l3:L3 m3:M3 n3:N3 o3:O3 p3:P3 q3:Q3 r3:R3 s3:S3 t3:T3 u3:U3 v3:V3 w3:W3 x3:X3)
Root ::: 0#1
D4 + D3=:1
E1 + E2 + E5 + E3=:1
F4 + F3=:1
G1 + G2 + G5 + G3=:1
H1 + H2 + H5 + H3=:1
I1=:1
J2=:1
K1 + K3=:1
L6 + L8 + L1 + L2 + L7 + L5 + L3=:1
M6 + M8 + M1 + M2 + M7 + M5 + M3=:1
N1 + N2 + N5 + N3=:1
O1 + O2 + O5 + O3=:1
P1 + P7 + P5 + P3=:1
Q4 + Q3=:1
R4 + R3=:1
S3=:1
T4 + T3=:1
U1 + U2 + U5 + U3=:1
V4 + V3=:1
W1 + W2 + W5 + W3=:1
X1 + X2 + X5 + X3=:1
Y1=:1
Z2=:1
60*L6 + 70*M6=<:67
60*L8 + 70*M8=<:70
40*E1=<:70
30*G1 + 30*H1=<:70
70*I1=<:70
60*L1 + 40*K1 + 70*M1 + 70*N1 + 70*O1 + 40*P1=<:70
40*U1=<:70
30*W1 + 30*X1=<:70
70*Y1=<:70
40*E2=<:90
30*G2 + 30*H2=<:90
50*J2=<:90
60*L2 + 70*M2=<:90
70*M2 + 70*N2 + 70*O2=<:90
40*U2=<:90
30*W2 + 30*X2=<:90
50*Z2=<:90
60*L7 + 70*M7=<:60
70*M7 + 40*P7=<:60
40*D4 + 20*F4=<:65
20*Q4 + 50*R4=<:65
40*T4 + 20*V4=<:65
40*E5=<:55
30*G5 + 30*H5=<:55
60*L5 + 70*M5=<:55
70*M5 + 70*N5 + 70*O5 + 40*P5=<:55
40*U5=<:55
30*W5 + 30*X5=<:55
40*D3 + 40*E3 + 20*F3=<:70
30*G3 + 30*H3=<:70
20*Q3 + 60*L3 + 40*K3 + 70*M3 + 70*N3 + 70*O3 + 40*P3=<:70
20*Q3 + 50*R3=<:70
70*S3=<:70
40*T3 + 40*U3 + 20*V3=<:70
30*W3 + 30*X3=<:70
local FirstSolution SolutionList Scheduling ScheduleOrder TotalCosts in
proc {Scheduling Root}
L6 M6 L8 M8 E1 G1 H1 I1 K1 L1 M1 N1 O1 P1 U1 W1 X1 Y1 E2 G2 H2 J2 L2 M2 N2 O2 U2 W2 X2 Z2 L7 M7 P7 D4 F4 Q4 R4 T4 V4 E5 G5 H5 L5 M5 N5 O5 P5 U5 W5 X5 D3 E3 F3 G3 H3 K3 L3 M3 N3 O3 P3 Q3 R3 S3 T3 U3 V3 W3 X3
in
Root=sol(l6:L6 m6:M6 l8:L8 m8:M8 e1:E1 g1:G1 h1:H1 i1:I1 k1:K1 l1:L1 m1:M1 n1:N1 o1:O1 p1:P1 u1:U1 w1:W1 x1:X1 y1:Y1 e2:E2 g2:G2 h2:H2 j2:J2 l2:L2 m2:M2 n2:N2 o2:O2 u2:U2 w2:W2 x2:X2 z2:Z2 l7:L7 m7:M7 p7:P7 d4:D4 f4:F4 q4:Q4 r4:R4 t4:T4 v4:V4 e5:E5 g5:G5 h5:H5 l5:L5 m5:M5 n5:N5 o5:O5 p5:P5 u5:U5 w5:W5 x5:X5 d3:D3 e3:E3 f3:F3 g3:G3 h3:H3 k3:K3 l3:L3 m3:M3 n3:N3 o3:O3 p3:P3 q3:Q3 r3:R3 s3:S3 t3:T3 u3:U3 v3:V3 w3:W3 x3:X3)
Root ::: 0#1
D4 + D3=:1
E1 + E2 + E5 + E3=:1
F4 + F3=:1
G1 + G2 + G5 + G3=:1
H1 + H2 + H5 + H3=:1
I1=:1
J2=:1
K1 + K3=:1
L6 + L8 + L1 + L2 + L7 + L5 + L3=:1
M6 + M8 + M1 + M2 + M7 + M5 + M3=:1
N1 + N2 + N5 + N3=:1
O1 + O2 + O5 + O3=:1
P1 + P7 + P5 + P3=:1
Q4 + Q3=:1
R4 + R3=:1
S3=:1
T4 + T3=:1
U1 + U2 + U5 + U3=:1
V4 + V3=:1
W1 + W2 + W5 + W3=:1
X1 + X2 + X5 + X3=:1
Y1=:1
Z2=:1
60*L6 + 70*M6=<:67
60*L8 + 70*M8=<:70
40*E1=<:70
30*G1 + 30*H1=<:70
70*I1=<:70
60*L1 + 40*K1 + 70*M1 + 70*N1 + 70*O1 + 40*P1=<:70
40*U1=<:70
30*W1 + 30*X1=<:70
70*Y1=<:70
40*E2=<:90
30*G2 + 30*H2=<:90
50*J2=<:90
60*L2 + 70*M2=<:90
70*M2 + 70*N2 + 70*O2=<:90
40*U2=<:90
30*W2 + 30*X2=<:90
50*Z2=<:90
60*L7 + 70*M7=<:60
70*M7 + 40*P7=<:60
40*D4 + 20*F4=<:65
20*Q4 + 50*R4=<:65
40*T4 + 20*V4=<:65
40*E5=<:55
30*G5 + 30*H5=<:55
60*L5 + 70*M5=<:55
70*M5 + 70*N5 + 70*O5 + 40*P5=<:55
40*U5=<:55
30*W5 + 30*X5=<:55
40*D3 + 40*E3 + 20*F3=<:70
30*G3 + 30*H3=<:70
20*Q3 + 60*L3 + 40*K3 + 70*M3 + 70*N3 + 70*O3 + 40*P3=<:70
20*Q3 + 50*R3=<:70
70*S3=<:70
40*T3 + 40*U3 + 20*V3=<:70
30*W3 + 30*X3=<:70
{FD.distribute naive
Root}
end
end
proc {ScheduleOrder Old
New}
5*Old.l6+5*Old.m6+5*Old.l8+5*Old.m8+10*Old.e1+10*Old.g1+10*Old.h1+10*Old.i1+10*Old.k1+10*Old.l1+10*Old.m1+10*Old.n1+10*Old.o1+10*Old.p1+10*Old.u1+10*Old.w1+10*Old.x1+10*Old.y1+10*Old.e2+10*Old.g2+10*Old.h2+10*Old.j2+10*Old.l2+10*Old.m2+10*Old.n2+10*Old.o2+10*Old.u2+10*Old.w2+10*Old.x2+10*Old.z2+10*Old.l7+10*Old.m7+10*Old.p7+15*Old.d4+15*Old.f4+15*Old.q4+15*Old.r4+15*Old.t4+15*Old.v4+15*Old.e5+15*Old.g5+15*Old.h5+15*Old.l5+15*Old.m5+15*Old.n5+15*Old.o5+15*Old.p5+15*Old.u5+15*Old.w5+15*Old.x5+20*Old.d3+20*Old.e3+20*Old.f3+20*Old.g3+20*Old.h3+20*Old.k3+20*Old.l3+20*Old.m3+20*Old.n3+20*Old.o3+20*Old.p3+20*Old.q3+20*Old.r3+20*Old.s3+20*Old.t3+20*Old.u3+20*Old.v3+20*Old.w3+20*Old.x3>:5*New.l6+5*New.m6+5*New.l8+5*New.m8+10*New.e1+10*New.g1+10*New.h1+10*New.i1+10*New.k1+10*New.l1+10*New.m1+10*New.n1+10*New.o1+10*New.p1+10*New.u1+10*New.w1+10*New.x1+10*New.y1+10*New.e2+10*New.g2+10*New.h2+10*New.j2+10*New.l2+10*New.m2+10*New.n2+10*New.o2+10*New.u2+10*New.w2+10*New.x2+10*New.z2+10*New.l7+10*New.m7+10*New.p7+15*New.d4+15*New.f4+15*New.q4+15*New.r4+15*New.t4+15*New.v4+15*New.e5+15*New.g5+15*New.h5+15*New.l5+15*New.m5+15*New.n5+15*New.o5+15*New.p5+15*New.u5+15*New.w5+15*New.x5+20*New.d3+20*New.e3+20*New.f3+20*New.g3+20*New.h3+20*New.k3+20*New.l3+20*New.m3+20*New.n3+20*New.o3+20*New.p3+20*New.q3+20*New.r3+20*New.s3+20*New.t3+20*New.u3+20*New.v3+20*New.w3+20*New.x3
end
5*Old.l6+5*Old.m6+5*Old.l8+5*Old.m8+10*Old.e1+10*Old.g1+10*Old.h1+10*Old.i1+10*Old.k1+10*Old.l1+10*Old.m1+10*Old.n1+10*Old.o1+10*Old.p1+10*Old.u1+10*Old.w1+10*Old.x1+10*Old.y1+10*Old.e2+10*Old.g2+10*Old.h2+10*Old.j2+10*Old.l2+10*Old.m2+10*Old.n2+10*Old.o2+10*Old.u2+10*Old.w2+10*Old.x2+10*Old.z2+10*Old.l7+10*Old.m7+10*Old.p7+15*Old.d4+15*Old.f4+15*Old.q4+15*Old.r4+15*Old.t4+15*Old.v4+15*Old.e5+15*Old.g5+15*Old.h5+15*Old.l5+15*Old.m5+15*Old.n5+15*Old.o5+15*Old.p5+15*Old.u5+15*Old.w5+15*Old.x5+20*Old.d3+20*Old.e3+20*Old.f3+20*Old.g3+20*Old.h3+20*Old.k3+20*Old.l3+20*Old.m3+20*Old.n3+20*Old.o3+20*Old.p3+20*Old.q3+20*Old.r3+20*Old.s3+20*Old.t3+20*Old.u3+20*Old.v3+20*Old.w3+20*Old.x3>:5*New.l6+5*New.m6+5*New.l8+5*New.m8+10*New.e1+10*New.g1+10*New.h1+10*New.i1+10*New.k1+10*New.l1+10*New.m1+10*New.n1+10*New.o1+10*New.p1+10*New.u1+10*New.w1+10*New.x1+10*New.y1+10*New.e2+10*New.g2+10*New.h2+10*New.j2+10*New.l2+10*New.m2+10*New.n2+10*New.o2+10*New.u2+10*New.w2+10*New.x2+10*New.z2+10*New.l7+10*New.m7+10*New.p7+15*New.d4+15*New.f4+15*New.q4+15*New.r4+15*New.t4+15*New.v4+15*New.e5+15*New.g5+15*New.h5+15*New.l5+15*New.m5+15*New.n5+15*New.o5+15*New.p5+15*New.u5+15*New.w5+15*New.x5+20*New.d3+20*New.e3+20*New.f3+20*New.g3+20*New.h3+20*New.k3+20*New.l3+20*New.m3+20*New.n3+20*New.o3+20*New.p3+20*New.q3+20*New.r3+20*New.s3+20*New.t3+20*New.u3+20*New.v3+20*New.w3+20*New.x3
end
fun {TotalCosts
Sol}
5*Sol.l6+5*Sol.m6+5*Sol.l8+5*Sol.m8+10*Sol.e1+10*Sol.g1+10*Sol.h1+10*Sol.i1+10*Sol.k1+10*Sol.l1+10*Sol.m1+10*Sol.n1+10*Sol.o1+10*Sol.p1+10*Sol.u1+10*Sol.w1+10*Sol.x1+10*Sol.y1+10*Sol.e2+10*Sol.g2+10*Sol.h2+10*Sol.j2+10*Sol.l2+10*Sol.m2+10*Sol.n2+10*Sol.o2+10*Sol.u2+10*Sol.w2+10*Sol.x2+10*Sol.z2+10*Sol.l7+10*Sol.m7+10*Sol.p7+15*Sol.d4+15*Sol.f4+15*Sol.q4+15*Sol.r4+15*Sol.t4+15*Sol.v4+15*Sol.e5+15*Sol.g5+15*Sol.h5+15*Sol.l5+15*Sol.m5+15*Sol.n5+15*Sol.o5+15*Sol.p5+15*Sol.u5+15*Sol.w5+15*Sol.x5+20*Sol.d3+20*Sol.e3+20*Sol.f3+20*Sol.g3+20*Sol.h3+20*Sol.k3+20*Sol.l3+20*Sol.m3+20*Sol.n3+20*Sol.o3+20*Sol.p3+20*Sol.q3+20*Sol.r3+20*Sol.s3+20*Sol.t3+20*Sol.u3+20*Sol.v3+20*Sol.w3+20*Sol.x3
end
5*Sol.l6+5*Sol.m6+5*Sol.l8+5*Sol.m8+10*Sol.e1+10*Sol.g1+10*Sol.h1+10*Sol.i1+10*Sol.k1+10*Sol.l1+10*Sol.m1+10*Sol.n1+10*Sol.o1+10*Sol.p1+10*Sol.u1+10*Sol.w1+10*Sol.x1+10*Sol.y1+10*Sol.e2+10*Sol.g2+10*Sol.h2+10*Sol.j2+10*Sol.l2+10*Sol.m2+10*Sol.n2+10*Sol.o2+10*Sol.u2+10*Sol.w2+10*Sol.x2+10*Sol.z2+10*Sol.l7+10*Sol.m7+10*Sol.p7+15*Sol.d4+15*Sol.f4+15*Sol.q4+15*Sol.r4+15*Sol.t4+15*Sol.v4+15*Sol.e5+15*Sol.g5+15*Sol.h5+15*Sol.l5+15*Sol.m5+15*Sol.n5+15*Sol.o5+15*Sol.p5+15*Sol.u5+15*Sol.w5+15*Sol.x5+20*Sol.d3+20*Sol.e3+20*Sol.f3+20*Sol.g3+20*Sol.h3+20*Sol.k3+20*Sol.l3+20*Sol.m3+20*Sol.n3+20*Sol.o3+20*Sol.p3+20*Sol.q3+20*Sol.r3+20*Sol.s3+20*Sol.t3+20*Sol.u3+20*Sol.v3+20*Sol.w3+20*Sol.x3
end
{Panel.object
open}
% {ExploreBest Scheduling ScheduleOrder}
SolutionList={SearchBest Scheduling ScheduleOrder}
if SolutionList==nil then
{Browse 'No feasible solution found'}
else
FirstSolution = {Nth SolutionList 1}
{Browse {TotalCosts FirstSolution}}
end
end
%%END OF SCRIPT
% {ExploreBest Scheduling ScheduleOrder}
SolutionList={SearchBest Scheduling ScheduleOrder}
if SolutionList==nil then
{Browse 'No feasible solution found'}
else
FirstSolution = {Nth SolutionList 1}
{Browse {TotalCosts FirstSolution}}
end
end
%%END OF SCRIPT
And in following example were only
some variables renamed. Order of variables is and whole script is
same as the first example.
Variables Created: 71
Propagators Created: 156
Propagators Invoked: 14865247
renamed variables (in the script marked
red):
T -> AH
U -> AI
V -> AJ
W -> AK
X -> AL
Y -> AM
Z -> AN
U -> AI
V -> AJ
W -> AK
X -> AL
Y -> AM
Z -> AN
(it means for example: everywhere, where was U, is
now AI (U1 is now AI1, U2 is now AI2, ...)
%% BEGINNING OF SCRIPT
local FirstSolution SolutionList Scheduling ScheduleOrder TotalCosts in
proc {Scheduling Root}
L6 M6 L8 M8 E1 G1 H1 I1 K1 L1 M1 N1 O1 P1 AI1 AK1 AL1 AM1 E2 G2 H2 J2 L2 M2 N2 O2 AI2 AK2 AL2 AN2 L7 M7 P7 D4 F4 Q4 R4 AH4 AJ4 E5 G5 H5 L5 M5 N5 O5 P5 AI5 AK5 AL5 D3 E3 F3 G3 H3 K3 L3 M3 N3 O3 P3 Q3 R3 S3 AH3 AI3 AJ3 AK3 AL3
in
Root=sol(l6:L6 m6:M6 l8:L8 m8:M8 e1:E1 g1:G1 h1:H1 i1:I1 k1:K1 l1:L1 m1:M1 n1:N1 o1:O1 p1:P1 ai1:AI1 ak1:AK1 al1:AL1 am1:AM1 e2:E2 g2:G2 h2:H2 j2:J2 l2:L2 m2:M2 n2:N2 o2:O2 ai2:AI2 ak2:AK2 al2:AL2 an2:AN2 l7:L7 m7:M7 p7:P7 d4:D4 f4:F4 q4:Q4 r4:R4 ah4:AH4 aj4:AJ4 e5:E5 g5:G5 h5:H5 l5:L5 m5:M5 n5:N5 o5:O5 p5:P5 ai5:AI5 ak5:AK5 al5:AL5 d3:D3 e3:E3 f3:F3 g3:G3 h3:H3 k3:K3 l3:L3 m3:M3 n3:N3 o3:O3 p3:P3 q3:Q3 r3:R3 s3:S3 ah3:AH3 ai3:AI3 aj3:AJ3 ak3:AK3 al3:AL3)
Root ::: 0#1
D4 + D3=:1
E1 + E2 + E5 + E3=:1
F4 + F3=:1
G1 + G2 + G5 + G3=:1
H1 + H2 + H5 + H3=:1
I1=:1
J2=:1
K1 + K3=:1
L6 + L8 + L1 + L2 + L7 + L5 + L3=:1
M6 + M8 + M1 + M2 + M7 + M5 + M3=:1
N1 + N2 + N5 + N3=:1
O1 + O2 + O5 + O3=:1
P1 + P7 + P5 + P3=:1
Q4 + Q3=:1
R4 + R3=:1
S3=:1
AH4 + AH3=:1
AI1 + AI2 + AI5 + AI3=:1
AJ4 + AJ3=:1
AK1 + AK2 + AK5 + AK3=:1
AL1 + AL2 + AL5 + AL3=:1
AM1=:1
AN2=:1
60*L6 + 70*M6=<:67
60*L8 + 70*M8=<:70
40*E1=<:70
30*G1 + 30*H1=<:70
70*I1=<:70
60*L1 + 40*K1 + 70*M1 + 70*N1 + 70*O1 + 40*P1=<:70
40*AI1=<:70
30*AK1 + 30*AL1=<:70
70*AM1=<:70
40*E2=<:90
30*G2 + 30*H2=<:90
50*J2=<:90
60*L2 + 70*M2=<:90
70*M2 + 70*N2 + 70*O2=<:90
40*AI2=<:90
30*AK2 + 30*AL2=<:90
50*AN2=<:90
60*L7 + 70*M7=<:60
70*M7 + 40*P7=<:60
40*D4 + 20*F4=<:65
20*Q4 + 50*R4=<:65
40*AH4 + 20*AJ4=<:65
40*E5=<:55
30*G5 + 30*H5=<:55
60*L5 + 70*M5=<:55
70*M5 + 70*N5 + 70*O5 + 40*P5=<:55
40*AI5=<:55
30*AK5 + 30*AL5=<:55
40*D3 + 40*E3 + 20*F3=<:70
30*G3 + 30*H3=<:70
20*Q3 + 60*L3 + 40*K3 + 70*M3 + 70*N3 + 70*O3 + 40*P3=<:70
20*Q3 + 50*R3=<:70
70*S3=<:70
40*AH3 + 40*AI3 + 20*AJ3=<:70
30*AK3 + 30*AL3=<:70
local FirstSolution SolutionList Scheduling ScheduleOrder TotalCosts in
proc {Scheduling Root}
L6 M6 L8 M8 E1 G1 H1 I1 K1 L1 M1 N1 O1 P1 AI1 AK1 AL1 AM1 E2 G2 H2 J2 L2 M2 N2 O2 AI2 AK2 AL2 AN2 L7 M7 P7 D4 F4 Q4 R4 AH4 AJ4 E5 G5 H5 L5 M5 N5 O5 P5 AI5 AK5 AL5 D3 E3 F3 G3 H3 K3 L3 M3 N3 O3 P3 Q3 R3 S3 AH3 AI3 AJ3 AK3 AL3
in
Root=sol(l6:L6 m6:M6 l8:L8 m8:M8 e1:E1 g1:G1 h1:H1 i1:I1 k1:K1 l1:L1 m1:M1 n1:N1 o1:O1 p1:P1 ai1:AI1 ak1:AK1 al1:AL1 am1:AM1 e2:E2 g2:G2 h2:H2 j2:J2 l2:L2 m2:M2 n2:N2 o2:O2 ai2:AI2 ak2:AK2 al2:AL2 an2:AN2 l7:L7 m7:M7 p7:P7 d4:D4 f4:F4 q4:Q4 r4:R4 ah4:AH4 aj4:AJ4 e5:E5 g5:G5 h5:H5 l5:L5 m5:M5 n5:N5 o5:O5 p5:P5 ai5:AI5 ak5:AK5 al5:AL5 d3:D3 e3:E3 f3:F3 g3:G3 h3:H3 k3:K3 l3:L3 m3:M3 n3:N3 o3:O3 p3:P3 q3:Q3 r3:R3 s3:S3 ah3:AH3 ai3:AI3 aj3:AJ3 ak3:AK3 al3:AL3)
Root ::: 0#1
D4 + D3=:1
E1 + E2 + E5 + E3=:1
F4 + F3=:1
G1 + G2 + G5 + G3=:1
H1 + H2 + H5 + H3=:1
I1=:1
J2=:1
K1 + K3=:1
L6 + L8 + L1 + L2 + L7 + L5 + L3=:1
M6 + M8 + M1 + M2 + M7 + M5 + M3=:1
N1 + N2 + N5 + N3=:1
O1 + O2 + O5 + O3=:1
P1 + P7 + P5 + P3=:1
Q4 + Q3=:1
R4 + R3=:1
S3=:1
AH4 + AH3=:1
AI1 + AI2 + AI5 + AI3=:1
AJ4 + AJ3=:1
AK1 + AK2 + AK5 + AK3=:1
AL1 + AL2 + AL5 + AL3=:1
AM1=:1
AN2=:1
60*L6 + 70*M6=<:67
60*L8 + 70*M8=<:70
40*E1=<:70
30*G1 + 30*H1=<:70
70*I1=<:70
60*L1 + 40*K1 + 70*M1 + 70*N1 + 70*O1 + 40*P1=<:70
40*AI1=<:70
30*AK1 + 30*AL1=<:70
70*AM1=<:70
40*E2=<:90
30*G2 + 30*H2=<:90
50*J2=<:90
60*L2 + 70*M2=<:90
70*M2 + 70*N2 + 70*O2=<:90
40*AI2=<:90
30*AK2 + 30*AL2=<:90
50*AN2=<:90
60*L7 + 70*M7=<:60
70*M7 + 40*P7=<:60
40*D4 + 20*F4=<:65
20*Q4 + 50*R4=<:65
40*AH4 + 20*AJ4=<:65
40*E5=<:55
30*G5 + 30*H5=<:55
60*L5 + 70*M5=<:55
70*M5 + 70*N5 + 70*O5 + 40*P5=<:55
40*AI5=<:55
30*AK5 + 30*AL5=<:55
40*D3 + 40*E3 + 20*F3=<:70
30*G3 + 30*H3=<:70
20*Q3 + 60*L3 + 40*K3 + 70*M3 + 70*N3 + 70*O3 + 40*P3=<:70
20*Q3 + 50*R3=<:70
70*S3=<:70
40*AH3 + 40*AI3 + 20*AJ3=<:70
30*AK3 + 30*AL3=<:70
{FD.distribute naive
Root}
end
end
proc {ScheduleOrder Old
New}
5*Old.l6+5*Old.m6+5*Old.l8+5*Old.m8+10*Old.e1+10*Old.g1+10*Old.h1+10*Old.i1+10*Old.k1+10*Old.l1+10*Old.m1+10*Old.n1+10*Old.o1+10*Old.p1+10*Old.ai1+10*Old.ak1+10*Old.al1+10*Old.am1+10*Old.e2+10*Old.g2+10*Old.h2+10*Old.j2+10*Old.l2+10*Old.m2+10*Old.n2+10*Old.o2+10*Old.ai2+10*Old.ak2+10*Old.al2+10*Old.an2+10*Old.l7+10*Old.m7+10*Old.p7+15*Old.d4+15*Old.f4+15*Old.q4+15*Old.r4+15*Old.ah4+15*Old.aj4+15*Old.e5+15*Old.g5+15*Old.h5+15*Old.l5+15*Old.m5+15*Old.n5+15*Old.o5+15*Old.p5+15*Old.ai5+15*Old.ak5+15*Old.al5+20*Old.d3+20*Old.e3+20*Old.f3+20*Old.g3+20*Old.h3+20*Old.k3+20*Old.l3+20*Old.m3+20*Old.n3+20*Old.o3+20*Old.p3+20*Old.q3+20*Old.r3+20*Old.s3+20*Old.ah3+20*Old.ai3+20*Old.aj3+20*Old.ak3+20*Old.al3>:5*New.l6+5*New.m6+5*New.l8+5*New.m8+10*New.e1+10*New.g1+10*New.h1+10*New.i1+10*New.k1+10*New.l1+10*New.m1+10*New.n1+10*New.o1+10*New.p1+10*New.ai1+10*New.ak1+10*New.al1+10*New.am1+10*New.e2+10*New.g2+10*New.h2+10*New.j2+10*New.l2+10*New.m2+10*New.n2+10*New.o2+10*New.ai2+10*New.ak2+10*New.al2+10*New.an2+10*New.l7+10*New.m7+10*New.p7+15*New.d4+15*New.f4+15*New.q4+15*New.r4+15*New.ah4+15*New.aj4+15*New.e5+15*New.g5+15*New.h5+15*New.l5+15*New.m5+15*New.n5+15*New.o5+15*New.p5+15*New.ai5+15*New.ak5+15*New.al5+20*New.d3+20*New.e3+20*New.f3+20*New.g3+20*New.h3+20*New.k3+20*New.l3+20*New.m3+20*New.n3+20*New.o3+20*New.p3+20*New.q3+20*New.r3+20*New.s3+20*New.ah3+20*New.ai3+20*New.aj3+20*New.ak3+20*New.al3
end
5*Old.l6+5*Old.m6+5*Old.l8+5*Old.m8+10*Old.e1+10*Old.g1+10*Old.h1+10*Old.i1+10*Old.k1+10*Old.l1+10*Old.m1+10*Old.n1+10*Old.o1+10*Old.p1+10*Old.ai1+10*Old.ak1+10*Old.al1+10*Old.am1+10*Old.e2+10*Old.g2+10*Old.h2+10*Old.j2+10*Old.l2+10*Old.m2+10*Old.n2+10*Old.o2+10*Old.ai2+10*Old.ak2+10*Old.al2+10*Old.an2+10*Old.l7+10*Old.m7+10*Old.p7+15*Old.d4+15*Old.f4+15*Old.q4+15*Old.r4+15*Old.ah4+15*Old.aj4+15*Old.e5+15*Old.g5+15*Old.h5+15*Old.l5+15*Old.m5+15*Old.n5+15*Old.o5+15*Old.p5+15*Old.ai5+15*Old.ak5+15*Old.al5+20*Old.d3+20*Old.e3+20*Old.f3+20*Old.g3+20*Old.h3+20*Old.k3+20*Old.l3+20*Old.m3+20*Old.n3+20*Old.o3+20*Old.p3+20*Old.q3+20*Old.r3+20*Old.s3+20*Old.ah3+20*Old.ai3+20*Old.aj3+20*Old.ak3+20*Old.al3>:5*New.l6+5*New.m6+5*New.l8+5*New.m8+10*New.e1+10*New.g1+10*New.h1+10*New.i1+10*New.k1+10*New.l1+10*New.m1+10*New.n1+10*New.o1+10*New.p1+10*New.ai1+10*New.ak1+10*New.al1+10*New.am1+10*New.e2+10*New.g2+10*New.h2+10*New.j2+10*New.l2+10*New.m2+10*New.n2+10*New.o2+10*New.ai2+10*New.ak2+10*New.al2+10*New.an2+10*New.l7+10*New.m7+10*New.p7+15*New.d4+15*New.f4+15*New.q4+15*New.r4+15*New.ah4+15*New.aj4+15*New.e5+15*New.g5+15*New.h5+15*New.l5+15*New.m5+15*New.n5+15*New.o5+15*New.p5+15*New.ai5+15*New.ak5+15*New.al5+20*New.d3+20*New.e3+20*New.f3+20*New.g3+20*New.h3+20*New.k3+20*New.l3+20*New.m3+20*New.n3+20*New.o3+20*New.p3+20*New.q3+20*New.r3+20*New.s3+20*New.ah3+20*New.ai3+20*New.aj3+20*New.ak3+20*New.al3
end
fun {TotalCosts
Sol}
5*Sol.l6+5*Sol.m6+5*Sol.l8+5*Sol.m8+10*Sol.e1+10*Sol.g1+10*Sol.h1+10*Sol.i1+10*Sol.k1+10*Sol.l1+10*Sol.m1+10*Sol.n1+10*Sol.o1+10*Sol.p1+10*Sol.ai1+10*Sol.ak1+10*Sol.al1+10*Sol.am1+10*Sol.e2+10*Sol.g2+10*Sol.h2+10*Sol.j2+10*Sol.l2+10*Sol.m2+10*Sol.n2+10*Sol.o2+10*Sol.ai2+10*Sol.ak2+10*Sol.al2+10*Sol.an2+10*Sol.l7+10*Sol.m7+10*Sol.p7+15*Sol.d4+15*Sol.f4+15*Sol.q4+15*Sol.r4+15*Sol.ah4+15*Sol.aj4+15*Sol.e5+15*Sol.g5+15*Sol.h5+15*Sol.l5+15*Sol.m5+15*Sol.n5+15*Sol.o5+15*Sol.p5+15*Sol.ai5+15*Sol.ak5+15*Sol.al5+20*Sol.d3+20*Sol.e3+20*Sol.f3+20*Sol.g3+20*Sol.h3+20*Sol.k3+20*Sol.l3+20*Sol.m3+20*Sol.n3+20*Sol.o3+20*Sol.p3+20*Sol.q3+20*Sol.r3+20*Sol.s3+20*Sol.ah3+20*Sol.ai3+20*Sol.aj3+20*Sol.ak3+20*Sol.al3
end
5*Sol.l6+5*Sol.m6+5*Sol.l8+5*Sol.m8+10*Sol.e1+10*Sol.g1+10*Sol.h1+10*Sol.i1+10*Sol.k1+10*Sol.l1+10*Sol.m1+10*Sol.n1+10*Sol.o1+10*Sol.p1+10*Sol.ai1+10*Sol.ak1+10*Sol.al1+10*Sol.am1+10*Sol.e2+10*Sol.g2+10*Sol.h2+10*Sol.j2+10*Sol.l2+10*Sol.m2+10*Sol.n2+10*Sol.o2+10*Sol.ai2+10*Sol.ak2+10*Sol.al2+10*Sol.an2+10*Sol.l7+10*Sol.m7+10*Sol.p7+15*Sol.d4+15*Sol.f4+15*Sol.q4+15*Sol.r4+15*Sol.ah4+15*Sol.aj4+15*Sol.e5+15*Sol.g5+15*Sol.h5+15*Sol.l5+15*Sol.m5+15*Sol.n5+15*Sol.o5+15*Sol.p5+15*Sol.ai5+15*Sol.ak5+15*Sol.al5+20*Sol.d3+20*Sol.e3+20*Sol.f3+20*Sol.g3+20*Sol.h3+20*Sol.k3+20*Sol.l3+20*Sol.m3+20*Sol.n3+20*Sol.o3+20*Sol.p3+20*Sol.q3+20*Sol.r3+20*Sol.s3+20*Sol.ah3+20*Sol.ai3+20*Sol.aj3+20*Sol.ak3+20*Sol.al3
end
{Panel.object
open}
% {ExploreBest Scheduling ScheduleOrder}
SolutionList={SearchBest Scheduling ScheduleOrder}
if SolutionList==nil then
{Browse 'No feasible solution found'}
else
FirstSolution = {Nth SolutionList 1}
{Browse {TotalCosts FirstSolution}}
end
end
%%END OF SCRIPT
% {ExploreBest Scheduling ScheduleOrder}
SolutionList={SearchBest Scheduling ScheduleOrder}
if SolutionList==nil then
{Browse 'No feasible solution found'}
else
FirstSolution = {Nth SolutionList 1}
{Browse {TotalCosts FirstSolution}}
end
end
%%END OF SCRIPT
_________________________________________________________________________________ mozart-users mailing list [email protected] http://www.mozart-oz.org/mailman/listinfo/mozart-users
