Hello, thank you very much. I try it. :-)
Best regards Vladimir Dusa "Christian Schulte" <[EMAIL PROTECTED]> schrieb im Newsbeitrag news:[EMAIL PROTECTED] > 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
