【问题标题】:Min/Max within Linear Optimization Program线性优化程序中的最小值/最大值
【发布时间】:2013-11-03 22:29:47
【问题描述】:

我正在尝试使用目标函数中的最小函数轻松地制定 LP。目标函数类似如下:

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

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

tsp 表示我在路径 p 上的 orgin-destination 组合上发送了多少辆卡车。 ts'p 是反向路线。我在这里对 s 和 p 求和。

我需要知道的是如何将其设置为 LP 的一部分,因为 LP 不接受其目标陈述中的最小化和最大化功能。根据this question 的说法,需要带有附加变量的 big-M 公式,但并没有真正说明如何做到这一点。

提前感谢您的帮助!

【问题讨论】:

  • this 书籍章节中,您可以找到一些巧妙的 LP 技巧,例如如何最小化最大值。也许它可以提供一些帮助。
  • 把目标函数中的最小值变成它的对偶线性规划,这是一个最大值问题。然后通过解决一个最大问题来解决它。参见对偶定理。

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


【解决方案1】:

下面是您如何使用 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 只有在 必须 取该值时才为 1。

把它们放在一起:

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 两个值中的最小值

希望能帮助您继续前进。

【讨论】:

    猜你喜欢
    • 2021-01-29
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    相关资源
    最近更新 更多