matlab生产调度问题及其优化算法Word格式.docx

上传人:b****6 文档编号:18564059 上传时间:2022-12-28 格式:DOCX 页数:20 大小:69.24KB
下载 相关 举报
matlab生产调度问题及其优化算法Word格式.docx_第1页
第1页 / 共20页
matlab生产调度问题及其优化算法Word格式.docx_第2页
第2页 / 共20页
matlab生产调度问题及其优化算法Word格式.docx_第3页
第3页 / 共20页
matlab生产调度问题及其优化算法Word格式.docx_第4页
第4页 / 共20页
matlab生产调度问题及其优化算法Word格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

matlab生产调度问题及其优化算法Word格式.docx

《matlab生产调度问题及其优化算法Word格式.docx》由会员分享,可在线阅读,更多相关《matlab生产调度问题及其优化算法Word格式.docx(20页珍藏版)》请在冰豆网上搜索。

matlab生产调度问题及其优化算法Word格式.docx

问题:

做出生产安排,希望在尽可能短的时间里,完成所接受的全部任务。

要求:

给出每台设备承担任务的时间表。

注:

在上面,机器A,B,C,D即为机器1,2,3,4,程序中以数字1,2,3,4表示,

说明时则用A,B,C,D

二.模型假设

1.每一时刻,每台机器只能加工一个工件,且每个工件只能被一台机器所加工,同时加工过程为不间断;

2.所有机器均同时开工,且工件从机器I到机器J的转移过程时间损耗不计;

3.各工件必须按工艺路线以指定的次序在机器上加工多次;

4.操作允许等待,即前一操作未完成,则后面的操作需要等待,可用资源有限。

三.符号说明及初始数据表达分析

-第i个工件(i=1…6)

-机器顺序阵

表示i工件的第j个操作的机器号

-第j台机器(j=1…4)

-工件排列阵

表示i机器上第j次加工的工件号

-加工时间阵

为i工件的第j个操作的时间周期

-整个任务完成时间

整理数据后得到:

=[CABCD000]

=[824246000]

[ADBC0000][45340000]

[CDABA000][3715208000]

[BCDADC00][7621116300]

[DBCDACD0][1048412610]

[ABACDACA][14735258]

上述二阵直接从题目得出,而

则是我们要求的。

关于工件的加工时间表:

(表二)

产品/工件(i):

总计

总净加工时间(周期)

44

53

54

45

35

247

加工工序总数(个)

关于机器的加工时间表:

(表三)

机器/设备(j):

总净加工时间

60

42

70

75

加工操作次数

9

分析:

由于各产品总净加工时间和各机器总净加工时间之中最大值为75,而总计为247,那么总时间C介于[75,247]。

同时各工件加工繁杂程度不一,各机器的任务量也有轻重之别。

合理的调度排序是对于节省时间和资源是必要的。

希望最优化答案是75,这样达到最小值,如果答案是75,那么意味着机器D不间断工作,直至全部加工任务完成。

四.贪婪法快速求解

如果按照一定规则排序,当多个工件出现“抢占”同一机器的局面的时候,我们可以制定如下的工序安排规则:

1.优先选择总剩余时间或总剩余操作较多的工件。

(如果出现总剩余加工时间多者总剩余操作数反而较少的情况时,按照程度具体情况具体分析)。

2.机器方面来说,尽量避免等待空闲时间,优先考虑剩余净加工时间或者剩余加工总次数较多的机器,尤其是机器D,即倘若能够使机器D不间断工作且其他机器完工时间均不多余75时,那么就可以得到最优解。

首先按照最优化时间为75的设想避免D出现等待,排序后得到升以下具体排列顺序。

各机器承担任务表为(其中粗体字为对应工件产品号,括号内为对应时间周期段):

操作1

操作2

操作3

操作4

操作5

操作6

操作7

操作8

操作9

操作10

(1)

(2-5)

(12-13)

(14-20)

(21-35)

(36)

(43-54)

(55-56)

(57-64)

(66-73)

(1-7)

(8-11)

(12-15)

(16-19)

(36-55)

(56-58)

(1-3)

(4-11)

