필터 지우기
필터 지우기

How to correct error in Nonlinear constraint in fmincon

조회 수: 2 (최근 30일)
Oladunjoye
Oladunjoye 2014년 3월 15일
I used fmincon too calculate six(6) vartialbes in a function (mandmf, to long to be posted here). The code is below
for q= -1:1:1, for k.....
x0=[k;l;m;n;p;q];
% calling the function
[x,fvals]=fmincon(@(x) mandmf(x,mu,gamma)...
,x0, [], [], [], [], -1*ones(6,1), ones(6,1),@(x)constred(x));
end....
where constred(x) is a nonlinear constraint given as
function [c,ceq] = constred(x)
c = [];
ceq = x(1)*x(1)' + x(2)*x(2)' + x(3)*x(3)'+ x(4)*x(4)' + x(5)*x(5)' +x(6)*x(6)' - 1;
end
The code works and gives the desired results.
Now I increased the coefficients to twelve(12) by changing x(1)'=x(7), ...,x(6)'=x(12) and then wrote the new constraint as
function [d,g] = constman39(x)
d = [];
g = x(1)*x(7) + x(2)*x(8) + x(3)*x(9)+ x(4)*x(10) + x(5)*x(11) +x(6)*x(12) - 1;
end
I have included the changes in the variables in a new function mandmfmod. The new code is
for k =....
x0=[k;l;m;n;p;q;k1;k2;k3;k4;k5;k6];
% calling the function
[x,fvals]=fmincon(@(x) mandmfmod(x,mu,gamma)...
,x0, [], [], [], [], -1*ones(12,1), ones(12,1), ...
@(x)constman39(x));
When I tried to run it MATLAB give the following error
Error using svd
Input to SVD must not contain NaN or Inf.
Error in pinv (line 29)
[U,S,V] = svd(A,0);
Error in qpsub (line 463)
projSD = pinv(projH)*(-Zgf);
Error in nlconst (line 619)
[SD,lambda,exitflagqp,outputqp,howqp,ACTIND] ...
Error in fmincon (line 794)
[X,FVAL,LAMBDA,EXITFLAG,OUTPUT,GRAD,HESSIAN]=...
Error in mand5 (line 59)
[x,fvals]=fmincon(@(x) mandmfmod(x,mu,gamma)...
I didn't get any error when working with six variables.
What should I do? I have not been able to figure out what the problem is. Help please.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by