【发布时间】:2017-08-26 02:35:57
【问题描述】:
故事
我正在尝试使用 PuLP (python) 最小化编写棒球消除问题。基本问题如下所示:
基本上x_ij 是i 团队在j 上的未来胜利,g_ij 是i 和j 团队之间剩下的整体比赛,k 是我们感兴趣的团队其中,p_j 是一个团队到目前为止的积分。变量z_j 只是辅助变量,当团队j 领先k(按总胜数)和0 如果落后时,它是1。
问题
我在 PuLP 和解决优化问题方面没有问题。但是,我想添加一些打破平局的规则,以调整约束,这样如果,例如,t_j == t_k,它会比较,比如说,x_jk 和 x_kj,以决定团队 j 是否领先k.
问题
所以基本上我需要一个只在特定情况下才起作用的条件。有没有办法在纸浆中轻松做到这一点?也许通过引入其他变量?如果没有,你会建议什么模块/方法来解决这种平局?
【问题讨论】:
-
t 变量是否取整数值?如果是这样,您可以添加从决胜局规则派生的小数部分。那么小数部分只有在 t 变量被绑定时才有意义
-
我想到了,但问题是有一大堆打破平局的规则,所以这会很快升级并杀死我们的数值算法。这就是为什么我问是否有更严格的方法。
-
当您说数值算法时,您是指纸浆求解器吗?如果我的建议极大地影响了速度,我会感到惊讶。
-
嗯,平局规则确实不同(大约有 16 条),所以您不能将所有规则硬编码为不同的小数顺序。
标签: python optimization pulp