fmincon实现非线性约束

2视图(30天)
里德
里德 2022年7月5日
编辑: Torsten 2022年7月6日
我想适合我的目标函数(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;%没有想法如何实现这一点
5个评论
Torsten
Torsten 2022年7月6日
编辑:Torsten 2022年7月6日
你能给我描述,在脚本函数,z =[.....吗)是实现吗?
这是一个试图实现约束
c - c (1) * (4) < = 0
c - c (2) * (5) < = 0
c - c (3) * (6) < = 0

登录置评。

答案(0)

类别

找到更多的在非线性优化帮助中心文件交换

s manbetx 845


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的