问题描述
我正在最小化(使用MATLAB中的paretosearch
函数)两个都依赖于x
和y
的目标函数。
假设我们有约束0<= x <=0.5
和0.1<= y <= 0.3
。在这种情况下,我们可以为特定的优化问题简单地定义下限(lb
)和上限(ub
),如下所示:
lb = [0,0.1];
ub = [0.5,0.3];
相反,现在假设我们有0.04<= x <=0.5
和0<= y <=x - 0.03
:
在这种情况下,我们有lb = [0.04,0]
,但是ub
呢?
我认为x
的最小值为0.04
,因此我们只能接受0<= y <= 0.01
,而我们可以拒绝y
的所有其他可能性。但是我相信我是非常错误的。那么如何在MATLAB中定义一个ub
并自动更新为x
的每个值?
任何帮助将不胜感激!
解决方法
paretosearch具有paretosearch(fun,nvars,A,b)格式,可让您以矩阵形式指定线性不等式Ax ≤ b
。将约束0 ≤ y ≤ x − 0.03
重写为两个:−y ≤ 0
和−x + y ≤ − 0.03
,然后派生A = [0,-1;-1,1]
和b = [0,-0.03]
。