简介

三维装箱问题考虑三个因素——一般指长、宽、高。装车、装船、装集装箱等要考虑这三个维度都不能超。
优化模型优化模型中的目标函数值可以评价装箱方案的优劣,本文考虑待装箱子的空间利用率最大以及所使用箱子数目最小,目标函数规定为:

其中:m为所使用的箱子数目,cmax为一个足够大的常数,在本文中取为1000,以保证Cmax/m为大于1的正数,后一项为箱子的空间利用率,u为装箱方案违背约束条件时的处罚值。

主程序

clc
clear all
global box; global cargo; global lambda; global num_cargo;global num_box;global solution;%-------------------------------控制参数---------------------------lambda = 0.5;       % 重量利用率权重T0 = 100;           % 初始温度
T_End = 1;          % 终止温度
metropolis = 100;   % 退火算法中 metropolis链长度
cooling = 0.98;     % 降温系数pop = 20;           %遗传算法染色体数
maxite = 100;       %遗传最大迭代次数
pm = 0.1;           %遗传变异概率
%--------------------------------------------------------------------%----------------------------初始化:读取货箱信息 ----------------------------
orginal_cargo=load('cargo');box=load('box');
count=1;
for i=1:size(orginal_cargo,1)           %重构货物格式  cargo: 重 长 宽 高 体积 ;其中 长>宽>高for j=1:orginal_cargo(i,2)cargo(count,1:4) = orginal_cargo(i,3:6);cargo(count,5) = prod(cargo(count,2:4),2); cargo(count,2:4) = sort(cargo(count,2:4),'descend');count=count+1;end
end
for i=1:size(box,1)                          %重构箱子box: 重 长 宽 高 体积box(i,5)=prod(box(i,2:4),2);
endnum_cargo=size(cargo,1);  % 货物数
num_box=size(box,1);      % 货箱数solution= fix((num_box)*rand(1,num_cargo))+1;   %随机生成初始解
Scheme=transform(solution);                     %解转化成“货箱:货物”对应的形式
[feas_solution,Scheme]= placement(Scheme);             %装箱处理
[PG,PV,gbest ]= evaluate(feas_solution) ;      %计算适应度%--------------------------------------------------------------------%----------------------------退火------------------------
begin=cputime;   %开始计时%遗传算法优化     GENE(染色体数/种群规模,最大迭代次数,染色体长度/维度,变异概率)
[final_solution,gbest]=GENE(pop,maxite,num_cargo,pm) ;  %遗传执行完毕后  模拟退火进一步优化
T = T0;
while T > T_Endfor i=1:metropolis%-----------随机交换两件货物生成新解newsolution=final_solution;R1=fix(rand*num_cargo)+1;R2=fix(rand*num_cargo)+1;inter=newsolution(R1);newsolution(R1)=newsolution(R2);newsolution(R2)=inter;NewScheme=transform(newsolution);                   % 分配货箱[feas_solution,NewScheme]= placement(NewScheme);              % 装箱处理[NPG,NPV,pbest ]= evaluate(feas_solution);            % 评估新方案if pbest>gbestgbest = pbest;final_solution = newsolution;PG = NPG;PV = NPV;Scheme = NewScheme;elseif  rand < exp( (pbest-gbest)*100*T0/T)gbest=pbest;final_solution=newsolution;PG = NPG;PV = NPV;Scheme = NewScheme;endend   endT = T * cooling;
endtimecost = cputime-begin;   %计时结束%----------------------------输出结果------------------------
result(Scheme,15);      %将装箱方案Scheme 按每行15个货物显示fprintf('重量利用率:\t%5.3f %%\n',PG*100);
fprintf('空间利用率:\t%5.3f %%\n',PV*100);
fprintf('综合利用率:\t%5.3f %%\n',gbest*100);
fprintf('计算时间:\t\t%5.4f s\n',timecost);
disp('图像生成中...')
depict( Scheme, 1,'c' )   %    ( 方案,画出编号为i箱子,颜色) 颜色:r\g\b\c\m\y\k\w

运行结果


如需代码可查看我的资源下载

https://download.csdn.net/download/weixin_46567845/19274867

