77范文网 - 专业文章范例文档资料分享平台

09车间作业调度问题(JSP)的遗传算法通用MATLAB源代码

来源:网络收集 时间:2018-12-08 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

欢迎访问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页

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库09车间作业调度问题(JSP)的遗传算法通用MATLAB源代码在线全文阅读。

09车间作业调度问题(JSP)的遗传算法通用MATLAB源代码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/351447.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: