// exec('TP_plante_2.sce') T=10; beta=0.9; r=1.2; puis = 0.5; etat=[0:(xm/6):(1.2*xp)]; commande=0:0.05:1; rejetons=list(); actualisation=cumprod([1 beta*ones(1,T-1)]); for l=1:prod(size(commande)) rejetons(l)= (1-commande(l))*(r*(etat')^{puis})*actualisation; // rejetons(l) est une matrice end cout_fin_zero=zeros(etat'); getf('TP_plante_2.sci') dynamique_commandee=dyn_plante_com; [matrice_transition]=discretisation(etat,commande,dynamique_commandee); cardinal_commande=size(matrice_transition); for l=1:cardinal_commande, sum(matrice_transition(l),"c")' mini(matrice_transition(l)) maxi(matrice_transition(l)) halt(); end cout_instantane=rejetons; cout_final=cout_fin_zero; [valeur,feedback]=Bell_stoch(matrice_transition,... cout_instantane,cout_final); // résoud l'équation de la programmation dynamique etat_initial=grand(1,1,'uin',2,prod(size(etat)));; // correspond à un état original >= etat(2) [z]=trajopt(matrice_transition,feedback,cout_instantane,... cout_final,etat_initial); // calcul des trajectoires optimales (indices) zz=list(); zz(1)=etat(z(1)); zz(2)=commande(z(2)); zz(3)=z(3); // trajectoires optimales xset("window",1);xbasc();plot2d2(1:prod(size(zz(1))),zz(1));xtitle("taille") xset("window",2);xbasc();plot2d2(1:prod(size(zz(2))),zz(2));xtitle("commande") xset("window",3);xbasc();plot2d2(1:prod(size(zz(3))),zz(3));xtitle("fitness") // tracé des trajectoires optimales