• 【设备布局】基于粒子群优化算法的设备布局设计研究(Matlab代码实现)


    目录

    1 概述

    2设备布局设计相关概念

    3 运行结果

    4 结论

    5 Matlab代码及文章讲解 


    1 概述

    我国制造系统的设备布局设计过程中如何可以更加高效准确的计算得到设备布局设计结果是十分重要的,并且智能优化算法的因素是当前增加我国制造业在国际市场上的竞争力的主要因素。而智能优化算法可以帮助设备在不同生产条件、制作人员人数不同、制造产品标准等不同数值进行计算,得到更加合理的设备布局设计,在物流运输成本、产品生产效率和产品生产质量等得到提高"。

    本文主要研究了在设备布局设计中应用智能优化算法所带来的优势。首先,本文介绍了相关智能优化算法,帮助对其来源及工作原理等进行深度理解。然后,本文通过设备布局设计的相关概念进行介绍,加深对所要解决的布局设计问题的理解。最后,本文通过粒子群优化算法算法在设备布局设计中的应用为例,表明智能优化算法在设备布局设计中解决问题的优势。

    2设备布局设计相关概念

    设备布局设计是指将生产设备和辅助设备根据场地、功能和协作配合等将相关设备管道等进行合理的安排放置,保障企业生产工作可以正确顺利的开展,并且资源相互传递过程中出现的物流成本和时效等都可以做到最小化的设计。而在此过程中最重要的两个因素是设备的位置和场地的面积。设备布局设计是空间组织问题,通过计算将设备进行搭配,完成生产链的循环,减少工业废物的出现,增加产品的利用率,提升生产效率,节约生产成本,使得制造企业的经济利益最大化。

    3 运行结果


     

    部分代码:

    1. clc;
    2. clear;
    3. close all;
    4. %% Problem Definition
    5. model=CreateModel(); % Create Model
    6. CostFunction=@(sol1) MyCost(sol1,model); % Cost Function
    7. Vars.xhat.Min=0;
    8. Vars.xhat.Max=1;
    9. Vars.xhat.Size=[1 model.n];
    10. Vars.xhat.Count=prod(Vars.xhat.Size);
    11. Vars.xhat.VelMax=0.1*(Vars.xhat.Max-Vars.xhat.Min);
    12. Vars.xhat.VelMin=-Vars.xhat.VelMax;
    13. Vars.yhat.Min=0;
    14. Vars.yhat.Max=1;
    15. Vars.yhat.Size=[1 model.n];
    16. Vars.yhat.Count=prod(Vars.yhat.Size);
    17. Vars.yhat.VelMax=0.1*(Vars.yhat.Max-Vars.yhat.Min);
    18. Vars.yhat.VelMin=-Vars.yhat.VelMax;
    19. Vars.rhat.Min=0;
    20. Vars.rhat.Max=1;
    21. Vars.rhat.Size=[1 model.n];
    22. Vars.rhat.Count=prod(Vars.rhat.Size);
    23. Vars.rhat.VelMax=0.1*(Vars.rhat.Max-Vars.rhat.Min);
    24. Vars.rhat.VelMin=-Vars.rhat.VelMax;
    25. %% PSO Parameters
    26. MaxIt=500; % Maximum Number of Iterations
    27. nPop=50; % Population Size (Swarm Size)
    28. w=1.0; % Inertia Weight
    29. wdamp=0.99; % Inertia Weight Damping Ratio
    30. c1=0.7; % Personal Learning Coefficient
    31. c2=1.5; % Global Learning Coefficient
    32. % % Constriction Coefficients
    33. % phi1=2.05;
    34. % phi2=2.05;
    35. % phi=phi1+phi2;
    36. % chi=2/(phi-2+sqrt(phi^2-4*phi));
    37. % w=chi; % Inertia Weight
    38. % wdamp=1; % Inertia Weight Damping Ratio
    39. % c1=chi*phi1; % Personal Learning Coefficient
    40. % c2=chi*phi2; % Global Learning Coefficient
    41. %% Initialization
    42. empty_particle.Position=[];
    43. empty_particle.Cost=[];
    44. empty_particle.Sol=[];
    45. empty_particle.Velocity=[];
    46. empty_particle.Best.Position=[];
    47. empty_particle.Best.Cost=[];
    48. empty_particle.Best.Sol=[];
    49. particle=repmat(empty_particle,nPop,1);
    50. GlobalBest.Cost=inf;
    51. for i=1:nPop
    52. % Initialize Position
    53. particle(i).Position=CreateRandomSolution(model);
    54. % Initialize Velocity
    55. particle(i).Velocity.xhat=zeros(Vars.xhat.Size);
    56. particle(i).Velocity.yhat=zeros(Vars.yhat.Size);
    57. particle(i).Velocity.rhat=zeros(Vars.rhat.Size);
    58. % Evaluation
    59. [particle(i).Cost, particle(i).Sol]=CostFunction(particle(i).Position);
    60. % Update Personal Best
    61. particle(i).Best.Position=particle(i).Position;
    62. particle(i).Best.Cost=particle(i).Cost;
    63. particle(i).Best.Sol=particle(i).Sol;
    64. % Update Global Best
    65. if particle(i).Best.Cost<GlobalBest.Cost
    66. GlobalBest=particle(i).Best;
    67. end
    68. end
    69. BestCost=zeros(MaxIt,1);
    70. %% PSO Main Loop
    71. for it=1:MaxIt
    72. for i=1:nPop
    73. % ---- Motion on xhat
    74. % Update Velocity
    75. particle(i).Velocity.xhat = w*particle(i).Velocity.xhat ...
    76. +c1*rand(Vars.xhat.Size).*(particle(i).Best.Position.xhat-particle(i).Position.xhat) ...
    77. +c2*rand(Vars.xhat.Size).*(GlobalBest.Position.xhat-particle(i).Position.xhat);
    78. % Apply Velocity Limits
    79. particle(i).Velocity.xhat = max(particle(i).Velocity.xhat,Vars.xhat.VelMin);
    80. particle(i).Velocity.xhat = min(particle(i).Velocity.xhat,Vars.xhat.VelMax);
    81. % Update Position
    82. particle(i).Position.xhat = particle(i).Position.xhat + particle(i).Velocity.xhat;
    83. % Velocity Mirror Effect
    84. IsOutside=(particle(i).Position.xhat<Vars.xhat.Min | particle(i).Position.xhat>Vars.xhat.Max);
    85. particle(i).Velocity.xhat(IsOutside)=-particle(i).Velocity.xhat(IsOutside);
    86. % Apply Position Limits
    87. particle(i).Position.xhat = max(particle(i).Position.xhat,Vars.xhat.Min);
    88. particle(i).Position.xhat = min(particle(i).Position.xhat,Vars.xhat.Max);
    89. % ---- Motion on yhat
    90. % Update Velocity
    91. particle(i).Velocity.yhat = w*particle(i).Velocity.yhat ...
    92. +c1*rand(Vars.yhat.Size).*(particle(i).Best.Position.yhat-particle(i).Position.yhat) ...
    93. +c2*rand(Vars.yhat.Size).*(GlobalBest.Position.yhat-particle(i).Position.yhat);
    94. % Apply Velocity Limits
    95. particle(i).Velocity.yhat = max(particle(i).Velocity.yhat,Vars.yhat.VelMin);
    96. particle(i).Velocity.yhat = min(particle(i).Velocity.yhat,Vars.yhat.VelMax);
    97. % Update Position
    98. particle(i).Position.yhat = particle(i).Position.yhat + particle(i).Velocity.yhat;
    99. % Velocity Mirror Effect
    100. IsOutside=(particle(i).Position.yhat<Vars.yhat.Min | particle(i).Position.yhat>Vars.yhat.Max);
    101. particle(i).Velocity.yhat(IsOutside)=-particle(i).Velocity.yhat(IsOutside);
    102. % Apply Position Limits
    103. particle(i).Position.yhat = max(particle(i).Position.yhat,Vars.yhat.Min);
    104. particle(i).Position.yhat = min(particle(i).Position.yhat,Vars.yhat.Max);
    105. % ---- Motion on rhat
    106. % Update Velocity
    107. particle(i).Velocity.rhat = w*particle(i).Velocity.rhat ...
    108. +c1*rand(Vars.rhat.Size).*(particle(i).Best.Position.rhat-particle(i).Position.rhat) ...
    109. +c2*rand(Vars.rhat.Size).*(GlobalBest.Position.rhat-particle(i).Position.rhat);
    110. % Apply Velocity Limits
    111. particle(i).Velocity.rhat = max(particle(i).Velocity.rhat,Vars.rhat.VelMin);
    112. particle(i).Velocity.rhat = min(particle(i).Velocity.rhat,Vars.rhat.VelMax);
    113. % Update Position
    114. particle(i).Position.rhat = particle(i).Position.rhat + particle(i).Velocity.rhat;
    115. % Velocity Mirror Effect
    116. IsOutside=(particle(i).Position.rhat<Vars.rhat.Min | particle(i).Position.rhat>Vars.rhat.Max);
    117. particle(i).Velocity.rhat(IsOutside)=-particle(i).Velocity.rhat(IsOutside);
    118. % Apply Position Limits
    119. particle(i).Position.rhat = max(particle(i).Position.rhat,Vars.rhat.Min);
    120. particle(i).Position.rhat = min(particle(i).Position.rhat,Vars.rhat.Max);
    121. % Evaluation
    122. [particle(i).Cost, particle(i).Sol] = CostFunction(particle(i).Position);
    123. % Apply Mutation
    124. NewParticle=particle(i);
    125. NewParticle.Position = Mutate(particle(i).Position, Vars);
    126. [NewParticle.Cost, NewParticle.Sol]=CostFunction(NewParticle.Position);
    127. if NewParticle.Cost<=particle(i).Cost || rand < 0.2
    128. particle(i)=NewParticle;
    129. end
    130. % Update Personal Best
    131. if particle(i).Cost<particle(i).Best.Cost
    132. particle(i).Best.Position=particle(i).Position;
    133. particle(i).Best.Cost=particle(i).Cost;
    134. particle(i).Best.Sol=particle(i).Sol;
    135. % Update Global Best
    136. if particle(i).Best.Cost<GlobalBest.Cost
    137. GlobalBest=particle(i).Best;
    138. end
    139. end
    140. end
    141. % Apply Local Search (Improvement) to Global Best
    142. NewParticle=GlobalBest;
    143. NewParticle.Position=ImproveSolution(GlobalBest.Position,model,Vars);
    144. [NewParticle.Cost, NewParticle.Sol]=CostFunction(NewParticle.Position);
    145. if NewParticle.Cost<=GlobalBest.Cost
    146. GlobalBest=NewParticle;
    147. end
    148. BestCost(it)=GlobalBest.Cost;
    149. if GlobalBest.Sol.IsFeasible
    150. FLAG=' (Feasible)';
    151. else
    152. FLAG='';
    153. end
    154. disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it)) FLAG]);
    155. w=w*wdamp;
    156. % Plot Solution
    157. figure(1);
    158. PlotSolution(GlobalBest.Sol,model);
    159. pause(0.01);
    160. end
    161. BestSol = GlobalBest;
    162. %% Results
    163. figure;
    164. plot(BestCost,'Color','r','LineWidth',2);
    165. xlabel('迭代次数');
    166. ylabel('最优解');
    167. grid on;

    部分理论引用网络文献,如有侵权请联系删除。 

    4 结论

    随着我国科技和制造工业的不断大跨步迈进,我国对制造系统所提的要求和施加的压力都比较之前更加严重,而在科技使得我国智能优化算法在此过程中可以帮助制造系统的设备布局计算过程可以更快更准确的得到结果。因此,本文详细的研究备布局设计中应用智能优化算法中的所能起到的作用及其优势。

    5 Matlab代码及文章讲解 

  • 相关阅读:
    实验三-----数据库
    java基础知识一
    Android studio 实现生成二维码和扫描二维码
    堆的实现+堆的应用(堆排序和Topk)
    COO、CSR、adj_coo、adj_csr详解:稀疏矩阵与稀疏邻接矩阵的存储格式及转换
    java 企业工程管理系统软件源码 自主研发 工程行业适用
    优思学院|统计过程控制SPC的两大作用
    【Node.js】-闲聊:前端框架发展史
    Kafka核心组件详解
    软件测试 -- 入门 4 软件测试原则
  • 原文地址:https://blog.csdn.net/weixin_46039719/article/details/126910547