9bc58fed2e7746ae983c9f67e73b8938dfdd3681
[scilab.git] / scilab / modules / optimization / demos / icse / icsegen.sci
1 //
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) ????-2008 - INRIA
4 // Copyright (C) 2010 - DIGITEO
5 //
6 // This file is distributed under the same license as the Scilab package.
7 //
8
9 function [co,u,g,itv,dtv]=icsegen(u,simu,nap,imp,ech,cof)
10     // Computation of the optimal control with scaling of the control and
11     // weighting of the observations
12     // Syntax
13     // [co,u,g,itv,dtv]=icsegen(u,simu,nap,imp,ech,cof)
14     //
15     // input variables :
16     // u(nu)     : initial parameters
17     // simu      : string which contains the name of the sub program which
18     //             describes the problem (second member, criterion and initial state)
19     // nap       : maximum number of call to the simulator
20     // imp       : debug value during optimization
21     // ech(1,nu) : scaling coeff of the control
22     // cof(1,ntob*nob) : weighting coeff of the observations
23     // output variables :
24     // co        : final cost
25     // u(nu)     : final parameters
26     // g(nu)     : final gradient
27     // itv(nitv) : work area (fortran integers)
28     // dtv(ndtv) : work area (fortran double precision)
29     // Use the icot and icob macro to extract the state
30
31     if nu<large then
32         alg="qn";
33     else
34         alg="gc";
35     end
36
37     itv       = itu;
38     itv(nitv) = 0;
39     dtv       = [dtu,y0,tob,matrix(obs,1,ny*nob),don,ech,cof,b,fy1,fu1];
40     dtv(ndtv) = 0;
41     debug(imp);
42     [co,u,g,itv,dtv] = optim(simu,"b",binf,bsup,u, alg, df0, ...
43     "ar",nap, "ti",itv,"td",dtv,"si","sd");
44     debug(0);
45 endfunction