三维装箱算法matlab,三维装箱遗传算法matlab程序.pdf

253b171540df25e1b84436cbe50dfc72.gif三维装箱遗传算法matlab程序.pdf

基于基于遗传遗传模拟模拟退火退火算法算法的的三维三维装箱装箱问题问题研究研究 从计算复杂性理论来讲,装箱问题是一个 NP 难题,很难精确求解。目前的求 解方法主要是一些近似算法,如 NFNextFit近似算法、FFFirstFit近似算法、 FFDFirstFitDecreasing近似算法等。近似算法的求解结果与物品的体积数据有较 大关系,有时在极端情况下的求解结果很不理想。 本文以三维离线装箱问题为研究对象, 利用遗传算法和模拟退火算法集成的 思路对该问题进行求解,并编写程序代码在 Matlab 环境下进行实现。 1、 问题描述 假设有一批待装货物,它们有多种货物种类,每种货物的尺寸重量是不同的,对一 尺寸己知的集装箱进行装载。这里所面临的问题是在满足一定约束的条件下,需 要找到一种装箱方案进行装载,能够得到一种最佳的装载效果,这里指的是空间容 积率最高或者载重利用率达到最高。 2、 优化模型 优化模型中的目标函数值可以评价装箱方案的优劣, 本文考虑待装箱子的空间利 用率最大以及所使用箱子数目最小,目标函数规定为 其中 m 为所使用的箱子数目, Cmax 为一个足够大的常数, 在本文中取为 1000, 以保证 Cmax/m 为大于 1 的正数,后一项为箱子的空间利用率,u 为装箱方案 违背约束条件时的处罚值。 注帮人代写 matlab 程序,有问题请咨询 qq778961303 部分代码如下 Use 遗传模拟退火算法主程序 输入变量(可修改量) Box箱子的属性 Cargo货物的属性 order要求货物的装载次序 输出 bestLoadOrder具体装箱 author 怡宝 2 号 clc; clear; close all; tic 数据录入 Box2.33 1.78 2.197 5000; 货箱数据 长,宽,高,限重 Cargo0.94 0.68 0.39 0.249288 270.5 6;0.81 1.02 0.6 0.495720 896 2;. 0.81 1.02 0.70 0.578340 868 4;0.73 0.69 0.80 0.40296 240 2;. 1.20 0.72 0.72 0.622080 280 2;1.10 0.84 0.26 0.24024 80 1;. 0.80 0.74 0.72 0.426240 180 1;1.60 1.07 0.75 1.28400 774 12;. 1.19 1.11 1.08 1.426572 960 11;1.19 1.11 0.9 1.18810 800 10;. 1.40 1.16 1.20 1.948800 420 8;0.82 0.37 0.18 0.54612 40 5; 货物数 据 长度(m) 宽度(m) 高度(m) 体积(m3) 重量(kg) 数量 order6,3,11,7,8,5,1,2,4,9,10,12 cmax300; 所使用的箱子数参数 save Box Box save Cargo Cargo toc 模拟退火参数 tic T100; 初始温度 Tend1e-3; 终止温度 L5; 各温度下的迭代次数(链长) q0.8; 降温速率 G100; 遗传参数 Pc0.9; 交叉概率 Pm0.05; 变异概率 popsize20; retain10; GGAP0.9; 代沟 加载数据 load Box load Cargo NsizeCargo,1; 待装箱类别数 for i1popsize chromi,randpermN; 随机产生一个装箱顺序 end for i1popsize tempchromchromi,; RestSpace,LoadOrderIniOrdertempchrom,Box,Cargo; fitnessiFitFuncmax,RestSpace,LoadOrder,Box,tempchrom,order; end fitnessfitness; 计算迭代的次数 Time Timeceildoublesolve1000*0.8x,num2strTend; solve1000 *0.8x1e-3这样也可以 count0; 迭代计数 Obj; 目标值矩阵初始化 track; 每代的最优路线矩阵初始化 bestchrom; 迭代 while TTend countcount1; 更新迭代次数 temp; temp indexsortfitness,descend; chromchromindex,; chromonechrom1retain,; fitnessonetemp1retain,; chromtwochromretain1end,; 交叉操作 SelChRecombinchromtwo,Pc; 变异 SelChMutateSelCh,Pm; tempchrom; for i1sizeSelCh,1 tempchromSelChi,; RestSpace,LoadOrderIniOrdertempchrom,Box,Cargo; fitnesstwoi,FitFuncmax,RestSpace,LoadOrder,Box,tempchrom,order; end for k1L 产生新解 for j1popsize-retain newchromj,randpermN; end tempchrom; for i1popsize-retain tempchromnewchromi,; RestSpace,LoadOrderIniOrdertempchrom,Box,Cargo; newfitnessi,FitFuncmax,RestSpace,LoadOrder,Box,tempchrom,order; end newfitnessG-newfitness; for i1popsize-retain if newfitnessi,fitnesstwo SelChi,newchromi,; fitnesstwoi,G-newfitnessi,; elseif exp-newfitnessi,-fitnesstwoi,/T SelChi,newchromi,; fitnesstwoi,G-newfitnessi,; else 则原种群和解不变,即不接受模拟 退火的选择 end end end

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值