(12-17)

(18-25)

(26-28)

(29-52)

(55-60)

(61-65)

(66-69)

(70-72)

(1-10)

(11-17)

(18-38)

(39-42)

(43-47)

(48-52)

(53-68)

(69-74)

(75)

(表四)

(图一)

上图为加工周期图(甘特图),标注数字为相应操作的周期,完工时间为第75周期。

五.计算机随机模拟(编程)

1.编码:

随机产生生产的工序操作优先顺序,进行编码,如:

K=[435662314

16354536641551326224415665](注:

同时作为下文的染色体之用)意思为:

工件4优先被考虑进行第一次操作,然后3进行其第一步操作,然后5操作,6操作,再6操作其第二步工序,依次进行。

如果前后互相不冲突,则可同时在不同机器上操作。

通过排列组合得出,总共有类似K的排列序列2

多种!

当然,这其中只对应解[75,247],意味着有大量排列序列对应同一加工方案,而大量加工方案又对应同一时间解。

2.解码:

即对编码进行翻译,产生具体可操作工序安排方案,这里采用活动化解码算法。

例如工件2第i步操作(记为

(2,i),且在机器A上进行)被安排在工件3第j步操作(记为JM(3,j))后面进行,那么如果安排好

(3,j)后,只要

(2,i)在工件2已经排序好的操作之后进行,那么操

(2,i)可插入到机器A处最前可安置的时间段进行。

在这里,一个编码序列对应一个加工方案,而一个加工方案可对应一个或多个编码序列,这就是二者之关系。

3.编程:

通过一组随机编码产生一生产加工优先序列,通过解码过程产生相应加工方案及其总耗费时间C.N次模拟后即可得出解C的概率密度分布情况以及相对最优解(N个C的最小值,如80,77等,甚至出现75)。

4.计算机模拟所得数据分析

a.进行100次模拟得出最优解情况:

(共运行10次)

82,83,82,84,78,80,81,83,87,82平均值82.2,每回耗时约3秒

b.进行1000次模拟得出最优解情况:

(共运行10次)

80,79,78,78,79,79,76,80,77,78平均值78.4,每回耗时25秒

c.进行10000次模拟得出最优解情况:

(共运行10次)

76,77,77,75,76,76,77,76,76,77平均值76.3,每回耗时4分钟

d.模拟1000000次得到的解C的概率密度分布情况为:

(如图二所示)

(图二)

(注:

75处为17次(概率为17/1000000=1/58823),76处为40次,77处167次)

结论:

如果想将2

中排序序列以平均出现一次的可能性进行模拟,

即运行2

次,计算机需运行将近150万亿年!

当然,我们没有这个必要,因为我们只需要运行数万次,就很可能得到最优解75,(在随机模拟1000000次后出现17次75,那么意味着概率大约17/1000000=1/58823,另外76处为40次,77处167次)。

六.遗传算法模型建立和步骤解法

遗传算法(GeneticAlgorithm)作为一种优化算法特别适合于对象模型难于建立、搜索空间非常庞大的复杂问题的优化求解。

它和模糊控制技术一样,虽然在理论上还没有完善,但是在实践中已经得到了广泛的应用。

遗传算法的基本思想是:

模仿生物系统“适者生成"

的原理,通过选择、复制、交叉、变异等简单操作的多次重复来达到去劣存优的目的,从而获得问题的优化结果。

遗传算法的实现由两个部分组成,一是编码与解码,二是遗传操作。

其中遗传操作又包括选择、复制、交叉、变异等步骤。

本文根据实际情况采取了1-6整数编码。

数字1,2,3,4,5,6分别代表6件待加工产品。

本文遗传算法基本流程:

通过编码,解码程序随机产生N个(有一定数量,如50或100)个体构成初始种群

a)从初始中群中选取2个具有最优染色体(最有排序方案)的个体作为临时个体(父代);

b)如果此2个体中有一个个体通过解码操作能够实现最优排序(即使总时间为75周期),那么结束此算法,得到最优解;

c)对2个临时个体以一定方式(循环交叉)执行染色体交叉变换和变异选择(小概率,互换操作),产生2个新的个体;

