| 1 | function [w x]=sidp3(sidp_parameters, compare_parameters,system,apriori) |
|---|
| 2 | kresli=1; |
|---|
| 3 | eps=10^-4; |
|---|
| 4 | mode=0; |
|---|
| 5 | q=0; |
|---|
| 6 | col(1)='b';col(2)='r' ;col(3)='c' ;col(4)='m' ;col(5)='y'; |
|---|
| 7 | kresli=1;a=0; b=0; |
|---|
| 8 | compare_parameters.student=quantile(trnd((sidp_parameters.num_of_candidates-1)*ones(1,100000)),(1-compare_parameters.alpha)^(1/(sidp_parameters.num_of_candidates-1))); |
|---|
| 9 | compare_parameters.rinott=4; |
|---|
| 10 | |
|---|
| 11 | apriori.eta0=abs(apriori.y0)/system.sigma; |
|---|
| 12 | %apriori.eta0=0; |
|---|
| 13 | |
|---|
| 14 | apriori.beta0=abs(apriori.b0)/sqrt(apriori.P0); |
|---|
| 15 | apriori.beta0_range=2*apriori.P0/sqrt(apriori.P0); |
|---|
| 16 | if apriori.beta0-apriori.beta0_range<eps |
|---|
| 17 | apriori.beta0=(abs(apriori.b0)+2*apriori.P0)/2/sqrt(apriori.P0); |
|---|
| 18 | apriori.beta0_range=apriori.beta0-eps; |
|---|
| 19 | end |
|---|
| 20 | |
|---|
| 21 | [H C]=init_hyperstate(sidp_parameters.n_grid,apriori,mode); %vytvori H a mi, nastavi H0 a mi* |
|---|
| 22 | |
|---|
| 23 | min_distance_C=0.5*sidp_parameters.search_region_init; |
|---|
| 24 | min_distance_H=(H(1,end)-H(1,1))/50; |
|---|
| 25 | |
|---|
| 26 | if (kresli); [los1 los2]=mc_study(system,apriori,1000); q=q+1; w(q)=los1(1)/los1(3); x(q)=los2(1)/los2(3); end |
|---|
| 27 | |
|---|
| 28 | |
|---|
| 29 | |
|---|
| 30 | for j=1:sidp_parameters.n_iter |
|---|
| 31 | j |
|---|
| 32 | %search_region=sidp_parameters.gama^(j-1)*sidp_parameters.lambda^(i-1)*sidp_parameters.search_region_init; |
|---|
| 33 | search_region=sidp_parameters.gama^(j-1)*sidp_parameters.search_region_init; |
|---|
| 34 | %prolez mrizku a iteruj rizeni |
|---|
| 35 | for k=1:sidp_parameters.n_grid |
|---|
| 36 | candidates=generate_candidates(C(k), search_region, sidp_parameters.num_of_candidates); |
|---|
| 37 | [C(k) mean_values]=choose_best_control(H,C,k,apriori,sidp_parameters.horizont,candidates,compare_parameters); |
|---|
| 38 | end |
|---|
| 39 | |
|---|
| 40 | if (kresli); [los1 los2]=mc_study(system,apriori,1000); q=q+1; w(q)=los1(2)/los1(3); x(q)=los2(2)/los2(3); end |
|---|
| 41 | |
|---|
| 42 | vypis=H; |
|---|
| 43 | save 'Beta.txt' vypis -ASCII; |
|---|
| 44 | save 'C.txt' C -ASCII; |
|---|
| 45 | |
|---|
| 46 | %pokud je mrizka prilis hruba, zjemni ji tamkde je treba |
|---|
| 47 | for k=1:sidp_parameters.n_grid-1 |
|---|
| 48 | if (abs(C(k)-C(k+1))>min_distance_C && sidp_parameters.n_grid<sidp_parameters.n_grid_max && H(k+1)-H(k)>min_distance_H) |
|---|
| 49 | % [H C]=update(H,C,k); sidp_parameters.n_grid=sidp_parameters.n_grid+1; |
|---|
| 50 | end |
|---|
| 51 | end |
|---|
| 52 | |
|---|
| 53 | if (kresli); subplot(2,1,1); plot(H,C,['',col(j)]); hold on; a=max(a,max(C(:))); b=min(b,min(C(:)));end |
|---|
| 54 | end |
|---|
| 55 | |
|---|
| 56 | if (kresli); |
|---|
| 57 | xlabel('\fontsize{18} \beta'); ylabel('\fontsize{18} \nu^{ (2)}_0'); |
|---|
| 58 | set(gca,'ylim',[b a]); |
|---|
| 59 | set(gca,'xlim',[0 H(end)]); |
|---|
| 60 | legend('\pi_1','\pi_2','\pi_3','\pi_4'); |
|---|
| 61 | subplot(2,1,2); |
|---|
| 62 | plot(0:sidp_parameters.n_iter,[w' x' ones(size(x,2),1)]); xlabel('\fontsize{18} iterace'); ylabel('\fontsize{18} relativn�tr�'); legend('mean','median');set(gca,'ylim',[0.99 max(w(1),x(1))]); set(gca,'xtick',0:sidp_parameters.n_iter); set( get(gcf, 'Children'), 'FontSize', 18); |
|---|
| 63 | end |
|---|
| 64 | %[w;x] |
|---|
| 65 | end |
|---|