You are not only changing variables names, but you also change the arity of the record Sol: the fields of the record are taken as defined by the order on the features (lexicographic). If you have a fixed order in mind independent of the names, please use a list or tuple.
Christian -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Vladimír Duša Sent: Wednesday, August 24, 2005 12:09 PM To: [EMAIL PROTECTED] Subject: FD Distribution with changed names in tuple 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.l 7+10*Old.m7+10*Old.p7+15*Old.d4+15*Old.f4+15*Old.q4+15*Old.r4+15*Old.t4+15*O ld.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.x 3>: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*Ne w.l7+10*New.m7+10*New.p7+15*New.d4+15*New.f4+15*New.q4+15*New.r4+15*New.t4+1 5*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*Ne w.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.l 7+10*Sol.m7+10*Sol.p7+15*Sol.d4+15*Sol.f4+15*Sol.q4+15*Sol.r4+15*Sol.t4+15*S ol.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.x 3 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*Ol d.ak1+10*Old.al1+10*Old.am1+10*Old.e2+10*Old.g2+10*Old.h2+10*Old.j2+10*Old.l 2+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*Ne w.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+1 0*New.al2+10*New.an2+10*New.l7+10*New.m7+10*New.p7+15*New.d4+15*New.f4+15*Ne w.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.m 3+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*So l.ak1+10*Sol.al1+10*Sol.am1+10*Sol.e2+10*Sol.g2+10*Sol.h2+10*Sol.j2+10*Sol.l 2+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
