fmincon implementing nonlinear constraints
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I am trying to fit my objective function (ogden_funct) to the following constraints and am running into errors.
For constraint 1) I get an error of 'Error using fmincon
Supplied objective function must return a scalar value'
For constraint 2) I am not sure where/how to implement this.
My ideal solution will implement constraint 1) and 2)
Any ideas help.
%objective
ogden_funct = @(c) c(1)*(xdata.^(c(4)-1)-xdata.^((-1)/2*c(4)-1)) + ...
c(2)*(xdata.^(c(5)-1)-xdata.^(-1/2*c(5)-1)) + ...
c(3)*(xdata.^(c(6)-1)-xdata.^((-1)/2*c(6)-1))- ydata;
% Constraint 1)
c(1)*c(4) + c(2)*c(5) + c(3)*c(6) = 2;
% my attempt, writing a function nlcon(c) in a new file
function [z, zeq] = nlcon(c)
z = 2 - (c(1)*c(4) + c(2)*c(5) + c(3)*c(6));
zeq = [];
end
% then calling fmincon
x = fmincon(ogden_funct, Initial_Guess,A,b,Aeq,beq,[],[],nonlincon); % Where Initial_Guess...[] in this case dont matter
% Constraint 2)
c(1)*c(4)>0; c(2)*c(5)>0; c(3)*c(6)>0; % no ideas on how to implement this
5 Kommentare
Matt J
am 6 Jul. 2022
Bearbeitet: Matt J
am 6 Jul. 2022
Objective for fmincon must be ogden_funct = @(c) sum(c(1)*(xdata.^(c(4)-1)....).^2;
mean() would be better:
ogden_funct = @(c) mean(c(1)*(xdata.^(c(4)-1)-xdata.^((-1)/2*c(4)-1)) + ...
c(2)*(xdata.^(c(5)-1)-xdata.^(-1/2*c(5)-1)) + ...
c(3)*(xdata.^(c(6)-1)-xdata.^((-1)/2*c(6)-1))- ydata).^2;
That way, your optimoptions needn't depend so much on the size of xdata.
Antworten (0)
Siehe auch
Kategorien
Mehr zu Get Started with Optimization Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!