国产aaaa级全身裸体精油片_337p人体粉嫩久久久红粉影视_一区中文字幕在线观看_国产亚洲精品一区二区_欧美裸体男粗大1609_午夜亚洲激情电影av_黄色小说入口_日本精品久久久久中文字幕_少妇思春三a级_亚洲视频自拍偷拍

首頁(yè) > 行業(yè)資訊 > 【優(yōu)化布局】基于粒子群算法求解帶出入點(diǎn)的車間布局優(yōu)化問(wèn)題附matlab代碼

【優(yōu)化布局】基于粒子群算法求解帶出入點(diǎn)的車間布局優(yōu)化問(wèn)題附matlab代碼

時(shí)間:2022-07-25 來(lái)源: 瀏覽:

【優(yōu)化布局】基于粒子群算法求解帶出入點(diǎn)的車間布局優(yōu)化問(wèn)題附matlab代碼

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主簡(jiǎn)介:擅長(zhǎng)智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)、信號(hào)處理、元胞自動(dòng)機(jī)、圖像處理、路徑規(guī)劃、無(wú)人機(jī)等多種領(lǐng)域的Matlab仿真,完整matlab代碼或者程序定制加qq1575304183。

收錄于合集 #智能優(yōu)化算法及應(yīng)用 494個(gè)

1 內(nèi)容介紹

為降低車間內(nèi)設(shè)備間的物料搬運(yùn)成本,將粒子群優(yōu)化算法與經(jīng)典的系統(tǒng)化布置設(shè)計(jì)法相結(jié)合,以設(shè)備間的搬運(yùn)成本為目標(biāo),求解面向車間布局的連續(xù)空間優(yōu)化問(wèn)題。在問(wèn)題建模時(shí)采用二維向量表述設(shè)備的連續(xù)空間位置;引入系統(tǒng)化布置設(shè)計(jì)法對(duì)初始粒子群進(jìn)行優(yōu)化,在保證初始粒子群有效性的基礎(chǔ)上提高了算法的尋優(yōu)速度和精度;通過(guò)對(duì)加速系數(shù)和慣性系數(shù)的設(shè)定,提高了粒子群優(yōu)化算法的尋優(yōu)質(zhì)量。通過(guò)實(shí)例驗(yàn)證了所提方法可以有效提高粒子群算法在連續(xù)空間布局問(wèn)題上的優(yōu)化性能。

2 仿真代碼

