繁体   English   中英

如何将条件成本应用于 Python PuLP 中的目标函数?

[英]How to apply conditional costs to objective function in Python PuLP?

我正在优化到不同银行的交易流量,比如在 A 和 B 之间。每笔交易的成本是固定的,但该费用取决于总交易量(例如,银行 A:如果交易量在 0-1000 万美元之间,则为 1 美元,如果交易量在 1000 万美元以上,则为 0.9 美元,并且银行 B 的一些不同)。

我对需要进行的交易数量进行了预测,因此我的决策变量是每家银行的交易数量。 但是我正在努力制定目标函数以使用正确的成本,因为它们取决于决策变量的值。

我是纸浆和优化的新手,所以很难理解如何实现这样的目标函数。

这通常被建模为分段线性函数 这对初学者来说可能有点吓人,但有一些公式可以解决这个问题。 它们通常使用二进制变量(或类似变量),因此更加困难。

公式集合在这里: https ://yetanothermathprogrammingconsultant.blogspot.com/2019/02/piecewise-linear-functions-and.html。 您可能需要首先关注方法 2,因为它使用的是二进制变量。 SOS1/SOS2 变量仅在更高端的求解器中可用。 抱歉,这并不像您想象的那么简单。

在某些情况下,这些分段线性函数不需要二进制变量。 例如,当事物保持凸面时。 如果较大的金额总是比较小的金额更贵(与折扣相反),则可能会出现这种情况。 另一个问题是,这些折扣的精确制定取决于细节,例如折扣是针对所有产品还是仅针对大于 1000 万美元的部分。 折扣计划在实践中会变得相当复杂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM