作业车间调度问题描述

作业车间调度问题(Job Shop Scheduling, JSP)是最经典的几个NP-hard问题之一。其应用领域极其广泛,涉及航母调度,机场飞机调度,港口码头货船调度,汽车加工流水线等。

JSP问题描述:一个加工系统有M台机器,要求加工N个作业,其中,作业i包含工序数为Li。令,则L为任务集的总工序数。其中,各工序的加工时间已确定,并且每个作业必须按照工序的先后顺序加工。调度的任务是安排所有作业的加工调度排序,约束条件被满足的同时,使性能指标得到优化。

作业车间调度需要考虑如下约束:

Cons1:每道工序在指定的机器上加工,且必须在其前一道工序加工完成后才能开始加工;

Cons2:某一时刻1台机器只能加工1个作业;

Cons3:每个作业只能在1台机器上加工1次;

Cons4:各作业的工序顺序和加工时间已知,不随加工排序的改变而改变。

问题实例

下面给出作业车间调度问题的一个实例,其中每个工序上标注有一对数值(m,p),其中,m表示当前工序必须在第m台机器上进行加工,p表示第m台机器加工当前工序所需要的加工时间。(注:机器和作业的编号从0开始)
jop0=[(0,3),(1,2),(2,2)]
jop1=[(0,2),(2,1),(1,4)]
jop2=[(1,4),(2,3)]
在这个例子中,作业jop0有3道工序:它的第1道工序上标注有(0,3),其表示第1道工序必须在第0台机器上进行加工,且需要3个单位的加工时间;它的第2道工序上标注有(1,2),其表示第2道工序必须在第1台机器上进行加工,且需要2个单位的加工时间;余下的同理。总的来说,这个实例中共有8道工序。
该问题的一个可行解是L=8道工序开始时间的一个排列,且满足问题的约束。下图给出了一个可行解(注:该解不是最优解)的示例:

%% 清空环境
clc;clear%% 下载数据
load scheduleData Jm T JmNumber
%工序 时间%% 基本参数
NIND=40;        %个体数目
MAXGEN=50;      %最大遗传代数
GGAP=0.9;       %代沟
XOVR=0.8;       %交叉率
MUTR=0.6;       %变异率
gen=0;          %代计数器
%PNumber 工件个数 MNumber  工序个数
[PNumber MNumber]=size(Jm);
trace=zeros(2, MAXGEN);      %寻优结果的初始值
WNumber=PNumber*MNumber;     %工序总个数%% 初始化
Number=zeros(1,PNumber);     % PNumber 工件个数
for i=1:PNumberNumber(i)=MNumber;         %MNumber工序个数
end% 代码2层,第一层工序,第二层机器
Chrom=zeros(NIND,2*WNumber);
for j=1:NINDWPNumberTemp=Number;for i=1:WNumber%随机产成工序val=unidrnd(PNumber);while WPNumberTemp(val)==0val=unidrnd(PNumber);end%第一层代码表示工序Chrom(j,i)= val;WPNumberTemp(val)=WPNumberTemp(val)-1;%第2层代码表示机器Temp=Jm{val,MNumber-WPNumberTemp(val)};SizeTemp=length(Temp);%随机产成工序机器Chrom(j,i+WNumber)= unidrnd(SizeTemp);end
end%计算目标函数值
[PVal ObjV P S]=cal(Chrom,JmNumber,T,Jm);%% 循环寻找
while gen<MAXGEN%分配适应度值FitnV=ranking(ObjV);%选择操作SelCh=select('rws', Chrom, FitnV, GGAP);%交叉操作SelCh=across(SelCh,XOVR,Jm,T);%变异操作SelCh=aberranceJm(SelCh,MUTR,Jm,T);%计算目标适应度值[PVal ObjVSel P S]=cal(SelCh,JmNumber,T,Jm);%重新插入新种群[Chrom ObjV] =reins(Chrom, SelCh,1, 1, ObjV, ObjVSel);%代计数器增加gen=gen+1;%保存最优值trace(1, gen)=min(ObjV);trace(2, gen)=mean(ObjV);% 记录最佳值if gen==1Val1=PVal;Val2=P;MinVal=min(ObjV);%最小时间STemp=S;end%记录 最小的工序if MinVal>trace(1,gen)Val1=PVal;Val2=P;MinVal=trace(1,gen);STemp=S;endend% 当前最佳值
PVal=Val1; %工序时间
P=Val2;  %工序
S=STemp; %调度基因含机器基因%% 描绘解的变化
figure(1)
plot(trace(1,:));
hold on;
plot(trace(2,:),'-.');grid;
legend('解的变化','种群均值的变化');%% 显示最优解
figure(2);
MP=S(1,PNumber*MNumber+1:PNumber*MNumber*2);
for i=1:WNumberval= P(1,i);a=(mod(val,100)); %工序b=((val-a)/100); %工件Temp=Jm{b,a};mText=Temp(MP(1,i));x1=PVal(1,i);x2=PVal(2,i);y1=mText-1;y2=mText;plotRec(x1,x2,mText);plotRec(PVal(1,i),PVal(2,i),mText);hold on;fill([x1,x2,x2,x1],[y1,y1,y2,y2],[1-1/b,1/b,b/PNumber]);text((x1+x2)/2,mText-0.25,num2str(P(i)));
end

