用于Ampl / cplex的线性形式的函数(a / b)

时间:2012-07-19 07:19:41

标签: linear linear-programming cplex ampl

我正在尝试解决最小化问题,我想最小化表达式

a/b

其中a& b是变量。因此,这不是线性问题...... 如何将此函数转换为另一个函数(为线性函数)

3 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,但最简单的解释要求你解决一系列线性程序。首先,删除目标并添加约束

a <= c * b

其中c是解决方案的已知上限。然后在c上进行二进制搜索,你可以在c_l,c_u范围内找到问题不可行的范围

a <= c_l * b

但可行

a <= c_u * b

答案 1 :(得分:1)

有关如何在lpsolve网站上处理线性规划比率的详细部分。它应该足够普遍适用于AMPL和CPLEX。

答案 2 :(得分:0)

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。你可以从维基找到主要的想法。许多OR书籍更多地讨论了这一点,例如Boyd的“凸优化”中的pp53,pp165(免费下载)。