【问题标题】:Tie-breaking in PuLP optimization纸浆优化中的决胜局
【发布时间】:2017-08-26 02:35:57
【问题描述】:

故事

我正在尝试使用 PuLP (python) 最小化编写棒球消除问题。基本问题如下所示:

基本上x_iji 团队在j 上的未来胜利,g_ijij 团队之间剩下的整体比赛,k 是我们感兴趣的团队其中,p_j 是一个团队到目前为止的积分。变量z_j 只是辅助变量,当团队j 领先k(按总胜数)和0 如果落后时,它是1

问题

我在 PuLP 和解决优化问题方面没有问题。但是,我想添加一些打破平局的规则,以调整约束,这样如果,例如,t_j == t_k,它会比较,比如说,x_jkx_kj,以决定团队 j 是否领先k.

问题

所以基本上我需要一个只在特定情况下才起作用的条件。有没有办法在纸浆中轻松做到这一点?也许通过引入其他变量?如果没有,你会建议什么模块/方法来解决这种平局?

【问题讨论】:

  • t 变量是否取整数值?如果是这样,您可以添加从决胜局规则派生的小数部分。那么小数部分只有在 t 变量被绑定时才有意义
  • 我想到了,但问题是有一大堆打破平局的规则,所以这会很快升级并杀死我们的数值算法。这就是为什么我问是否有更严格的方法。
  • 当您说数值算法时,您是指纸浆求解器吗?如果我的建议极大地影响了速度,我会感到惊讶。
  • 嗯,平局规则确实不同(大约有 16 条),所以您不能将所有规则硬编码为不同的小数顺序。

标签: python optimization pulp


【解决方案1】:

由于您有许多相互竞争的抢七规则,您可能需要一个更复杂的目标函数来根据抢七规则奖励或惩罚某些团队。您将需要使用目标函数以某种方式“定价”条件。虚拟变量和大 M 约束可能有助于“如果/那么”条件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    相关资源
    最近更新 更多