【发布时间】:2016-10-11 18:38:08
【问题描述】:
我想使用fmincon 解决一个约束最小化问题。但是约束是根据f(x_0)<a 之类的函数定义的,其中x_0 是问题的解决方案。有可能吗?
在文档中,示例仅包含此 x_0<a 表单。
代码:
f_obj = @(x)var_zcors(x,t_cw);
opt_theta = fminbnd(f_obj,0,360);
现在,x 应该被限制为 f_constraint(x)< a。
更新(来自@Phil Goddard 的回答):
f_obj = @(x)var_zcors(x,t_cw);
f_nl = @(x)deal(f_constraint(x)-a,[]);
x0 = 180; % or whatever is appropriate
opt_theta = fmincon(f_obj,x0,[],[],[],[],0,360,f_nl);
在上面的代码中说f_constraint返回一个向量[x_min y_max]而不是一个标量。我想指定以下约束:
x_min>b
y_max<a
有什么方法可以做到这一点?
【问题讨论】:
-
你有一个非线性约束,需要使用fmincon的第9个输入。有关详细信息和使用示例,请参阅文档。
-
@PhilGoddard 抱歉找不到。你指的是这个吗? in.mathworks.com/help/optim/ug/fmincon.html#busqazq-1
-
是的,根据我评论中的链接。
-
@PhilGoddard 谢谢,我又经历了一遍。不确定会这样做,您能否为我的问题显示代码以更好地解释。在我的问题中,
f_constraint是 matlab 函数。
标签: matlab optimization constraints