【发布时间】:2012-07-19 07:19:40
【问题描述】:
我正在尝试解决一个最小化问题,我想最小化一个表达式
a/b
其中 a 和 b 都是变量。因此,这不是一个线性问题...... 如何将此函数转换为另一个函数(作为线性函数)。
【问题讨论】:
标签: linear-programming cplex ampl
我正在尝试解决一个最小化问题,我想最小化一个表达式
a/b
其中 a 和 b 都是变量。因此,这不是一个线性问题...... 如何将此函数转换为另一个函数(作为线性函数)。
【问题讨论】:
标签: linear-programming cplex ampl
lpsolve 网站上有一个关于如何在线性规划中处理比率的详细部分。它应该足够通用以适用于 AMPL 和 CPLEX。
【讨论】:
有几种方法可以做到这一点,但最简单的解释需要您求解一系列线性程序。首先,移除目标并添加约束
a <= c * b
其中 c 是解的已知上限。然后对c进行二分查找,你可以在c_l、c_u的范围内问题不可行
a <= c_l * b
但对
是可行的a <= c_u * b
【讨论】:
obj 的一般形式应该是一个线性分数函数,类似于 f_{0}(x)=(c^Tx+d)/(e^Tx+f)。对于您的情况,X=(a,b),c=(1,0),(e=0,1),d=f=0。 为了解决这种选择,可以使用称为线性分数规划的东西。这就像线性分数函数的线性约束版本,并且应用 Charnes-Cooper 变换来转换为 LP。您可以从 wiki 找到主要思想。很多 OR 书籍都在讨论这个问题,例如 Boyd 的“凸优化”中的 pp53、pp165(免费下载)。
【讨论】: