您现在的位置:首页 >> 智能优化 >> 内容

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

时间:2023/3/27 21:50:28 点击:

  核心提示:A567,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJeTk5pu

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览





3.算法概述

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

4.部分源码

.......................................................................... 

%重构箱子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('综合利用率');

A567

....................................................................

作者:我爱C编 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168