线性优化程序中的最小值/最大值

时间:2013-10-25 00:28:38

标签: optimization max min mathematical-optimization linear-programming

我试图在目标函数中使用最小函数轻松地制定LP。目标函数类似于以下内容:

maximize sum( R(dvf * Df) ) - sum( min( tsp, ts'p ) * Csp - max(tsp-ts'p,0) * bsp )

R - >收入函数(我不关心此问题的这一部分)

tsp表示我在路径p上发送了多少卡车orgin-destination combinaton。 ts'p是相反的路线。我在s和p上总结这里。

我需要知道的是如何将其设置为LP的一部分,因为LP不接受其客观陈述中的最小化和最大化函数。根据{{​​3}},需要带有附加变量的big-M公式,但它并没有真正说明如何去做。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

以下是使用Big-M和一组指标变量的方法。

让我只使用一对路线进行说明,你可以对所有路线对(s,p)做同样的事情。我们称它们为Tsp,反之为Tps。

线性化IP

中两个决策变量的最小值

让我们只关注阅读的目标函数 Min(Tsp, Tps) * Cost_sp

首先重写目标函数 Min Xsp * Csp因此我们为路由sp引入了一个新变量Xsp,以便:

Xsp = Tsp if Tsp is the minimum of Tsp and Tps
Xsp = Tps if Tps is the minumum of the two values

这可以通过额外的限制来强制执行。

Xsp = Tsp * Y + Tps * (1-Y)其中Y是0-1指标变量。

如果Tsp较大,我们希望Y为1,如果Tsp较小,我们希望Y为0。

要实现这一点,我们添加约束:Tsp - Tps + M*y > 0 计算出逻辑,如果Tsp很大,那么条件会自动满足。但是如果Tps大于Tsp,那么Y必须取值1才能满足约束条件。

通过在目标函数中添加一个小的价格,只有当 具有该值时,我们才能确保Y是一个。

全部放在一起:

Objective Maximize Sum(p,s) Xsp * Csp - epsilon.Y

s.t.
     Xsp = Tsp * Y + Tps * (1-Y)
     Tsp - Tps + M*y > 0
     Y = {0,1}

将确保目标函数采用两个值Tsp和Tps的最小值

希望能帮助你继续前进。