matlab三维集装3D container箱装箱优化【matlab优化算法七】相关推荐

  1. matlab三维路径规划,【路径规划】基于A星算法的三维路径规划matlab源码

    %% 该函数用于演示基于A_Star算法的三维路径规划算法 %% 清空环境 clc clear %% 数据初始化 %下载数据 starttime=cputime; load HeightData z ...

  2. matlab三维图与二维图画在一起,matlab 画二维图与三维图

    C#_技巧:计算代码块运行的时间 System.Diagnostics下类Stopwatch,给程序代码块运行计时, 利用start()和stop()方法来标记代码快. 该命名空间下还有一些其他类,可 ...

  3. MATLAB三维绘图基础meshgrid函数的用法解析

    MATLAB三维绘图基础meshgrid函数的用法解析   MATLAB中meshgrid函数是用来生成网格的,函数用法是:   [X,Y] = meshgrid(x,y);这种是最常用的一种用法.x ...

  4. matlab以空间的点画球,3D空间画空洞小球Matlab程序

    3D空间画空洞小球Matlab程序 3D空间画空洞小球Matlab程序 有时候在三维空间中,需要画出很多的空洞小球.可以使用入戏的代码! clear all clc; [x,y,z]=sphere(1 ...

  5. CVPR2020论文解读:三维语义分割3D Semantic Segmentation

    CVPR2020论文解读:三维语义分割3D Semantic Segmentation xMUDA: Cross-Modal Unsupervised Domain Adaptation for 3D ...

  6. matlab中三视图如何画,[matlab 三维图]怎样把三维图导入到MATLAB

    怎样把三维图导入到MATLAB ●数据导入方法很多,要看你放在什么地方了. 画图用plot3(x,y,z)就行了 怎么在MATLAB三维图上标注坐标轴名称和图的标题? 问题补充:二维的时候我就把plo ...

  7. matlab 三维 作图 坐标轴_matlab三维画图

    matlab三维画图主要有三个命令:plot3命令.mesh命令和surf命令. plot3plot3是三维画图的基本函数,绘制的是最为主要的3D曲线图,最主要的调用格式是: plot3(X,Y,Z) ...

  8. 两个同时comet matlab,matlab 三维绘制

    1. mesh(Z)语句 mesh(Z)语句可以给出矩阵Z元素的三维消隐图,网络表面由Z坐标点定义,与前面叙述的x-y平面的线格相同,图形由邻近的点连接而成.它可用来显示用其它方式难以输出的包含大量数 ...

  9. matlab三维绘图poly,matplotlib绘制三维图形mplot3d(包含Mayavi.mlab模块)

    http://blog.csdn.net/pipisorry/article/details/40008005 Matplotlib mplot3d 工具包简介 The mplot3d toolkit ...

最新文章

  1. 2022-2028年中国橡胶手套行业市场研究及前瞻分析报告
  2. 树莓派 Ubuntu mate 18.04 下开启vncserver
  3. 【译】x86程序员手册37-第10章 初始化
  4. Nginx正向与反向代理
  5. Spring中监听器的详解
  6. php1.9,PHP1.9--数组
  7. Leetcode 刷题笔记(十三) —— 二叉树篇之二叉树的层序遍历及相关题目
  8. jmeter连接mysql时jdbc下载
  9. 兴奋!北大嵩天教授Python零基础入门教程全套,可以下载啦
  10. 博客园编辑器为Markdown时改变图片大小
  11. Unity开发手游在Android平台的内存优化
  12. 粒子滤波 机器学习_用机器学习研究粒子物理学中的开放性问题
  13. 【python】GIL是什么?
  14. 数据库隔离级别发展史
  15. php 手机号码三要素实名查询
  16. 诊所信息化武器——医号馆基层医疗信息化系统!
  17. 浅谈CRM核心理念和运营
  18. mac更换apple id_如何使用Mac在Apple TV上截屏
  19. 小巧的截屏软件Greenshot
  20. NW.js 和 Electron 优缺点分析对比

热门文章

  1. 考研计算机专业复试问题汇总——操作系统(王道408)
  2. JSON的简单介绍以及C语言的JSON库使用
  3. 抠图中的前景蒙版(alpha matte)与掩膜(mask)的区别
  4. 关于硬盘低级格式化与安装系统的那些事
  5. 520到了,是时候展示真正的技术了,程序猿的浪漫代码集合
  6. PPT科研作图①——生成发表级别的高清图片
  7. Mybatis-分页插件
  8. Codeforces 575C 状压+KM
  9. MySQL 性能优化 - 单表查询优化
  10. 10分钟能充50%?七大快速充电技术盘点