我试图在目标函数中使用最小函数轻松地制定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公式,但它并没有真正说明如何去做。
提前感谢您的帮助!
答案 0 :(得分:2)
以下是使用Big-M和一组指标变量的方法。
让我只使用一对路线进行说明,你可以对所有路线对(s,p)做同样的事情。我们称它们为Tsp,反之为Tps。
让我们只关注阅读的目标函数
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的最小值。
希望能帮助你继续前进。