首页 > 编程语言 >基于模拟退火优化算法的三维装箱优化matlab仿真,优化重量利用率和空间利用率

基于模拟退火优化算法的三维装箱优化matlab仿真,优化重量利用率和空间利用率

时间:2023-05-31 22:12:29浏览次数:41  
标签:... end newsolution solution 算法 模拟退火 优化 利用率

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

 

2.算法涉及理论知识概要

      模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。

       模拟退火算法(Simulated Annealing,SA)最早的思想是由N. Metropolis [1]  等人于1953年提出。1983 年,S. Kirkpatrick 等成功地将退火思想引入到组合优化领域。它是基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。模拟退火算法是一种通用的优化算法,理论上算法具有概率的全局优化性能,目前已在工程中得到了广泛应用,诸如VLSI、生产调度、控制工程、机器学习、神经网络、信号处理等领域。

 

 

 

 

 

       甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。其通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。以提出者亨利·劳伦斯·甘特(Henry Laurence Gantt)先生的名字命名。

       甘特图以图示通过活动列表和时间刻度表示出特定项目的顺序与持续时间。一条线条图,横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况。直观表明计划何时进行,进展与要求的对比。便于管理者弄清项目的剩余任务,评估工作进度。

甘特图是以作业排序为目的,将活动与时间联系起来的最早尝试的工具之一,帮助企业描述工作中心、超时工作等资源的使用。

甘特图包含以下三个含义:

1、以图形或表格的形式显示活动;

2、通用的显示进度的方法;

3、构造时含日历天和持续时间,不将周末节假算在进度内。

简单、醒目、便于编制,在管理中广泛应用。

甘特图按内容不同,分为计划图表、负荷图表、机器闲置图表、人员闲置图表和进度表五种形式。

 

3.MATLAB核心程序

 

%重构箱子box: 重 长 宽 高 体积
for i=1:size(box,1)                          
    box(i,5)=prod(box(i,2:4),2);            
end
 
num_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; 
[final_solution,gbest] = GENE(pop,maxite,num_cargo,pm) ;  
 
%模拟退火进一步优化
T = T0;
Ra = [];
Rb = [];
Rc = [];
while T > T_End
    T
    for 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>gbest
            gbest = pbest;
            final_solution = newsolution;
            PG = NPG;
            PV = NPV;
            Scheme = NewScheme;
        else
            if  rand < exp( (pbest-gbest)*100*T0/T)
                gbest=pbest;
                final_solution=newsolution;
                PG = NPG;
                PV = NPV;
                Scheme = NewScheme;
            end
        end   
    end
    T = T * cooling;
    Ra = [Ra,gbest];
    Rb = [Rb,PG];
    Rc = [Rc,PV];
end
 
t1=smooth(Ra,32);
t2=smooth(Rb,32);
t3=smooth(Rc,32);
figure;
plot(1:10:length(Ra),t1(1:10:end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
legend('重量利用率');
figure;
plot(1:10:length(Rb),t2(1:10:end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
legend('空间利用率');
figure;
plot(1:10:length(Rc),t3(1:10:end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
legend('综合利用率');

 

  

 

标签:...,end,newsolution,solution,算法,模拟退火,优化,利用率
From: https://www.cnblogs.com/51matlab/p/17447464.html

相关文章

  • 基于ACGWO混沌灰狼优化算法的MATLAB对比仿真,对比标准的GWO
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要灰狼优化算法(GWO),灵感来自于灰狼.GWO算法模拟了自然界灰狼的领导层级和狩猎机制.四种类型的灰狼,如α,β,δ,w被用来模拟领导阶层。此外,还实现了狩猎的三个主要步骤:寻找猎物、包围猎物和攻击猎物。为了在......
  • 基于ACGWO混沌灰狼优化算法的MATLAB对比仿真,对比标准的GWO
    1.算法仿真效果matlab2022a仿真结果如下: 2.算法涉及理论知识概要       灰狼优化算法(GWO),灵感来自于灰狼.GWO算法模拟了自然界灰狼的领导层级和狩猎机制.四种类型的灰狼,如α,β,δ,w被用来模拟领导阶层。此外,还实现了狩猎的三个主要步骤:寻找猎物、包围猎物和攻......
  • SQL优化-主键优化
        ......
  • POJ2154(Pólya定理与欧拉函数优化)
    题目:Color 题意:将正n边形的n个顶点用n种颜色染色,问有多少种方案(答案modp,且可由旋转互相得到的算一种) 先说说Pólya定理设Q是n个对象的一个置换群,用m种颜色涂染这n个对象,一个对象涂任意一种颜色,则在Q作用下不等价的方案数为:   |Q|为置换群中置换的个数,为将置换q表示成不相杂......
  • NYOJ516(优化)
    题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=516 不能直接逐项快速幂计算。#include<iostream>#include<string.h>#include<stdio.h>#include<math.h>usingnamespacestd;typedeflonglongLL;constintN=10000005;constLLMOD=100......
  • 编译器绕过拷贝构造函数和返回值优化
    写在前面:在拷贝初始化(也就是用等号初始化,注意使用拷贝构造函数创建一个新的对象不属于拷贝初始化)过程中,编译器可以(但不是必须)跳过拷贝构造函数或者移动构造函数,直接创建对象。1stringnull_book="999";2//可以改写为3stringnull_book("999");这里面”999“隐式的转换为......
  • 我将性能提升了百分之20 —— 一次系统延迟优化案例
    一次系统延迟优化案例问题背景线上隔三差五晚上10点左右总会有sql报警出现,且是同样的sql,我们的sql报警是在应用程序内部通过对sql操作增加钩子函数,对sql前后执行的位置记录下时间戳,然后sql执行完毕后,对时间戳进行相减得到sql执行时长,大于1s则报警。晚上10点正好是我们的业务高峰......
  • 烂怂if-else代码优化方案
    0.问题概述代码可读性是衡量代码质量的重要标准,可读性也是可维护性、可扩展性的保证,因为代码是连接程序员和机器的中间桥梁,要对双边友好。Quora上有一个帖子:“Whataresomeofthemostbasicthingseveryprogrammershouldknow?”其中:Codethat’shardtounderstand......
  • SQL优化之EXPLAIN执行计划
    前言从今天开始本系列文章就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深,全面讲解数据库体系。非常适合零基础的小伙伴来学习。全文大约【1965】字,不说废话,只讲可以让你学到技术、明白原理的纯干......
  • 关于MySQL的一些优化(单表访问)
    以此表为例CREATETABLE`single_table`(`id`intNOTNULLAUTO_INCREMENT,`key1`varchar(100)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciNULLDEFAULTNULL,`key2`intNULLDEFAULTNULL,`key3`varchar(100)CHARACTERSETutf8mb4COLLATEutf8mb......