d)对父代和子代共4个个体进行选择,从中选出最佳的2个个体,做为下一代的父代;

e)重复执行第二步(b)操作;

f)如果执行完M步后仍然未得出答案75,那么将目前的最优解作为本算法的最优解答案。

1.编码和解码(同上)

2.交叉变换(crossover)

对2个父代临时个体进行染色体交叉变换,采用循环交叉方法(CyclecrossoverCX),如父代染色体为:

X:

[926473581]和Y:

[345816729],如果随机选到第二位开始交叉,那么X的2对应Y的4,X的4对应Y的8,X的8对应Y的2,这样就确定了以上为不变的染色体,其余位置的染色体互换位置,最后得到

:

[325416789],

[946873521],实现交叉变换。

3.变异选择(mutation)

采用互换操作(SWAP),,即随机交换染色体中两不同基因的位置。

如上面的染色体为:

[325416789]。

随机产生变换位置号,如产生随机数3和5,那么交换数字后得到染色体:

[321456789],变异概率取0.1。

4.选择操作(selection)

对父代2个体f1,f2和子代2个体f3,f4进行选择,通过编码操作确定具有最优解的2个个体,成为新一代f1和f2。

如此,通过多次编码和解码随机产生一定数量的个体,选取2个最佳个体进行交叉变换操作,产生2个新个体,然后对4个个体进行选择,产生下一代,如果某时刻通过解码操作得出最优解(所有解的下限,这里是75周期),那么算法结束,否则循环进行,直至预先给定的循环次数达到为止,以最后得到的最优解作为最终最优解。

七.遗传算法模拟(采用MATLAB工具编程)

主程序如下:

(子程序见略)

%本程序为主程序,调用以下各分支程序

task='

Welcome!

Waitamomentplease!

---Writer:

孙卓明,信息014'

f1=zeros(1,35);

f2=zeros(1,35);

whilef1==f2;

%此步避免初始染色体f1,f2相同,导致以下死循环

[minminmax1,s1]=chushijie(N);

%种群初始化;

基于操作的编码策略;

活动化解码算法;

chushijie(N)参数N为初始种群数

f1=s1;

minminmax1,%选取的第一个初始个体

[minminmax2,s2]=chushijie(N);

%再次种群初始化

f2=s2;

minminmax2,%选取的第二个初始个体

end;

fore=1:

M;

%e=1:

M进行M次遗传操作(交叉-变异-选择)

[D]=jiaocha(f1,f2);

%交叉变化(循环交叉操作,cyclecrossoverCX),选取

f1;

f2;

“染色体”无需变动部分基因

[f3,f4]=jiaocha_bianyi(f1,f2,D);

%生成交叉后的“染色体”,并进行变异选择

f3;

f4;

[f1,f2]=xuanze(f1,f2,f3,f4);

%选择:

对父代f1,f2和子代f3,f4进行解码,得出2个

较优个体,成为下一代的父代

[minmaxf1,a1,b1]=tongbujinzhan(f1);

%求该时刻个体f1的最优时间(因为f1优于f2)

ifminmaxf1==75;

f1,a1,b1,minminmax1,minminmax2,minminmax_last=minmaxf1,

task='

Finish!

Successful!

Bestanswer!

Congratulation!

'

return;

end;

f1,a1,b1,minminmax1,minminmax2,minminmax_last=minmaxf1,

ifminminmax_last>

=90;

task='

Actionagainplease!

'

end;

=80&

&

minminmax_last<

90;

end;

ifminminmax_last<

80;

end;

八.遗传算法模拟结果

首先给出最优方案:

在进行某次n=100,m=200的操作后得到模拟最优结果75周期时间:

minminmax1=83minminmax2=78(二个初始较优个体解)

f1=[45663136456132545315264564664322511]

(f1为各工件优先选择顺序排列,即“染色体”)

a1=535396400000(a1,b1为四台机器空闲周期段)

15240000000

175365000000

000000000

b1=1138426500000

20350000000

185468000000

minminmax=75(最终最优解)

其中机器A空闲时间段为:

5-11,35-38,39-42,64-65;

