root/applications/bdmtoolbox/tutorial/mpdm/dist_ctrl_example.m @ 958

Revision 871, 1.7 kB (checked in by mido, 15 years ago)

adaptation of /applications to new version of LOG_LEVEL
also, a cosmetic change made in enumerations: logub -> logubound, loglb -> loglbound

Line 
1% name random variables
2y = RV({'y'},1);
3u1 = RV({'u1'},1);
4u2 = RV({'u2'},1);
5
6% create f(y_t| y_{t-3}, u_{t-1})
7fy.class = 'mlnorm<ldmat>';
8fy.rv    = y;
9fy.rvc   = RVtimes([y,u1,u2], [-3, 0, 0]);
10fy.A     = [0.5, -0.9, 0.9];
11fy.const = 0;
12fy.R     = 1e-2;
13
14DS.class = 'PdfDS';
15DS.pdf = fy;
16
17% create ARX estimator
18A1.class = 'ARX';
19A1.rv = y;
20A1.rgr = RVtimes([y,u1],[-3,0]) ; % correct structure is {y,y}
21A1.log_level ='logbounds,logevidence';
22A1.frg = 0.95;
23
24A2=A1;
25A2.rgr = RVtimes([y,u2],[-3,0]) ; % correct structure is {y,y}
26
27
28C1.class = 'LQG_ARX';
29C1.ARX = A1;
30C1.Qu = 0.01*eye(1);
31C1.Qy = 1*eye(1);
32C1.yreq = 1;
33C1.horizon = 1;
34
35C2=C1;
36C2.ARX = A2;
37
38P1.class = 'ARXAgent';
39P1.name = 'P1';
40P1.lqg_arx = C1;
41P1.lqg_arx.class = 'LQG_ARX';
42P1.merger.class = 'merger_mix';
43P1.merger.method = 'geometric';
44%P1.merger.dbg_file = 'mp.it';
45P1.merger.ncoms = 20;
46P1.merger.stop_niter= 5;
47P1.neighbours = {};%{'P2'};
48
49P2=P1;
50P2.name = 'P2';
51P2.lqg_arx = C2;
52P2.neighbours = {};
53
54exper.Ndat = 10;
55exper.burnin = 3;
56exper.burn_pdf.class = 'enorm<ldmat>';
57exper.burn_pdf.mu = [0;0];
58exper.burn_pdf.R  = 0.01*eye(2);
59
60
61%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MONTE CARLO %%%%%%%%%%%%%%%%%%%
62
63Ntrials = 3;
64loss_non_coop = zeros(1,Ntrials);
65for i=1:Ntrials
66    M= arena(DS,{P1,P2},exper);
67
68    loss_non_coop(i) = (M.DS_y-C1.yreq)'*C1.Qy*(M.DS_y-C1.yreq) + M.DS_u1'*C1.Qu*M.DS_u1 + M.DS_u2'*C1.Qu*M.DS_u2;
69    if loss_non_coop(i)>100
70        %keyboard
71    end
72end
73mean(loss_non_coop)
74
75loss_coop = zeros(1,Ntrials);
76for i=1:Ntrials
77    P1.neighbours = {'P2'};
78    P2.neighbours = {'P1'};
79    M= arena(DS,{P1,P2},exper);
80
81    loss_coop(i) = (M.DS_y-C1.yreq)'*C1.Qy*(M.DS_y-C1.yreq) + M.DS_u1'*C1.Qu*M.DS_u1 + M.DS_u2'*C1.Qu*M.DS_u2;
82    if loss_coop(i)>100
83        %keyboard
84    end
85end
86mean(loss_coop)
87
Note: See TracBrowser for help on using the browser.