3e03c5c59d1877cdb25d79126de6dc59c8dd2ee0
[scilab.git] / scilab / modules / optimization / demos / icse / lqv.sce
1 //
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) ????-2008 - INRIA
4 // Copyright (C) 2010 - DIGITEO - Yann COLLETTE
5 // Copyright (C) 2010 - DIGITEO - Allan CORNET
6 //
7 // This file is distributed under the same license as the Scilab package.
8 //
9
10 //                     lqv.bas : demo of icse
11 //  *************************************************************
12 //
13
14 exec("SCI/modules/optimization/demos/icse/icse.contexte");  // context
15
16 t0   = 0;     // instant initial
17 tf   = 20;    // instant final
18 dti  = 1;     // premier pas de temps
19 dtf  = 1;     // second pas de temps
20 ermx = 1.d-6; // test d'arret absolu sur la valeur du second membre dans
21 // la resolution de l'etat
22 iu = [0,0,1]; //  iu   :indications sur la structure du controle
23 //    iu(1)=1 si l'etat initial depend du controle constant,0 sinon
24 //    iu(2)=1 si l'etat initial depend du controle variable,0 sinon
25 //    iu(3)=1 si le second membre depend du controle constant,0 sinon
26 nuc  = 5;     // nombre de parametres independants du temps
27 nuv  = 1;     // nombre de parametres dependants du temps
28 ilin = 2;     // indicateur de linearite :
29 // 0 pour un systeme non affine
30 // 1 pour un systeme affine dont la partie lineaire n'est pas autonome
31 // ilin=2 pour un systeme affine dont la partie lineaire est autonome
32 nti = 10;     // nombre de pas de temps correspondant a dti (premier pas de temps)
33 ntf = 10;     // nombre de pas de temps correspondant a dtf (second pas de temps)
34 // si l'on utilise un seul pas de temps,on doit prendre ntf=0
35 ny   = 4;     // dimension de l'etat a un instant donne
36 nea  = 0;     // nombre d'equations algebriques (eventuellement nul)
37 itmx = 10;    // nombre maximal d'iterations dans la resolution de
38 // l'equation d'etat discrete a un pas de temps donne
39 nex = 1;      // nombre d'experiences effectuees
40 nob = 2;      // dimension du vecteur des mesures pour une experience donnee
41 // en un instant donne
42 ntob  = 10;   // nombre d'instants de mesure pour une experience donnee
43 ntobi = 5;    // nombre d'instants de mesure correspondant a dti (premier
44 // pas de temps)
45
46 nu = nuc + nuv * (nti + ntf + 1); // dimension du vecteur des parametres de controle
47
48 //  uc(1,nuc)          :controle constant
49 uc = 0*ones(1,nuc);
50
51 //  uv(1,nuv*(nti+ntf+1)):controle variable
52 if nuv>0 then uv(1,nuv*(nti+ntf+1))=0; end;
53
54 //  itu(1,nitu)        :tableau de travail entier reserve a
55 //                      l'utilisateur
56 itu = [0];
57
58 //  dtu(1,ndtu)        :tableau de travail double precision reserve
59 //                      a l'utilisateur
60 dtu = [0];
61
62 //  y0(ny)             :etat initial
63 //          (valeur arbitraire si iu(1) ou iu(2) est non nul)
64 y0 = ones(1,ny);
65
66 //  tob(1,ntob)        :instants de mesure (compatibilite avec ntob
67 //                      et ntobi)
68 tob  = 2*(1:10);
69 binf = -10*ones(1,nu); // borne inf des parametres
70 bsup =     ones(1,nu); // borne sup des parametres
71
72 //  termes utiles pour une dynamique lineaire ou une observation quadratique
73 b(1,ny) = 0;                    // terme constant d'une dynamique lineaire
74 fy      = 0.1*ones(ny,ny);      // derivee de la dynamique par rapport a l'etat
75 fu       =    ones(ny,nuc+nuv); // derivee de la dynamique par rapport au controle
76
77 obs(nob,ny) = 0; // matrice d'observation
78 obs         = ones(nob,ny);
79
80 don=0*ones(1,nex*ntob*nob);
81
82 nap   = 20;  // nombre d'appels du simulateur
83 imp   = 2;   // niveau de debug pour optim
84 large = 100; // taille de nu au dela de laquelle on choisit un optimiseur
85 // pour les problemes de grande taille (alg='gc' dans l'appel de optim)
86
87 exec("SCI/modules/optimization/demos/icse/icse.contexte");  // context
88
89 [co,u,g,itv,dtv] = icse(u,"icsemc",nap,imp);
90
91 endfunction
92