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
7 // This file is distributed under the same license as the Scilab package.
10 // lqv.bas : demo of icse
11 // *************************************************************
14 exec("SCI/modules/optimization/demos/icse/icse.contexte"); // context
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
46 nu = nuc + nuv * (nti + ntf + 1); // dimension du vecteur des parametres de controle
48 // uc(1,nuc) :controle constant
51 // uv(1,nuv*(nti+ntf+1)):controle variable
52 if nuv>0 then uv(1,nuv*(nti+ntf+1))=0; end;
54 // itu(1,nitu) :tableau de travail entier reserve a
58 // dtu(1,ndtu) :tableau de travail double precision reserve
62 // y0(ny) :etat initial
63 // (valeur arbitraire si iu(1) ou iu(2) est non nul)
66 // tob(1,ntob) :instants de mesure (compatibilite avec ntob
69 binf = -10*ones(1,nu); // borne inf des parametres
70 bsup = ones(1,nu); // borne sup des parametres
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
77 obs(nob,ny) = 0; // matrice d'observation
80 don=0*ones(1,nex*ntob*nob);
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)
87 exec("SCI/modules/optimization/demos/icse/icse.contexte"); // context
89 [co,u,g,itv,dtv] = icse(u,"icsemc",nap,imp);