Algorithm 包装问题

Algorithm 包装问题,algorithm,packing,Algorithm,Packing,我有以下问题: 我有一定数量的相同形状的不同颜色的物品(我知道每种颜色有多少) 我将这些物品包装到盒子中,每个盒子可以容纳给定数量(n)的物品,这样我就可以使用最少数量的盒子:四舍五入(物品总数/n) 有一些颜色我不允许放在一个盒子里,除非我不能有理想数量的盒子 每种颜色的物品数量最少(每种颜色不同),我可以放在一个盒子里。也就是说,我可以决定把一种颜色的0件装进一个盒子里,或者至少装k件或以上。如果无法使用最少数量的箱子进行包装,也可能会破坏该约束(尽可能少的次数) 我想找到一个解决方案,尽可

我有以下问题:

  • 我有一定数量的相同形状的不同颜色的物品(我知道每种颜色有多少)
  • 我将这些物品包装到盒子中,每个盒子可以容纳给定数量(n)的物品,这样我就可以使用最少数量的盒子:四舍五入(物品总数/n)
  • 有一些颜色我不允许放在一个盒子里,除非我不能有理想数量的盒子
  • 每种颜色的物品数量最少(每种颜色不同),我可以放在一个盒子里。也就是说,我可以决定把一种颜色的0件装进一个盒子里,或者至少装k件或以上。如果无法使用最少数量的箱子进行包装,也可能会破坏该约束(尽可能少的次数)
  • 我想找到一个解决方案,尽可能少的颜色之间的方块分割
  • 我认为这是一种包装问题,但我不知道是哪一种

    请建议将上述问题转换为哪种布局问题和/或我可以用来解决此问题的算法。

    这可能是NP难问题

    划分问题(对于正整数)似乎归结为它

    给定一个正整数数组A[1,…n],我们需要找到其中某个子集与其补码具有相同的和

    考虑你的颜色是1比n。你有两个盒子。一个盒子可以容纳的颜色i的最小值是a[i],并且您正好有a[i]个颜色i的项目

    每个盒子可以容纳的最大项目数是(A[1]+..+A[n])/2。

    这可能是NP难的

    划分问题(对于正整数)似乎归结为它

    给定一个正整数数组A[1,…n],我们需要找到其中某个子集与其补码具有相同的和

    考虑你的颜色是1比n。你有两个盒子。一个盒子可以容纳的颜色i的最小值是a[i],并且您正好有a[i]个颜色i的项目


    每个框可以容纳的最大项数为(A[1]+..+A[n])/2。

    看起来像是一个NP难约束满足问题。你会有这样的硬约束和软约束

    内置约束:

    • 我有一定数量的相同形状的不同颜色的物品(我知道每种颜色有多少)
    硬约束:

    • 有些颜色我不能放在一个盒子里

    • 每种颜色的物品数量最少(每种颜色不同),我可以放在一个盒子里。也就是说,我可以决定把一种颜色的0件装进一个盒子里,或者至少装k件或以上

    软约束:

    • 我将这些物品包装到盒子中,每个盒子可以容纳给定数量(n)的物品,这样我就可以使用最少数量的盒子:四舍五入(物品总数/n)
    软约束(或真正的低权重软约束):

    • 我想找到一个解决方案,尽可能少的颜色之间的方块分割
    关于解决这个问题的算法,请看一下模拟退火、禁忌搜索、分枝定界


    对于实现此类算法并支持约束的软件,请看一看(java,开源)。

    看起来像一个NP难约束满足问题。你会有这样的硬约束和软约束

    内置约束:

    • 我有一定数量的相同形状的不同颜色的物品(我知道每种颜色有多少)
    硬约束:

    • 有些颜色我不能放在一个盒子里

    • 每种颜色的物品数量最少(每种颜色不同),我可以放在一个盒子里。也就是说,我可以决定把一种颜色的0件装进一个盒子里,或者至少装k件或以上

    软约束:

    • 我将这些物品包装到盒子中,每个盒子可以容纳给定数量(n)的物品,这样我就可以使用最少数量的盒子:四舍五入(物品总数/n)
    软约束(或真正的低权重软约束):

    • 我想找到一个解决方案,尽可能少的颜色之间的方块分割
    关于解决这个问题的算法,请看一下模拟退火、禁忌搜索、分枝定界


    对于实现此类算法和支持约束的软件,请看一看(java,开源)。

    我已经去掉了人工智能标签:这与AI有什么关系?奇怪。我不想在这个问题上贴人工智能标签。不管怎样,谢谢你修好了。对不起,不是你。它后来被其他人编辑了。@笨蛋,我没有添加AI标签,但顺便说一句,垃圾箱装箱问题需要一个搜索算法,根据维基百科(和这里的大多数人)的说法,这个算法被认为是人工智能算法@Geoff:我认为根据可能的解决方案所使用的技术来开始标记问题是个坏主意。标签是用来提问的。通过给它贴上人工智能标签,你只会减少你可能得到的答案。此外,人工智能大量使用这些技术并不意味着它是一种人工智能算法。例如A*被人工智能大量使用,你不能称之为人工智能算法。不管怎样……我已经去掉了人工智能的标签:这和人工智能有什么关系?奇怪。我不想在这个问题上贴人工智能标签。不管怎样,谢谢你修好了。对不起,不是你。它后来被其他人编辑了。@笨蛋,我没有添加AI标签,但顺便说一句,垃圾箱装箱问题需要一个搜索算法,根据维基百科(和这里的大多数人)的说法,这个算法被认为是人工智能算法@Geoff:我认为根据可能的解决方案所使用的技术来开始标记问题是个坏主意。标签是用来提问的。通过给它贴上人工智能标签,你只会减少你可能得到的答案。贝西德