Optimization problem on Constraint declaration
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Matt J
le 18 Nov 2020
Yes, but you haven't copy/pasted the full error message, so we cannot see where the error is coming from.
Réponse acceptée
Matt J
le 18 Nov 2020
Modifié(e) : Matt J
le 18 Nov 2020
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 commentaires
Matt J
le 19 Nov 2020
Modifié(e) : Matt J
le 19 Nov 2020
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.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Solver Outputs and Iterative Display dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!