在优化问题中指定下限和上限的技巧

问题描述

我正在最小化(使用MATLAB中的paretosearch函数)两个都依赖于xy的目标函数

假设我们有约束0<= x <=0.50.1<= y <= 0.3在这种情况下,我们可以为特定的优化问题简单地定义下限(lb)和上限(ub),如下所示:

lb = [0,0.1];
ub = [0.5,0.3]; 

相反,现在假设我们有0.04<= x <=0.50<= 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]