Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带分裂的多背包_Python_Algorithm_Knapsack Problem_Or Tools - Fatal编程技术网

Python 带分裂的多背包

Python 带分裂的多背包,python,algorithm,knapsack-problem,or-tools,Python,Algorithm,Knapsack Problem,Or Tools,我正在试图解决一个我认为是一个变化的问题 像经典的多背包问题一样,我有一组物品,每个物品都有一个重量和一个值,我试图将它们分成多个箱子,并找到具有最佳值的组合 但与古典音乐不同,我还需要以下内容: 某些存储箱可能不接受某些项目,例如:我有项目x和存储箱A、B和C。项目x只能添加到存储箱A和B中 物品可以分为两部分,一个100的物品可以分为两部分,这样就可以装两个50的箱子。注:所有数字都是整数 我的问题是: 这是一个已知的问题吗? 对我来说,它看起来类似于背包问题,但是这个变体有名字吗?

我正在试图解决一个我认为是一个变化的问题

像经典的多背包问题一样,我有一组物品,每个物品都有一个重量和一个值,我试图将它们分成多个箱子,并找到具有最佳值的组合

但与古典音乐不同,我还需要以下内容:

  • 某些存储箱可能不接受某些项目,例如:我有项目x和存储箱A、B和C。项目x只能添加到存储箱A和B中

  • 物品可以分为两部分,一个100的物品可以分为两部分,这样就可以装两个50的箱子。注:所有数字都是整数

我的问题是:

这是一个已知的问题吗? 对我来说,它看起来类似于背包问题,但是这个变体有名字吗?如果我知道这个问题的正确名称,我可以为它寻找解决方案

是否可以使用或工具的解算器进行求解? 我正在使用或工具来探索这个问题,但到目前为止,我还没有实现这个变体的任何运气


这不是家庭作业,我的项目实际上是我试图分配给投资箱的发票。

我认为这个问题更适合,也就是说,对每个(项目,箱)对使用boolvar和intvar,
boolbar=>intvar>0
not(boolvar)=>intvar==0
应该是一个很好的开端当你说一个项目可以被划分时。。。你是说它在某种程度上是无限可除的(比如一个实数),还是只可被整型分量所除?如果无限可除,我想这会变成一个LP,对吗?@JeffH我只处理整数,因为权重是可除的。。。如果箱子的数量相当大,发票的数量也很高,如果限制相当有限,我认为你可以用贪婪算法得到一个非常好的解决方案,它只包装高价值的东西,并根据需要在箱子之间划分,避免被禁止的,不是吗?否则,我认为这是可行的作为一个IP。你能把一个订单分成两个以上吗?我相信这个问题更适合,也就是说,对每个(项目,bin)对使用一个boolvar和一个intvar,
boolbar=>intvar>0
not(boolvar)=>intvar==0
应该是一个好的开始,当你说一个项目可以被分割时。。。你是说它在某种程度上是无限可除的(比如一个实数),还是只可被整型分量所除?如果无限可除,我想这会变成一个LP,对吗?@JeffH我只处理整数,因为权重是可除的。。。如果箱子的数量相当大,发票的数量也很高,如果限制相当有限,我认为你可以用贪婪算法得到一个非常好的解决方案,它只包装高价值的东西,并根据需要在箱子之间划分,避免被禁止的,不是吗?否则,我认为这是可行的作为一个IP。你能把一个订单分成两个以上吗?