2

我对 Python 中的 OR-TOOLS 很陌生。我已经制作了几个教程示例,但我在尝试为我的问题建模时遇到了问题。

让我们看看我们有一个装箱问题,我需要找到最少的箱子来容纳所有物品的重量。在这个典型问题中,我们希望最小化使用的 bin 数量。但是,假设我们有一个额外的目标:最大化垃圾箱的“质量”。问题来了:要评估那个箱子的质量,我们需要调用一个非线性函数来获取那个箱子里的物品并返回一个质量。我想我不能对 CP/SAT 使用多目标方法,因此我们可以对这两个目标进行加权建模。

因此,我面临的问题如下:

我不能将“质量”设置为变量,因为它取决于当前的解决方案(与垃圾箱关联的项目)

我怎样才能做到这一点?分配回调?可能吗?

4

1 回答 1

0

取决于“当前”的解决方案不是问题。您可以添加一个“质量”变量,该变量取决于表示 bin 及其内容的变量的值,并使用求解器的原语来计算所需的数量。

这可能不适用于任何函数,但求解器的原语确实允许某些形式的非线性计算(例如,您可以计算 abs(x) 或 x^2, ( ref ))。

因此,例如,您可以有一个质量变量来计算(使用的箱数)^2。

一旦你得到一种在求解器中工作的质量计算形式,你可以返回使用其中一种方法来求解多个目标,例如加权和。

于 2021-05-02T13:14:53.237 回答