clc; clear; close all; %% Problem Definition model = CreateModel(); % Create Model CostFunction = @(sol1) MyCost(sol1,model); % Cost Function Vars.xhat.Min = 0; Vars.xhat.Max = 1; Vars.xhat.Size = [1 model.n]; Vars.xhat.Count = prod(Vars.xhat.Size); Vars.xhat.VelMax = 0.1*(Vars.xhat.Max-Vars.xhat.Min); Vars.xhat.VelMin = -Vars.xhat.VelMax; Vars.yhat.Min = 0; Vars.yhat.Max = 1; Vars.yhat.Size = [1 model.n]; Vars.yhat.Count = prod(Vars.yhat.Size); Vars.yhat.VelMax = 0.1*(Vars.yhat.Max-Vars.yhat.Min); Vars.yhat.VelMin = -Vars.yhat.VelMax; Vars.rhat.Min = 0; Vars.rhat.Max = 1; Vars.rhat.Size = [1 model.n]; Vars.rhat.Count = prod(Vars.rhat.Size); Vars.rhat.VelMax = 0.1*(Vars.rhat.Max-Vars.rhat.Min); Vars.rhat.VelMin = -Vars.rhat.VelMax; %% PSO Parameters MaxIt = 500; % Maximum Number of Iterations nPop = 50; % Population Size (Swarm Size) w = 1.0; % Inertia Weight wdamp = 0.99; % Inertia Weight Damping Ratio c1 = 0.7; % Personal Learning Coefficient c2 = 1.5; % Global Learning Coefficient % % Constriction Coefficients % phi1=2.05; % phi2=2.05; % phi=phi1+phi2; % chi=2/(phi-2+sqrt(phi^2-4*phi)); % w=chi; % Inertia Weight % wdamp=1; % Inertia Weight Damping Ratio % c1=chi*phi1; % Personal Learning Coefficient % c2=chi*phi2; % Global Learning Coefficient %% Initialization empty_particle.Position = []; empty_particle.Cost = []; empty_particle.Sol = []; empty_particle.Velocity = []; empty_particle.Best.Position = []; empty_particle.Best.Cost = []; empty_particle.Best.Sol = []; particle = repmat(empty_particle,nPop,1); GlobalBest.Cost = inf; for i=1:nPop % Initialize Position particle(i).Position = CreateRandomSolution(model); % Initialize Velocity particle(i).Velocity.xhat = zeros(Vars.xhat.Size); particle(i).Velocity.yhat = zeros(Vars.yhat.Size); particle(i).Velocity.rhat = zeros(Vars.rhat.Size); % Evaluation [particle(i).Cost, particle(i).Sol]=CostFunction(particle(i).Position); % Update Personal Best particle(i).Best.Position = particle(i).Position; particle(i).Best.Cost = particle(i).Cost; particle(i).Best.Sol = particle(i).Sol; % Update Global Best if particle(i).Best.Cost<GlobalBest.Cost GlobalBest = particle(i).Best; end end BestCost = zeros(MaxIt,1); %% PSO Main Loop for it=1:MaxIt for i=1:nPop % ---- Motion on xhat % Update Velocity particle(i).Velocity.xhat = w*particle(i).Velocity.xhat ... +c1*rand(Vars.xhat.Size).*(particle(i).Best.Position.xhat-particle(i).Position.xhat) ... +c2*rand(Vars.xhat.Size).*(GlobalBest.Position.xhat-particle(i).Position.xhat); % Apply Velocity Limits particle(i).Velocity.xhat = max(particle(i).Velocity.xhat,Vars.xhat.VelMin); particle(i).Velocity.xhat = min(particle(i).Velocity.xhat,Vars.xhat.VelMax); % Update Position particle(i).Position.xhat = particle(i).Position.xhat + particle(i).Velocity.xhat; % Velocity Mirror Effect IsOutside = (particle(i).Position.xhat<Vars.xhat.Min | particle(i).Position.xhat>Vars.xhat.Max); particle(i).Velocity.xhat(IsOutside) = -particle(i).Velocity.xhat(IsOutside); % Apply Position Limits particle(i).Position.xhat = max(particle(i).Position.xhat,Vars.xhat.Min); particle(i).Position.xhat = min(particle(i).Position.xhat,Vars.xhat.Max); % ---- Motion on yhat % Update Velocity particle(i).Velocity.yhat = w*particle(i).Velocity.yhat ... +c1*rand(Vars.yhat.Size).*(particle(i).Best.Position.yhat-particle(i).Position.yhat) ... +c2*rand(Vars.yhat.Size).*(GlobalBest.Position.yhat-particle(i).Position.yhat); % Apply Velocity Limits particle(i).Velocity.yhat = max(particle(i).Velocity.yhat,Vars.yhat.VelMin); particle(i).Velocity.yhat = min(particle(i).Velocity.yhat,Vars.yhat.VelMax); % Update Position particle(i).Position.yhat = particle(i).Position.yhat + particle(i).Velocity.yhat; % Velocity Mirror Effect IsOutside = (particle(i).Position.yhat<Vars.yhat.Min | particle(i).Position.yhat>Vars.yhat.Max); particle(i).Velocity.yhat(IsOutside) = -particle(i).Velocity.yhat(IsOutside); % Apply Position Limits particle(i).Position.yhat = max(particle(i).Position.yhat,Vars.yhat.Min); particle(i).Position.yhat = min(particle(i).Position.yhat,Vars.yhat.Max); % ---- Motion on rhat % Update Velocity particle(i).Velocity.rhat = w*particle(i).Velocity.rhat ... +c1*rand(Vars.rhat.Size).*(particle(i).Best.Position.rhat-particle(i).Position.rhat) ... +c2*rand(Vars.rhat.Size).*(GlobalBest.Position.rhat-particle(i).Position.rhat); % Apply Velocity Limits particle(i).Velocity.rhat = max(particle(i).Velocity.rhat,Vars.rhat.VelMin); particle(i).Velocity.rhat = min(particle(i).Velocity.rhat,Vars.rhat.VelMax); % Update Position particle(i).Position.rhat = particle(i).Position.rhat + particle(i).Velocity.rhat; % Velocity Mirror Effect IsOutside = (particle(i).Position.rhat<Vars.rhat.Min | particle(i).Position.rhat>Vars.rhat.Max); particle(i).Velocity.rhat(IsOutside) = -particle(i).Velocity.rhat(IsOutside); % Apply Position Limits particle(i).Position.rhat = max(particle(i).Position.rhat,Vars.rhat.Min); particle(i).Position.rhat = min(particle(i).Position.rhat,Vars.rhat.Max); % Evaluation [particle(i).Cost, particle(i).Sol] = CostFunction(particle(i).Position); % Apply Mutation NewParticle = particle(i); NewParticle.Position = Mutate(particle(i).Position, Vars); [NewParticle.Cost, NewParticle.Sol]=CostFunction(NewParticle.Position); if NewParticle.Cost<=particle(i).Cost || rand < 0.2 particle(i) = NewParticle; end % Update Personal Best if particle(i).Cost<particle(i).Best.Cost particle(i).Best.Position = particle(i).Position; particle(i).Best.Cost = particle(i).Cost; particle(i).Best.Sol = particle(i).Sol; % Update Global Best if particle(i).Best.Cost<GlobalBest.Cost GlobalBest = particle(i).Best; end end end % Apply Local Search (Improvement) to Global Best NewParticle = GlobalBest; NewParticle.Position = ImproveSolution(GlobalBest.Position,model,Vars); [NewParticle.Cost, NewParticle.Sol]=CostFunction(NewParticle.Position); if NewParticle.Cost<=GlobalBest.Cost GlobalBest = NewParticle; end BestCost(it) = GlobalBest.Cost; if GlobalBest.Sol.IsFeasible FLAG = ’ (Feasible)’; else FLAG = ’’; end disp([’Iteration ’ num2str(it) ’: Best Cost = ’ num2str(BestCost(it)) FLAG]); w = w*wdamp; % Plot Solution figure(1); PlotSolution(GlobalBest.Sol,model); pause(0.01); end BestSol = GlobalBest; %% Results figure; plot(BestCost,’LineWidth’,2); xlabel(’Iteration’); ylabel(’Best Cost’); grid on;

3 運(yùn)行結(jié)果

4 參考文獻(xiàn)

[1]楊國(guó)俊, 陳健, 孫思蒙,等. 基于遺傳算法的車間布局優(yōu)化研究[J]. 機(jī)械研究與應(yīng)用, 2016(1):3.

[2]閆向彤, 張永鑫, 李佩澤,等. 基于遺傳算法的車間布局優(yōu)化研究[J]. 機(jī)械設(shè)計(jì)與制造工程, 2021, 50(9):5.

博主簡(jiǎn)介:擅長(zhǎng)智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)、信號(hào)處理、元胞自動(dòng)機(jī)、圖像處理、路徑規(guī)劃、無(wú)人機(jī)等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問(wèn)題可私信交流。

部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。

版權(quán):如無(wú)特殊注明,文章轉(zhuǎn)載自網(wǎng)絡(luò),侵權(quán)請(qǐng)聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習(xí)使用,務(wù)必24小時(shí)內(nèi)刪除。
相關(guān)推薦