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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| epsilon=0.01;
nt=1;
NTmax=12;
eina = 0.100;
sigma= 0.2;
es= 0.200;
et= 0.300;
state=[0;1;2];
alpha=0.8;
beta=0.3;
Oalpha=alpha;%omega de alpha
Obeta=beta;
Talpha(NTmax,1)=alpha;
for i=NTmax-1:-1:1
Oalpha=alpha*Oalpha+(1-Oalpha)*beta;
Talpha(i,1)=Oalpha;
end
%belief starting from beta
Tbeta(1,1)=beta;
for i=2:NTmax
Obeta=alpha*Obeta+(1-Obeta)*beta;
Tbeta(i,1)=Obeta;
end
%corresponding value of the belief and their indice in the value matrix
Tbelief=[Tbeta;Talpha];
for i=1:2*NTmax
Tbelief(i,2)=i;
end
Tbelief(:,1);
%Initialiser V et Vold
Vold=ones(2*NTmax,NTmax);
V=zeros(2*NTmax,NTmax);
lambda=alpha;
%boucle while
while V-Vold <epsilon
V_old=V;
Olambda=alpha*lambda+(1-lambda)*beta
for i=1:2*NTmax
if Tbelief(i,1)==Olambda
ind=Tbelief(i,2);
end
end
if nt < NTmax
Q0= -eina -sigma +Vold(ind,nt);
Q1= -eina -es -sigma + Vold(1) ;
Q2= -es - et - sigma +(1-lambda)*Vold(2*NTmax,nt)+ lambda*Vold(1,nt+1);
Q=[Q0;Q1;Q2];
[maxQ position]=max(Q);
a=state(position);
else (nt==NTmax);
Q1= -eina -sigma + Vold(2*NTmax);
maxQ=Q1 ;
a= 1 ;
end
%la mise a jour de nt, V et lambda selon la valeur de a
if a==0
for i=1:2*NTmax
if Tbelief(i,1)==lambda
ind2=Tbelief(i,2);
end
ind2=Tbelief(i,2);
end
ind2=Tbelief(i,2);
V(ind2,nt)=Q0;
lambda=Olambda;
nt;
end
if a==1
for i=1:2*NTmax
if Tbelief(i,1)==lambda
ind3=Tbelief(i,2);
end
ind3=Tbelief(i,2);
end
ind3=Tbelief(i,2);
ind3=Tbelief(i,2);
V(ind3,nt)=Q1;
lambda=alpha;
nt;
end
if a==2
for i=1:2*NTmax
if Tbelief(i,1)==lambda
ind4=Tbelief(i,2)
end
ind4=Tbelief(i,2)
end
ind4=Tbelief(i,2)
V(ind4,nt)=Q2;
lambda=beta;
nt=max(nt+1,NTmax-1);
end
if V==Vold
V-Vold<epsilon;
else
V-Vold>epsilon;
end
a
lambda
end |
Partager