首页 新闻 会员 周边 捐助

装箱或背包问题? (或者遗传算法解决)

0
悬赏园豆:100 [待解决问题]

 共有三个箱子分别容量为200、500、1000 ;物品有四个重量分别为150、200、300、800;
  要求一次装箱把所有物品装完、箱子可以有空的,请问一共有多少种算法?
 
  输出例子:
            第一种装箱 :  箱子:1000         500             200        利用率:90%
                                物品:800+200   300+150     0
 
            第二种装箱 :  箱子:1000         500             200        利用率:95%
                                物品:800+150   300+200     0
 
            第三种装箱 :  箱子:1000         500             200        利用率:78%
                                物品:800           300+200     150

            第四种装箱 :  箱子:1000         500             200        利用率:85%
                                物品:800           300+150     200

_陈晨的主页 _陈晨 | 初学一级 | 园豆:104
提问于:2018-08-05 13:01
< >
分享
所有回答(3)
0

这个例子太简单,都不用什么算法,800只能在第三个箱子,300只能在第二个箱子。也就150和200在3个位置的选,因为重量不一样有顺序:A32 = 3*2。

禾勿 | 园豆:222 (菜鸟二级) | 2018-08-06 18:07

这只是箱子和物品少的情况,要是数量多不能口算咧,逻辑都知道,问题是不好实现代码。

支持(0) 反对(0) _陈晨 | 园豆:104 (初学一级) | 2018-08-06 18:34

@_陈晨: 看到这题目我第一个想到的就是迷宫求解,给你提供一个穷举法,用递归的思想来解决。 代码随便写的,方便理解思路,

function findPathCount (blockList, boxList){
    //排序将块按重量从小到大排序,箱子从小到大排序
    sortBlock(blockList);
    sortBoxList(boxList);
    var pathCount = 0;
    //取出最大的块
    var currentBlock = blockList.pop();
    //计算次数
    for(var countBox = 0;countBox < boxList.length;countBox++) {
        //当前块的重量小于箱子的最大容量,则计算路径数量
        if(currentBlock.weight < boxList[countBox].capacity)
        {
            //如果没有多余的块,满足条件,合理路径+1
            if(blockList.length == 0){
                pathCount += 1;
            }
            else {
                //将箱子数组复制一份,方便递归计算
                var copyBox = boxList.copy();
                copyBox[countBox].capacity = copyBox[countBox].capacity - currentBlock.weight
                pathCount += findPathCount(blockList,copyBox);
            }
        }
    }
    return pathCount;
}
支持(0) 反对(0) 禾勿 | 园豆:222 (菜鸟二级) | 2018-08-07 09:30

@Gtctuo:谢谢你的建议和方法,但是还是感觉不对,要求最大利用率和多种装箱方式。

支持(1) 反对(0) _陈晨 | 园豆:104 (初学一级) | 2018-08-07 17:46
0

自己慢慢琢磨把

_陈晨 | 园豆:104 (初学一级) | 2018-08-09 13:41
0

多背包问题,可用遗传算法

GR- | 园豆:202 (菜鸟二级) | 2019-10-30 16:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册