algorithm - 在优化问题中指定下限和上限的技巧
问题描述
我正在最小化(使用paretosearch
MATLAB 中的函数)两个都依赖于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
and0<= 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]
。
推荐阅读
- python - 将持续时间(作为 int)添加到时间(作为对象)
- java - 如果列表发生唯一约束错误,Spring 不会回滚。如何为整个列表启用回滚?
- c++ - 在 C++ 中的多个类中使用模板类
- mysql - Sequelize - 如何在模型中定义触发器?
- android - Androidx自定义navigationItem选择动作
- jquery - 使用 jquery 过滤表会产生不好的结果
- angular - 在 Angular 8 中导航到上一页的顶部
- javascript - 用 Jest 从 NPM 模块模拟一个类,给我一个构造函数问题
- javascript - 上传excel文件并在ajax java中使用post请求操作数据后如何导出csv文件?
- php - 当会话超时并且我尝试在该时间之后注销时,为什么我会在 Laravel 中收到错误