Optimization problem on Constraint declaration

Hello,
I have a code
syms a wd;
c4_update=0.0248*abs(a)^4 - 9.878; %coming from some other equation
c3_update=abs(wd*(- 0.02+ a*(0.040 - 0.1352i)) + 0.223 - 0.223i)^2 + 0.223+ 0.223i)^2 + a*(0.096- 0.089i)) + 0.22 - 0.223i)^2 % coming from some other equation
nonlcon =@constraintfcn;
[x_value2,fval2] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon2,opts); % where fun,x0,A,b,Aeq,beq,lb,ub,opts are well defined
function [c,ceq] = constraintfcn(c3_update,c4_update)
c(1)= c3_update(1);
c(2)=c4_update(1);
ceq = [];
end
It gives error. How to solve this problem.

댓글 수: 3

Matt J
Matt J 2020년 11월 18일
It gives error.
An error you haven't shown us...
It shows "FMINCON requires all values returned by functions to be of data type double."
Matt J
Matt J 2020년 11월 18일
Yes, but you haven't copy/pasted the full error message, so we cannot see where the error is coming from.

댓글을 달려면 로그인하십시오.

 채택된 답변

Matt J
Matt J 2020년 11월 18일
편집: Matt J 2020년 11월 18일
We can't tell from your code what the relation is supposed to be between a, wd and x. This might be what you were trying to do, however:
nonlcon =@constraintfcn;
[x_value2,fval2] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon2,opts); % where fun,x0,A,b,Aeq,beq,lb,ub,opts are well defined
function [c,ceq] = constraintfcn(x)
a=x(1); wd=x(2);
c(1)= abs(wd*(- 0.02+ a*(0.040 - 0.1352i)) + 0.223 - 0.223i)^2 + 0.223+ 0.223i)^2 + a*(0.096- 0.089i)) + 0.22 - 0.223i)^2;
c(2)=0.0248*abs(a)^4 - 9.878;
ceq=[];
end

댓글 수: 5

ok understand. But one problem is that the values of c4_update and c3_update are random in nature (which is coming from other calculation) which I want as the input of the function. I can't define c(1) and c(2) like that,coz it will change for next calculation.
Matt J
Matt J 2020년 11월 19일
For any fixed value of x, your constraint function constraintfcn(x) must return the same value all the time. The defintiion of the function is not allowed to evolve, stochastically or otherwise, throughout the optimization.
ok. It's mean I can't use c4_update and c3_update as an input,right? I have to use a fixed value (like x)?
Matt J
Matt J 2020년 11월 19일
편집: Matt J 2020년 11월 19일
Both the constraint and objective functions must be a function of your unknown variable vector x (and nothing else). You can make the definition of the constraint function depend on other fixed problem parameters, however that definition must remain fixed throughout the optimization. During the optimization, the only thing that is allowed to vary the output of the constraint and objective functions are the different guesses for the unknowns that fmincon will iteratively pass in as input.
Ok understand. Thank you for your valuable suggestions.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

질문:

2020년 11월 18일

댓글:

2020년 11월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by