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
 
  {FD.distribute naive Root}
 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
 
 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
 
 {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
 
 
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
(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
 
  {FD.distribute naive Root}
 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
 
 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
 
 {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
_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to