j'ai écrit ce programme en Maple, il donne le résultat ci dessous pour N=2 , mais pour les N>4 le programme ne répond pas à cause peut être des calcules est ce qu'il y a une méthode pour minimiser le temps d'exécution ou pour se débarrasser des termes "min"
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 > # W[.,.] est la fonction coût actualisé à l"horizon infini > restart; > with(LinearAlgebra): > N:=2;alpha:=0.8;lambda1:=8;lambda2:=5;mu1:=25;mu2:=30;xi1:=1;xi2:=2;c1:=3;c2:=5; > eqns:={W[0,0]=alpha*(mu1*W[0,0]+mu2*W[0,0]+lambda1*W[1,0]+lambda2*W[0,1])}: > for x1 from 1 to N-1 do eqns:=eqns union { > W[x1,0]=x1*c1+alpha*(mu1*W[x1-1,0]+lambda1*min(W[x1+1,0],W[x1,0]+xi1)+lambda2*W[x1,1]), W[x1,N]=x1*c1+N*c2+alpha*(mu1*W[x1-1,N]+lambda1*min(W[x1+1,N],W[x1,N]+xi1)+lambda2*(W[x1,N]+xi2))}; > od: > eqns:=eqns union {W[N,0]=N*c1+alpha*(mu1*W[N-1,0]+lambda1*(W[N,0]+xi1)+lambda2*W[N,1]), > W[0,N]=N*c2+alpha*(mu1*W[0,N]+mu2*W[0,N-1]+lambda1*W[1,N]+lambda2*(W[0,N]+xi2)), > W[N,N]=(c1+c2)*N+alpha*(mu1*W[N-1,N]+lambda1*(W[N,N]+xi1)+lambda2*(W[N,N]+xi2))}: > for x2 from 1 to N-1 do > eqns:=eqns union { > W[0,x2]=x2*c2+alpha*(mu1*W[0,x2]+mu2*W[0,x2-1]+lambda1*W[1,x2]+lambda2*min(W[0, x2+1],W[0,x2]+xi2)), > W[N,x2]=N*c1+x2*c2+alpha*(mu1*W[N-1,x2]+lambda1*(W[N,x2]+xi1)+lambda2*min(W[N, x2+1],W[N,x2]+xi2))}; > od: > for x1 from 1 to N-1 do > for x2 from 1 to N-1 do > eqns:=eqns union { W[x1,x2]=x1*c1+x2*c2+alpha*(mu1*W[x1-1,x2]+lambda1*min(W[x1+1,x2],W[x1,x2]+xi1)+lambda2*min(W[x1, x2+1],W[x1,x2]+xi2))}; > od; > od: > eqns:=eqns; > nops(eqns); > evalf(solve(eqns),3);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 N := 2 alpha := 0.8 lambda1 := 8 lambda2 := 5 mu1 := 25 mu2 := 30 xi1 := 1 xi2 := 2 c1 := 3 c2 := 5 eqns := { W[1, 2] = 21.0 + 20.0 W[0, 2] + 6.4 min(W[2, 2], W[1, 2] + 1) + 4.0 W[1, 2], W[0, 0] = 44.0 W[0, 0] + 6.4 W[1, 0] + 4.0 W[0, 1], W[1, 0] = 3 + 20.0 W[0, 0] + 6.4 min(W[2, 0], W[1, 0] + 1) + 4.0 W[1, 1], W[2, 0] = 12.4 + 20.0 W[1, 0] + 6.4 W[2, 0] + 4.0 W[2, 1], W[0, 2] = 18.0 + 24.0 W[0, 2] + 24.0 W[0, 1] + 6.4 W[1, 2], W[2, 2] = 30.4 + 20.0 W[1, 2] + 10.4 W[2, 2], W[2, 1] = 17.4 + 20.0 W[1, 1] + 6.4 W[2, 1] + 4.0 min(W[2, 2], W[2, 1] + 2), W[1, 1] = 8 + 20.0 W[0, 1] + 6.4 min(W[2, 1], W[1, 1] + 1)+ 4.0 min(W[1, 2], W[1, 1] + 2), W[0, 1] = 5 + 20.0 W[0, 1] + 24.0 W[0, 0] + 6.4 W[1, 1] + 4.0 min(W[0, 2], W[0, 1] + 2)} 9 {W[1, 0] = -0.398, W[1, 2] = -0.807, W[2, 1] = -0.472, W[0, 1] = -0.109, W[1, 1] = -0.439, W[0, 0] = 0.0694, W[2, 2] = -1.52, W[2, 0] = -0.473, W[0, 2] = -0.444}, {W[2, 1] = 0.228, W[2, 0] = -0.0228, W[1, 0] = -0.659, W[0, 2] = -0.233, W[1, 2] = -2.42, W[0, 0] = 0.0871, W[0, 1] = 0.119, W[2, 2] = 1.91, W[1, 1] = -1.31}, {W[1, 2] = -2.21, W[2, 1] = 1.63, W[0, 0] = 0.151, W[0, 1] = 0.156, W[2, 0] = 0.614, W[2, 2] = 1.48, W[1, 1] = -1.60, W[0, 2] = -0.329, W[1, 0] = -1.11}, {W[2, 2] = -2.11, W[2, 0] = 4.80, W[1, 2] = -0.526, W[0, 2] = -0.295, W[0, 0] = 0.384, W[1, 0] = -2.37, W[1, 1] = -1.06, W[0, 1] = -0.327, W[2, 1] = 2.29}
Partager