【车间调度】基于遗传算法求解车间调度matlab源码相关推荐

  1. qr-rls算法matlab实现,【预测模型】基于RLS算法进行预测matlab源码

    一.简介 1 概述 递归最小二乘(RLS)算法是一种典型的数据处理方法,由著名学者高斯在1795年提出,高斯认为,根据所获得的观测数据来推断未知参数时,未知参数最可能的值是这样一个数据,即它使各项实际 ...

  2. 通俗易懂的布谷鸟算法与莱维飞行,(附求解函数最小值matlab源码)

    1 从布谷鸟的育雏到布谷鸟算法 2 布谷鸟算法 3 萊维飞行与公式(1)的深层含义 4 附:CS算法求解函数最小值代码 5 源码下载 6 参考文献 1 从布谷鸟的育雏到布谷鸟算法 布谷鸟不会做窝,也不 ...

  3. 【优化调度】遗传算法求解公交车调度排班优化问题【含Matlab源码 2212期】

    ⛄ 一. 遗传算法简介 1 引言 公交排班问题是城市公交调度的核心内容,是公交调度人员.司乘人员进行工作以及公交车辆正常运行的基本依据.行车时刻表是按照线路的当前客流量情况,确定发车频率,提供线路车辆 ...

  4. 【布局优化】基于粒子群求解物流选址matlab源码

    一.简介 粒子群优化(PSO)是一种基于群体智能的数值优化算法,由社会心理学家James Kennedy和电气工程师Russell Eberhart于1995年提出.自PSO诞生以来,它在许多方面都得 ...

  5. 【三维装箱】基于粒子群算法求解三维装箱问题matlab源码

    1 简介 针对约束条件下三维装箱问题复杂性,为提高装箱利用率,本文提出 了混合粒子群算法,该算法采用BF启发式算法配合改进的自适应权重粒子群算法实现.通过仿真试验,结果表明该混合粒子群算法对解决部分约 ...

  6. 【图像分割】基于FCM+KFCM MRI图像分割matlab源码含GUI

    一.简介 1 如何理解模糊聚类\ 事物间的界线,有些是明确的,有些则是模糊的.当聚类涉及到事物之间的模糊界线时,需要运用模糊聚类分析方法.\ 如何理解模糊聚类的"模糊"呢:假设有两 ...

  7. 【优化求解】粒子群优化和重力搜索算法求解MLP问题matlab源码

    一.重力引力搜索算法 1.1粒子群算法 粒子群算法( Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群 ...

  8. 【RBF预测】基于RBF神经网络实现预测matlab源码

    1 简介 数据预测是指在分析现有数据的基础上估计或推测未来的数据的过程.神经网络具有良好的训练性和自学习能力,能够对大量复杂数据进行分析,特别是RBF网络模型,非常适合解决预测问题.随着云计算技术的迅 ...

  9. 遗传算法求二元函数极值怎么编码_遗传算法求解二元函数极值源码

    网上看到了一个比较不错的讲解遗传算法的帖子,链接如下 http://blog.csdn.net/b2b160/article/details/4680853 但是却没有贴源代码,正好最近闲来无事,就尝 ...

  10. 【预测模型】基于灰度模型预测房价matlab源码

    1 简介 自2006年开始,房价保持较长时间持续攀升,房价过高已成为一个全社会关注的民生问题.从市场价格内在发展趋势和外部因素影响两方面建立房价构成模型,将居民消费物价指数,房地产开发综合景气指数,土 ...

最新文章

  1. python最新版本 效率_Python:迭代列表与dict项目效率
  2. 如何创建共享文件夹?2009.6.10 三 紧张后 高兴
  3. git reset 命令详解(二)—— Git 学习笔记 08
  4. php js获取文件大小,js+ajax实现获取文件大小的方法_javascript技巧
  5. 1_2 AbstractFactoryMode 抽象工厂模式
  6. mysql-plus多数据库_IDEA项目搭建九——MybatisPlus多数据库实现
  7. 批量删除.svn文件的方法
  8. 历时半载,我的新课上线了
  9. 千月最新影视APICLOUD完整安卓程序源码+UI非常不错
  10. 关于连接数据库出现时差问题的解决方法
  11. 历时两年,秘鲁四人调查团队发布反腐 AI
  12. 自然语言处理基础 一 及 sklearn实现 分析词代码实现
  13. 平板app尺寸html5,app界面设计尺寸规范大全
  14. LINUX 无法输入密码 或者数字键不能使用
  15. Google镜像网站全(4-3更)
  16. 怎么看电脑是32位还是64位?2个方法,快速查看
  17. .dll文件(DLL文件)
  18. [附源码]Node.js计算机毕业设计餐厅订餐系统Express
  19. 【操作系统】批处理、分时、实时各个操作系统特点
  20. 不等于在python中怎么打_python中不等于怎么表示

热门文章

  1. qq输入法 for linux,QQ输入法for Mac如何下载及安装
  2. DNF的SPK文件解析笔记
  3. 多项式——多项式牛顿迭代
  4. 微信验证码无法连接到服务器,微信无法连接到服务器1237解决方法
  5. 程序员520❤七夕情人节表白代码Html+Js+Css花瓣相册网页模板❤程序员表白必备...
  6. SAP MM采购信息记录作用与浅析
  7. aruino四轮蓝牙小车控制
  8. 华人工程师在美国-从微软高管离职说起
  9. Spring事务(Transactions)的原理与实现
  10. quartz 数据库表含义解释