Hello,

I have one more question. If I make a tuple sol(1:A 2:B ... 10:J 11:K 12:L),
is it sorted lexicographic (now I mean 1, 10, 11, 12, 2, 4, ..., 9) or like
normal numbers (1, 2, ..., 12)?

Thank you

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

Reply via email to