✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
对最小化完工时间的并行多机调度问题提出了一种遗传算法,并在问题形成,遗传算法编码,变异方法等方面作了研究,并用计算实例表明遗传算法能适用于大规模并行多机调度问题.
%% GA算法求解并行调度问题
%% 加载问题的数据
clc, clear, close all
[~, ~, timetable] = xlsread('2.xls','Sheet1','B1:E30');
timetable = cell2mat(timetable);
cities = 30;
global rec tag1 len;
rec = zeros(500,35);
tag1 = 1;
len = [7, 7, 8, 8];
%% 定义目标函数
FitnessFcn = @(x) parallel_scheduling_fitness(x,timetable);
% gaplotbestf
%% 设置优化属性并执行遗传算法求解
options = optimoptions(options,'CreationFcn',@create_permutations,
'CrossoverFcn',@crossover_permutation, ...
'MutationFcn',@mutate_permutation, ...
'PlotFcns', @gaplotbestf, ...
'MaxGenerations',800,'PopulationSize',60, ...
'MaxStallGenerations',200,'UseVectorized',true);
numberOfVariables = cities;
[x,fval,reason,output] = ...
%% 输出并行调度问题的工件分配方案并可视化
disp('工件的分配顺序为:')
order = cell2mat(x);
fprintf('机器一:%d %d %d %d %d %d %d \n', order(1:len(1)))
fprintf('机器二:%d %d %d %d %d %d %d \n', order(len(1) + 1:len(1) + len(2)))
fprintf('机器三:%d %d %d %d %d %d %d %d \n', order(len(1) + 1 + len(2):len(1) + len(2) + len(3)))
fprintf('机器四:%d %d %d %d %d %d %d %d \n', order(len(1) + len(2) + len(3) + 1:len(1) + len(2) + len(3) + len(4)))
fprintf('四台机器分别耗时:%d %d %d %d \n', rec(tag1 -1,31:34))
plot((1:tag1 - 1), rec(1:tag1 - 1,35),'b')
xlabel('迭代次数')
ylabel('最短CMax')
title('并行调度问题')
[1]赵迪. 基于遗传算法的集配中心作业调度优化问题研究[D]. 北京交通大学, 2010.
[2]柳丹丹, 龚祝平, 邱磊. 改进遗传算法求解同类并行机优化调度问题[J]. 机械设计与制造, 2020(4):4.
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料