机器B则为:

15-20,24-35;

机器C为:

17-18,53-54,65-68;

机器D无空闲。

以下为:

取不同N和M值情况下数据优化过程以及时间上的比较:

(表五)

N

M

第一次运行

第二次运行

第三次运行

第四次运行

第五次运行

平均运行时间

104-114-98

98-105-93

92-93-92

100-132-95

86-86-84

/

106-97-86

108-100-89

102-87-87

99-90-90

88-104-84

100

94-81-81

81-102-78

91-105-91

101-84-80

90-101-90

1000

107-100-78

92-101-76

101-100-82

88-97-86

91-93-87

8.5(s)

10000

88-105-77

103-81-77

89-99-84

107-104-78

93-105-78

80(s)

90-108-90

104-91-83

104-100-93

95-98-87

105-106-87

98-96-96

93-99-90

88-90-80

105-92-80

91-95-85

101-96-78

91-89-80

96-104-87

105-105-84

88-99-78

9.5(s)

99-92-77

97-95-75

96-104-76

89-99-76

91-101-75

90(s)

95-100-86

98-90-80

104-99-78

93-88-81

92-99-80

109-98-85

91-100-82

100-99-77

114-101-84

96-110-76

11(s)

96-101-78

101-86-76

101-97-80

99-110-76

99-111-77

100(s)

说明:

以最后一行第一次运行“96-101-78”为例,96和101分别为2次N取100时得到的100*2个随机解中的最优解,78为经过M=10000代的遗传(交叉变异选择)后得到的最终最优解。

明显地发现:

M的增大所产生的优化效果明显好于N增大产生的优化效果

M从1-10-100-1000-10000的变化使最优解有从9*--8*--7*的变化规律,

N的1-10-100的变化则不明显。

因此相对于随机取解,经过遗传算法优化之后效果是显著的。

另外对采用遗传算法前后模拟所得数据进行比较:

第一次

第二次

第三次

第四次

第五次

均值

平均时间

N=1000,M=0

78

79

81

80

79

79.4

25(S)

N=1,N=1,M=1000

80

75

77

76

82

78.0

8.5(S)

(表六)

由上表看来,虽然在均值方面相差不显著,但是时间上采用遗传算法之后节约了约三分之二的运行时间,效率显而易见。

九.模型优缺点及改进

模型优点,采用遗传算法可对一个理论上无法求尽的NP问题以较有效方法在较短时间内得到较精确解。

缺点,采用遗传算法还不全面,只是一个简单模型,未考虑收敛性,适配值等,对参数设置与最优解关系研究还不够深入。

模型本身还具有漏动,仍需改进,较好设想为采用和模拟退火算法的混合遗传算法,由于时间紧迫,在此就不再深入给出模型及分析了。

[参考文献]:

1.车间调度与遗传算法王凌清华大学出版社

2.数值计算的算法与分析张可村赵英良科学出版社

3.PermutationBasedGAsandOrderedGreedPeterG.Anderson,

4.MATLAB6.0与科学计算王沫然电子工业出版社

5.C程序设计(第二版)潭浩强清华大学出版社

信息014孙卓明

2003年8月14日

本文网上下载地址(个人主页):

附录:

子程序一:

(种群初始化,得较优个体)

function[minminmax,ss]=chushijie(n)%种群初始化,以下为编码和解码过程,同时对n次选取最优化个体

Jm=[31234000;

14230000;

34121000;

23414300;

42341340;

12134131];

minminmax=200;

ford=1:

n;

s=0;

%编码程序:

基于操作的编码策略

k=1;

fort=1:

35;

I=randint(1,1,[1,6]);

whileJm(I,1)==0;

s(k)=I;

k=k+1;

x=1;

whilex<

=7;

Jm(I,x)=Jm(I,x+1);

x=x+1;

Jm(I,8)=0;

T=[824246000;

45340000;

3715208000;

7621116300;

1048412610;

14735258];

%解码程序:

活动化解码算法

fori=1:

6;

k(i)=1;

end;

forq=1:

4;

forx=1:

9;

a(q,x)=0;

b(q,x)=0

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1