09车间作业调度问题(JSP)的遗传算法通用MATLAB源代码
更新时间:2023-09-10 05:56:01 阅读量: 教育文库 文档下载
欢迎访问GreenSim团队主页→http://blog.sina.com.cn/greensim 邮箱:greensim@163.com 车间作业调度问题(JSP)的遗传算法通用MATLAB源代码
车间作业调度问题(JSP)是一类满足任务配置和顺序约束要求的资源分配问题,是最难的组合优化问题之一。下面的MATLAB源代码可用于求解标准JSP问题,虽然采用的是最普通的遗传算法,但在编解码环节,采用了十分巧妙的设计,可以大幅提高搜索效率。
function [S_best,T_min,LC]=JSPGA(M,N,Pc,Pm,Q,W) %% 车间作业调度问题遗传算法
% GreenSim团队——专业级算法设计&代写程序
% 欢迎访问GreenSim团队主页→http://blog.sina.com.cn/greensim %% 输入参数列表
% M 遗传算法进化代数 % N 种群规模 % Pc 交叉概率 % Pm 变异概率 % Q 机器序号矩阵 % W 操作时间矩阵 %% 输出参数列表
% S_best 最优调度方案,m×1的细胞结构,每个细胞单元为La×2的矩阵 % T_min 最优调度方案对应的最短调度时间 % LC 历史最优适应值收敛曲线 %% 第一步:参数初始化
[n,k]=size(Q);%n为工件总数,k为工序总数 m=max(max(Q));%m为机器总数 S_best=cell(m,1); T_min=inf; LC=zeros(1,M);
%% 第二步:产生初始种群
farm=InitPop(N,Q,W,n,k,m);%调用产生初始种群的子函数 %% counter=0;%设置迭代计数器
while counter FARM=Cross(farm,Pc,m);%调用交叉子函数 %% 第四步:变异 FARM=Mutate(FARM,Pm,m);%调用变异子函数 %% 第五步:修正算子 FARM=Modify(FARM,Q,W,n,k);%调用修正子函数 %% 第六步:计算适应值 FITNESS=Fit(FARM);%调用计算适应值的子函数 %% 第七步:选择复制 第1页 欢迎访问GreenSim团队主页→http://blog.sina.com.cn/greensim 邮箱:greensim@163.com [farm,fitness]=Select(FARM,FITNESS);%调用选择复制子函数 %% 第八步:记录和更新 [S_best,T_min,LC]=Updata(S_best,T_min,LC,farm,fitness,counter);%记录和更新子函数 counter=counter+1; disp(counter); end function FARM=Cross(farm,Pc,m) %% 子函数:交叉子函数 %% 输入参数列表 % farm 交叉操作之前的种群 % Pc 交叉概率 % Q 机器序号矩阵,n×k的矩阵 % W 操作时间矩阵,n×k的矩阵 % n 工件总数 % k 工序总数 % m 机器总数 %% 输出参数列表 % FARM 输出种群 %% N=size(farm,2); newfarm=cell(m,2*N); SER=randperm(N); A=farm(:,1); B=farm(:,N); pos=unidrnd(m-1); AA=[A(1:pos,:);B((pos+1):end,:)]; BB=[B(1:pos,:);A((pos+1):end,:)]; newfarm(:,1)=AA; newfarm(:,2)=BB; for i=1:(N-1) A=farm(:,SER(i)); B=farm(:,SER(i+1)); pos=unidrnd(m-1); AA=[A(1:pos,:);B((pos+1):end,:)]; BB=[B(1:pos,:);A((pos+1):end,:)]; newfarm(:,2*i+1)=AA; newfarm(:,2*i+2)=BB; end %% for i=1:(2*N) if Pc>rand A=newfarm(:,i); for j=1:m Aj=A{j}; 第2页 欢迎访问GreenSim团队主页→http://blog.sina.com.cn/greensim 邮箱:greensim@163.com L=size(Aj,2); if L>2 pos=unidrnd(L-2)+1; Bj=[Aj(:,1),Aj(:,(pos+1):end),Aj(:,2:pos)]; A{j}=Bj; end end newfarm(:,i)=A; end end FARM=[farm,newfarm]; function FARM=Mutate(FARM,Pm,m) %% 子函数:变异子函数 %% 输入参数列表 % FARM 交叉操作之后新旧种群的合并种群 % Pm 变异概率 %% 输出参数列表 % FARM 输出种群 %% NN=size(FARM,2); for i=1:NN if Pm>rand A=FARM(:,i); for j=1:m Aj=A{j}; L=size(Aj,2); if L>2 pos=randperm(L-1)+1; pos1=pos(1); pos2=pos(2); temp=Aj(:,pos1); Aj(:,pos1)=Aj(:,pos2); Aj(:,pos2)=temp; A{j}=Aj; end end FARM(:,i)=A; end end % GreenSim团队——专业级算法设计&代写程序 % 欢迎访问GreenSim团队主页→http://blog.sina.com.cn/greensim %% 子函数:记录和更新子函数 %% 输入参数列表 % S_best 最优调度方案,m×1的细胞结构,每个细胞单元为La×2的矩阵 第3页 欢迎访问GreenSim团队主页→http://blog.sina.com.cn/greensim 邮箱:greensim@163.com % T_min 最优调度方案对应的最短调度时间 % LC 历史最优适应值收敛曲线 % farm 种群 % fitness 种群的适应值 % counter 计数器 %% 输出参数列表 % S_best 最优调度方案,m×1的细胞结构,每个细胞单元为La×2的矩阵 % T_min 最优调度方案对应的最短调度时间 % LC 历史最优适应值收敛曲线 %% minfitness=min(fitness); pos=find(fitness==minfitness); POS=pos(1); if minfitness<=T_min T_min=minfitness; S_best=farm(:,POS); end LC(counter+1)=T_min; 源代码运行结果展示 调度干特图761242643455255614152211335411513143226636232441456262534565231636163335424154600102030时间405060 第4页
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 调度
- 源代码
- 遗传
- 算法
- 车间
- 作业
- 通用
- MATLAB
- 问题
- JSP
- 传统文化主题班会--汉字的起源
- 南京市普通中小学办学条件标准(修订版)(宁政发〔2005〕141号)
- 宏观经济学第一章习题20080927
- 2018年公交集团综合部部长竞聘演讲稿
- 三维坐标的转换与倒悬体的处理方法 - 图文
- 中国地理复习填图练习
- 行政学原理第2阶段测试题
- 公共行政答案 -
- 社会心理学期末复习指导
- 2017中考英语语法填空复习(含解析)
- 江苏省南京市、盐城市2018届高三第二次模拟考试-英语试题 - 图文
- 高压水射流切割机床设计说明书
- 价格欺诈法律问题研究
- 拼音备课
- 小船渡河金典练习题
- 起重指挥手势图解
- TransCAD实验五 交通分配预测
- 化学海洋学试卷 - 图文
- 《应用文写作》课程单元教学设计
- 新西兰读大学的申请条件