Matlab - createOptimProblem

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

createOptimProblem

Publicado por Milena (30 intervenciones) el 04/06/2020 00:59:11
Buenas tardes, necesito resolver la siguiente función:

2



por el algoritmo de Rosenbrock, y lo he usado antes y me funciona bien, pero con esta función no... Tengo lo siguiente:



1
2
3
4
5
datos1=[840;702;1510;646;1674;622;457;710;1191;553;4600;400;568;422;1830;792];
datos2=[1344;510;444;821;1276;2855;652;614;631;937;6399;799;765;503;3527;640];
Valores_Iniciales=[ 2   809.128866958163   1238.44626909083   628.007384447214   705.324267832213];
Tolerancia=1e-6;
Opciones=optimoptions(@fmincon,'Algorithm','sqp','MaxIterations',10000000,'StepTolerance',Tolerancia,'Display','off');

Tengo las condiciones que el 1er valor debe ser mayor que 1, y el segundo y tercero mayor que cero

1
2
3
4
5
6
7
8
9
10
11
12
13
Matriz_A=[-1  0  0 0  0;...
       0 -1  0 0  0;...
       0  0 -1 0  0];
 
Matriz_B=[-1;-0.01;-0.01];
 
Funcion=@(x)funcion(x(1),x(2),x(3),x(4),x(5),n_periodos,datos1,datos2);
problema=createOptimProblem('fmincon','objective',Funcion,'x0',Valores_Iniciales,...
        'Aineq',Matriz_A,'bineq',Matriz_B,'options',Opciones);
 
gs=GlobalSearch; % Solución global
[x,fval,exitflag,output,solutions]=run(gs,problema);
parametros=solutions(1,1).X;


Y la función es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function L = funcion(m , a1, a2, m1, m2, n, x, y)
L = 0;
 
for i_cic = 1:length(x)
 
    C1=-((x(i_cic)-m1)/a1);
    C2=m*C1;
    C3=exp(C2);
    D1=-((y(i_cic)-m2)/a2);
    D2=m*D1;
    D3=exp(D2);
    E1=C3+D3;
    E2=E1^(1/m);
    E3=E1^((1/m)-2);
    Operacion(i_cic)=C2+D2+log(E3)+log(m-1+E2)+E2;
 
end
 
   L = L - log(-n*(log(a1)+log(a2))+sum(Operacion));

Pero me da el siguiente error:

Error using sqpInterface
Objective function is undefined at initial point. Fmincon cannot continue.

Error in fmincon (line 833)
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = sqpInterface(funfcn,X,full(A),full(B),full(Aeq),full(Beq), ...

Error in globalsearchnlp

Error in GlobalSearch/run (line 337)
globalsearchnlp(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,options,localOptions);

Error in Distri_Bivariadas (line 75)
[x,fval,exitflag,output,solutions]=run(gs,problema_MG);

Caused by:
Failure in initial call to fmincon with user-supplied problem structure.


Saben que pueda ser? Les agradezco mucho
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