fmincon实现非线性约束
2视图(30天)
显示旧的评论
我想适合我的目标函数(ogden_funct)下面的约束,我跑到错误。
约束1)我得到一个错误
“错误使用fmincon
提供目标函数必须返回一个标量值的
对于约束2)我不知道/如何实现这一点。
我的理想解决方案将实现约束1)和2)
任何思想的帮助。
%的目标
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;
% 1约束)
c (1) * c (4) c + c (2) * (5) c + c (3) * (6) = 2;
%我的尝试,写一个函数nlcon (c)在一个新文件
函数[z, zeq] = nlcon (c)
z = 2 - (c c (1) * (4) c + c (2) * (5) + c (3) * c (6));
zeq = [];
结束
%然后调用fmincon
x = fmincon (Aeq ogden_funct Initial_Guess, A, b,说真的,[],[],nonlincon);%,Initial_Guess…在这种情况下,[]不重要
%约束2)
c (1) * c (4) > 0;(2)* c (5) > 0;(3)* c (6) > 0;%没有想法如何实现这一点