Matlab - Problemas con fmincon sqp,

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas con fmincon sqp,

Publicado por Miguel (4 intervenciones) el 06/04/2018 22:55:07
tengo un problema al querer optimizar con fmincon un modelo de monod sin embargo no se cual sea la falla solo me sale el siguiente mensaje :

"criteria details

Optimization stopped because the relative changes in all elements of x are less than options.StepTolerance = 1.000000e-20, but the relative maximum constraint violation, 5.973173e-01, exceeds options.ConstraintTolerance = 1.000000e-20.

Optimization Metric Options max(abs(delta_x./x)) = 7.44e-21 StepTolerance = 1e-20 (selected) relative max(constraint violation) = 5.97e-01 ConstraintTolerance = 1e-20 (selected)"

la simulacion de la cual se obtuvieron los datos fue la siguiente:

1
2
3
4
5
6
7
function dx =modelo(t,x)
   mumax = 1.0;
   yxs = 0.5;
   ks=0.2;
   dx(1)= (mumax*x(1)*x(2))/( ks + x(2));
   dx(2) = -(1/yxs)*((mumax*x(1)*x(2))/(ks+x(2)));
   dx=dx';

y la programacion para la optimizacion es esta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear
   clc
   cin=xlsread('datosalex2','cin','A2:C46');
   tie=cin(:,1);
   biom=cin(:,2);
   glic=cin(:,3);
   pt=xlsread('datosalex2','dat','B2:D10');
   po=pt(:,1);
   lb=pt(:,2);
   ub=pt(:,3);
   A=[]; b=[]; Aeq=[]; beq=[]; % Matrices y vectores de las restricciones lineales: Vacio
   options = optimoptions('fmincon','Algorithm','sqp','Display','iter','TolCon',1e-20,'TolX',1e-20);
   [p,fval,exitflag,output,lambda,grad,hessian]=fmincon('funalex',po,A,b,Aeq,beq,lb,...
    ub,'resalex',options)
   xlswrite('datosalex2',p,'res','B2');

la funcion objetivo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function f=funalex(x)
    val=xlsread('datosalex2','valpc','A3:C5');
    cin=xlsread('datosalex2','cin','A2:D16');
    ab=xlsread('datosalex2','valpc','L2:M2');
    tie=cin(:,1);
    biom=cin(:,2);
    glic=cin(:,3);
    pm1=0.55556;
    pm2=0.88889;
    pm3=0.55556;
    mb=max(biom);
    mg=max(glic);
    a=ab(1);
    b=ab(2);
    os1=(((((val(1,1)-x(2))/mb )^2)*pm1)+((((val(2,1)-x(3))/mb )^2)*pm2)+...
    ((((val(3,1)-x(4))/mb )^2)*pm3));
    os2=(((((val(1,2)-x(5))/mg )^2)*pm1)+((((val(2,2)-x(6))/mg )^2)*pm2)+...
    ((((val(3,2)-x(7))/mg )^2)*pm3));
    f=(os1+os2)*(b-a)/2;

y mis restricciones son estas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function  [c,ceq]=resalex(x)
    xo=0.2;
    so=10;
 
    dx1=(x(1)*x(2)*x(5))/(x(8)+x(5));   %bio
    dx2=(x(1)*x(3)*x(6))/(x(8)+x(6));
    dx3=(x(1)*x(4)*x(7))/(x(8)+x(7));
    ds1=-(1/x(9))*(x(1)*x(2)*x(5))/(x(8)+x(5));
    ds2=-(1/x(9))*(x(1)*x(3)*x(6))/(x(8)+x(6));
    ds3=-(1/x(9))*(x(1)*x(4)*x(7))/(x(8)+x(7));
 
    ko=xlsread('datosalex2','cof','A2:D5');
    kc=ko(:,1);
    k1=ko(:,2);
    k2=ko(:,3);
    k3=ko(:,4);
 
    c=[];
    ceq=[
    k1(1)*xo+k1(2)*x(2)+k1(3)*x(3)+k1(4)*x(4)-dx1;
    k2(1)*xo+k2(2)*x(2)+k2(3)*x(3)+k2(4)*x(4)-dx2;
    k3(1)*xo+k3(2)*x(2)+k3(3)*x(3)+k3(4)*x(4)-dx3;
      k1(1)*so+k1(2)*x(5)+k1(3)*x(6)+k1(4)*x(7)-ds1;
      k2(1)*so+k2(2)*x(5)+k2(3)*x(6)+k2(4)*x(7)-ds2;
      k3(1)*so+k3(2)*x(5)+k3(3)*x(6)+k3(4)*x(7)-ds3;
    ];

adjunto los datos en xls , estoy usando legendre de tercer orden para convertir la ecuaciones diferenciales a algebraicas y poder realizar las restricciones por eso tres puntos que estoy evaluando
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder