数学建模 电梯调度问题8

发布时间:2011-08-17 14:49:40   来源:文档文库   
字号:



电梯调度问题算法研究

本文探讨了某高层写字楼中多部电梯安排的问题。电梯安排主要考虑乘客满意度和节约电梯运行管理费用,其中乘客的满意度与电梯运送乘客到目的地的时间密切相关、电梯的运行管理费用和电梯的运行一个周期的平均运行时间密切相关。因此,本文从电梯运送每位乘客到目的地的平均运送时间和电梯的平均运行时间两个指标建立评价体系。

针对本文提出的电梯调度问题,本文建立了两个子模型:电梯分区调度的非线性整数规划模型和基于概率论的电梯调度动态规划模型,将两个模型用上述评价体系评价,最后归纳出一种最优的电梯调度方案。

在第一个子模型中,本文针对上下班高峰期电梯分区调度的特点,对问题做适当简化,利用排队论的理论得出不同分区情况下电梯平均运行时间的公式,然后利用Maple求出在不同的分区方案的情况下电梯的平均运行时间的样本点,接着利用Matlab拟合出近似的二次函数表达式从而建立关于各分区运行时间的非线性整数规划模型,最后用遗传算法求解出最优的电梯分区调度方案。

在第二个子模型中,本文提出虚拟乘客等待的条件,作为上班高峰期对电梯优化调度问题的近似,从而建立电梯分区调度动态规划模型。利用概率论的方法得到了电梯往返运行一次的平均时间计算公式,最后采用动态规划的方法求得电梯平均运送时间最短的调度方案,并利用Maple模拟了该方案的运营,并对实例进行了计算。

利用所建立的评价指标体系,对上述两个模型进行对比,从不同角度给出电梯分区调度的最优方案。

在随后的改进模型中,本文充分考虑实际情况(有两层停车场),重新安排电梯调度方案,然后用Matlab重新拟合,并用遗传算法求解出该情况下的电梯分区调度方案。

最后,结合实际我们给管理部门提出了一个可行性较强的电梯调度方案。

关键词:电梯分区调度,非线性规划,遗传算法,动态规划,数据拟合

一、 问题重述

现代高层商务楼中一般都配置了多台电梯,日常生活中电梯运行管理粗放,经常出现早、晚高峰时间段电梯运行紧张,职工的等待时间过长,而其他时间由于使用人数过少造成资源的浪费。一个合理的电梯的运行方式不仅可以让办公人员缩短等待电梯的时间,而且还能有效降低电梯的运行管理费用,因而这是物业管理部门必须考虑的一个问题。

现在面对的实际问题是:有一栋高层写字楼,有二十二层地上建筑楼层,每层的员工数不同(具体数值见附录)。大楼内有6部电梯,每部电梯最大载重是20个正常成人的体重总和。电梯在每层楼之间的平均运行时间是3秒,电梯在最底层(地上一层)的平均停留时间是20秒,若在其他各层停留,则平均停留时间均为10秒。

本文希望通过数学建模的方法来解决该高层写字楼中电梯合理安排的问题,以便达到方便职工同时节约电梯管理费用的双重目的。具体要研究的问题如下:

(1) 从电梯的使用者——职工管理者——电梯运营商两个角度,分析确定合理的评价指标因素,进而建立一个合理的评价指标体系,用以评价所建立的电梯调度模型的优劣;

(2) 建立电梯运行过程中的各中相关的变量函数模型,安排六部电梯以合理的调度方式来模拟电梯在早晚高峰期员工的乘坐情况,并使用第(1)问中的评价指标体系来评价不同的运行方式的优劣;进而为物业管理部门提供一种最优的电梯调度方案;

(3) 将第2问中所建立的数学模型进一步实际化,如考虑该高层写字楼另有两层地下停车场及其他因素的影响,六部电梯的运行方案又该如何调整以适应新增加的两层运行量。

二、 模型的假设与符号的说明

2.1模型的假设

1) 电梯在各层的相应的停留时间内乘梯人员能够完成出入电梯;

2) 不考虑电梯到每层的减速过程和离开每层的加速过程,认为电梯到站时速度立即减小到零,电梯出站时立即加速到正常运行时的速度;

3) 电梯载客时不会出现超载现象,每部电梯每次最大载重是20个正常成人的体重之和;

4) 每台电梯的产品质量和运行功率相同,即每台电梯参数相同且恒定,在每层楼之间电梯的运行时间是3秒;

5) 在上班高峰期,只考虑乘客从一楼运送到各自确定的楼层,而不考虑乘客在其它楼层进入电梯的情况。上班高峰期的电梯下行过程中,电梯不接客;

6) 在下班高峰期,只考虑乘客从各自确定的楼层运送到一楼,而不考虑乘客在其它楼层走出电梯的情况。下班高峰期的电梯上行过程中,电梯不接客;

7) 假设题目所给的数据真实有效

2.2定义符号说明

:第个分区最底层的楼层的楼层数;

:表示该写字楼的电梯总数;

:第个分区共有的楼层数;

乘客单位时间内的到达率;

该区内一部电梯的平均运行时间;

:乘客的平均运送时间;

:电梯在每层楼之间平均运行时间;

:第个分区内的平均运送时间;

:电梯在层的停留时间;

:电梯在第个分区的平均运行时间;

为每个人进入电梯或走出电梯的平均时间;

:表示电梯从启动到停止当运行距离为层楼时的运行时间;

:该写字楼的总楼层数;

电梯的最大载重量;

三、 模型的建立与求解

3.1 评价体系的建立

在建立电梯调度问题的评价指标体系时,我们遵循系统性、独立性、可测性、科学性等原则,从电梯的使用者和管理者两个角度,分析确定合理的评价指标因素,最终确立了两个指标为评价因素的评价指标体系,用以评价不同的电梯调度模型的优劣。

(1) 指标一——充分考虑电梯运营费用

从电梯管理管理者者的角度,一个合理的电梯调度方案应满足平均运行时间最短,这样能保证电梯的运营管理费最低。电梯平均每次搭载的人数、电梯平均运行时问运行时间、乘客单位时间内的到达率满足如下关系:

现假设电梯的最大载重量20人,而乘客的到达率为1.78人/s,电梯相继到达门厅的时间为20。那么该电梯平均每次搭载的的乘客数量为=36人,远远超过了电梯的容量20人,这意味着将导致门厅大量乘客的积累,不能较好地完成任务。因此,在考虑高峰期电梯的优化调度方案,主要是降低电梯平均搭载的乘客数。而对于不同的楼层,乘客高峰期的到达率可以理解为是一定的。因此,只需如何降低电梯的平均运行时间。

电梯的平均运行时间在很多文献中都已成型而且研究的都比较详细,本文参考宗群的《基于排队论的上班高峰电梯群控调度的研究》中给出的电梯平均运行时间的计算公式,给出了如下的一种电梯的平均运行时间的计算公 为电梯调度模型评价体系的一个指标:

其中表示该区内的电梯数;表示电梯在第个分区的平均运行时间,为前30分钟内的到达率,本文计算时取1.78(详解见附录)

(2) 指标二——充分考虑乘客满意度

在上下班高峰期,电梯使用频繁,如何尽快把乘客送到目的地,也是考查电梯调度方案优劣的主要方面,运送乘客的平均运送时间越短,即乘客被运输到目的地的时间越短,则乘客总体的满意度越高,从缩短每位乘客的平均运送时间进而增加乘客的满意度的角度考虑,合理的电梯调度方案应充分考虑每位乘客的平均运送时间

此外,对于第一种评价指标由于在计算时要求最底层必须大于等于2,由参考文献《基于非线性规划的电梯调度研究》知在早晚高峰期分区越多越好,给出最多分区情况下(6个)的最优方案是合理的。但也有不足,因为最底层必须从第二层开始,这在实际中是少见的。因此此时可考虑给出评价电梯运行系统性能的第二个评价指标平均运送时间,其算法在下面第二个模型(研究基于等待条件下写字楼的最优分区规划调度)会详细叙述。

由于讨论的是乘客在等待条件下的上下班高峰的电梯调度问题,为了简化研究只考虑上行而没有下行。并且假设所有乘客以相同的可能性去楼层的每一层。

此方面以用尽量少的时间把每位乘客运送完毕为评价分区分区间的优劣的指标。分区电梯把每位乘客运送完毕的平均运送时间由三部分组成,第一次的停靠时间I,第一次停靠后电梯后续往上运行和停靠的时间II,电梯往下运行的时间(包括停靠时间)III,以及所有乘客进出电梯的时间。其示意图如下:

个分区的平均运送时间为,第1个分区的平均运送时间为。下面考虑分区方式对平均运送时间的影响,可得第个分区送完M个乘客的需要的平均时间为:



此平均运送时间忽视了电梯开始时刻和最后时刻的启动和到站速度变化时间的影响。是人次。

其中的构建如下:

为每个人进入电梯或走出电梯的平均时间是个常量。

下面给出在本文中的具体的,的构建。时间段I的期望

其中是电梯平均停留时间;表示电梯从启动到停止当运行层数时的运行时间:

是每层楼之间电梯的平均运行时间;

常数满足归一化原则,即

又时间段II的期望的算法如下:

其中是电梯平均停留时间;

时间段III的算法如下:

其中层楼的停留时间

3.2电梯运行过程中的变量函数和模型的建立与求解

3.2.1模型一——基于非线性规划的电梯分区调度模型

假定在上班前30分钟内所有的乘客到达的比例为80%(不考虑一楼的特殊情况),则在上班高峰期的乘客到达率=4584*0.8/(30*60)=1.78/秒。平均每层的到达率为1.78/21=0.085/秒,电梯在每一层楼之间的运行时间=3秒,根据公式

maple软件(程序见附件1)可以计算出取不同的时电梯的平均运行时间的样本点见下表:

L=1,六个分区

Ri

Bi

1

2

3

4

5

6

7

8

9

3

9.1001

7.0901

5.7415

4.8018

4.1178

3.6001

3.1965

2.873

2.0608

4

38.0152

28.265

21.8677

17.6881

14.7668

12.6618

11.0719

9.8315

8.8382

5

69.0358

50.2515

37.9823

30.1382

24.8521

21.0942

18.3015

16.1508

14.4466

6

101.6923

73.7827

55.0849

43.1684

35.2372

29.6718

25.5829

22.4642

20.0127

7

135.5267

99.281

73.7898

57.29

46.3481

38.7399

33.2034

20.0128

25.7499

8

170.1604

126.924

94.5693

72.9317

58.5115

48.5441

41.3526

35.96

31.7831

若直接使用上述公式,则目标函数会过于复杂,难以求出最优解。跟据上述公式可知,电梯的在第个分区的平均运行时间为一个关于最

低楼层和该区所包含楼层数的函数,故可以考虑把它近似化为一个较简单的关于的二元表达式。

利用matlab编程可拟合出关于的函数关系式,拟合结果如下所示:

在得到上述的关于的函数关系式后,使用遗传算法,得出近似最优解为:

分区编号

1

2

3

4

5

6

(分区内的层数)

2

2

3

7

3

4

(分区的最底层)

2

4

6

9

16

19

具体方案是在2-3层、4-5层、6-8层、9-15层、16-18层、19-22层各分配一部电梯。

给据上述分配方案,以及上文已给出的计算公式,计算出各分区的值分别为:

得电梯的平均运行时间=914.98

32.2模型二——基于等待条件下写字楼的最优分区规划调度。

为了便于分析研究,假定乘客虚拟为都已经到达。以乘客的平均运送时间为最小化目标,安排区间划分。

当电梯采用分区调度方案时,假设设分成I个区域,则每个区域的最底层为;含有的楼层数为;含有的电梯数目为,则运送完毕往区域的乘客的时间为

其中

结合指标二中的计算公式可以推导出的计算公式如下:

其中为每个人进出电梯的时间,由本题题意知可忽略不计。

于是整个电梯运送完毕所有乘客的平均运送时间为:

从而确定哪一种分区调度规划方案最优的问题就转化为确定的值的大小使得的取值最小的问题。

该模型如下:

其中均为非负整数,N是电梯总数

这是一个非线性整数规划问题,通过穷举法可以找到最优模型,但随着分区数I的逐渐增加,穷举次数将以指数函数的形式增长。因此需要采取其它方法解决这个问题,在参考文献《乘客等待条件下的电梯优化调度模型》给出了一种在确定(这两个指标值的情况很容易确定,因此这样可大大降底求解难度)的情况下然后运用动态规划方法求解分区点的最优位置。基于第一个模型的分析也为了便于与第一个模型比较,采用,六个分区,而且在这六个分区的条件下有。下面考虑用动态规划方法求出最优分区方案。

从门厅开始,从下到上把分区的各个区域作为动态规划的各个阶段,依各个区域(各个阶段)可分配楼层的最高楼层作为各阶段的状态,例如将22层分成六个区域时,从门厅开始每个阶段所处的状态集合分别是 , , ,

, ,

一般的,当把层楼分成个区域时,第个阶段所处的状态集合最后一个阶段即第个阶段的状态集合是。从前一个阶段的某个状态出发选择当前阶段某个状态作为当前区域的最离楼层的过程作为一个决策或者一个状态转移。一般的,第一个阶段允许决策集合,个阶段允许决策集合其中为第阶段的决策状态,个阶段允许决策集合为

用来衡量动态规划实现过程优劣的指标函数是:

最优值函数是:

动态规划的基本方程是:

边界条件是;

利用上述基本方程,当求得时(其中表示门厅),即求得电梯的最优调度方案。

以下给出的是用Maple软件解决上述动态规划问题的部分程序:

>

本文中对公式(3)参数的处理,由上述Maple程序段可知,参数是对分区方案结果无影响的一个常量,为便于计算本文中将其值设为1



结合maple软件的计算结果可得出如下表所示的分区方案:

分区编号

1

2

3

4

5

6

(分区内的层数)

5

7

4

3

2

1

(分区的最底层)

1

6

13

17

20

22

具体方案是在1-5层、6-12层、13-16层、17-19层、20-21层、22层各分配一部电梯。

由于电梯的假设中认为电梯质量相同且输入功率相同,也就是说可以认为,电梯的运行速度,最大载重量等都相同。在乘客有等待的条件下,按照上述的电梯调度算法可求得:在此分区情况下,各分区的平均运送时间为:

秒,秒,秒,

秒,秒,

则此模型下的最优方案总的平均运送时间:

3.2.3比较两种方案的优劣

为了比较两个模型的优劣,现在用模型一中的拟合公式得到模型二方案下各分区电梯的平均运行时间为:

则所有电梯的平均运行时间

同理,由第二个模型的算法计算第一个模型给出的分区方案下的乘客平均运送时间为:

秒,秒,秒,

秒,秒,

则此模型下的最优方案总的平均运送时间:

两种模式下的六部电梯总的平均运行时间,以及运送每位乘客的平均运送时间满足如下关系:

这说明模型一的平均运行时间比较短,但平均运送时间较长。相比较平均运送时间比平均运行时间而言,后者更能为公司创造更多利益,所以综合考虑

各方利益,本文选择模型一所得到的方案作为该实际问题的最优化方案。

具体的方案如下:

分区编号

1

2

3

4

5

6

(分区内的层数)

2

2

3

7

3

4

(分区的最底层)

2

4

6

9

16

19

分区的最顶层

3

5

8

15

18

22

四、 模型评价

4.1模型的优点

1) 模型分别以每位乘客的平均运送时间和每部电梯的平均运行时间作为其评价指标建立了模型的评价体系,具有一般性和较强的应用意义,在一定条件下也适用于其他相似的优化配置问题。

2) 以统计数据为依据,分别从排队论和概率论的角度建立和完善模型,再用计算机模拟检验模型,使模型理论与实际相统一。同时,根据不同算法计算出的两种模型又可以再次作比较,选择出一种最优化的方案。

3) 在最优化方案的基础上,再次逼近现实条件,重新计算出一个更符合现实条件的方案。

4.2模型的缺点

1) 乘客电梯使用的具体时间和时间间隔是随机的,具有偶尔性,本模型为简化计算,给出了一个到达率的概念,会产生一定的随机误差。

2) 考虑到分区方案有多种不同的选择,由于时间关系本文直接考虑了其中最复杂的一种,对于其他中最在最优方案的可能性,查阅相关参看文献,直接不予考虑。

五、 模型改进

当考虑地下两层停车场的运输任务时,为了便于计算考虑从六部电梯中分出一部用来承担这两层的运输任务,这样的话,模型一中地上部分的的运输任务同原模型一相同,数值变化如下:地上部分可用来安排的电梯数=5,在处理方法上与模型一相同。

其中在计算楼上人数时,查阅相关文献,得出目前上班族的驾车率为20%,因此,此时的到达率楼上部分变成原来的80%,乘客到达率为1.43

首先我们利用Maple处理题中所给的数据得出取不同的时电梯的平均运行时间的样本点(见附表)。

然后matlab编程可拟合出关于的函数关系式如下:

拟合出关于的函数关系式后,使用遗传算法,即可输出近似最优解为:

分区编号

1

2

3

4

5

(分区的最底层)

2

7

11

19

22

(分区内的层数)

5

4

8

3

1

5.4742

65.00

70.89

445.16

67202

具体方案是在2-6层、7-10层、11-18层、9-15层、19-21层。第六部电梯供全部人员使用,运行在地下二层到地上22层。

其中

上面表示在地下停车场每层的电梯停留时间,表示在第一层的停留时间,由于题中没有给出地下停车场的电梯停留时间,本文假设其为20,则。故可得1320.13

现用指标二来衡量该方案,其结果如下:

秒,秒,秒,

秒,秒,

其中是经过地下停车场的那部电梯的平均运送时间。

则此模型下的最优方案总的平均运送时间:

与模型一方案相比:秒,发现略有增加,而显著增大,它的实际意义是:当考虑地下两层时,对电梯平均运行时间影响不大,而对每位乘客的平均运送时间影响显著。因此,电梯管理者应考虑是否通过加开电梯数量的方式来降低每位乘客的平均运送时间。

此外,变化量较小也说明了模型一的稳定性良好。

六、 参考文献

[1]宗群.基于排队论的上班高蜂电梯群控调度的研究[J].系统工程与电子技术,200325(6)

[2]宗群.电梯上班高峰动态规划分区控制方法的研究[J].控制与决策,2002(17).

[3]宗群.电梯群控系统虚拟仿真环境设计[J].制造业自动化,199921(5)24-25

[4]姜启源,谢金星.数学模型.北京:高等教育出版社,2003.

[5]汪定伟,王俊伟.智能优化方法. 北京:高等教育出版社,2007.

[6]陈希,麦雪湖.基于非线性规划的电梯调度研究.2011,(1)http://d.g.wanfangdata.com.cn

[7]孙凤欣;蔡军伟.乘客等待条件下的电梯优化调度模型. 2006,18(2),http://d.g.wanfangdata.com.cn

七、附录

一、Maple获得样本点

二、样本点:

L=1,六个分区

Ri

Bi

1

2

3

4

5

6

7

8

9

2

-17.33

-14.78

-13.84

3

9.1001

7.0901

5.7415

4.8018

4.1178

3.6001

3.1965

2.873

2.06

4

38.0152

28.265

21.8677

17.6881

14.767

12.662

11.072

9.832

8.84

5

69.0358

50.2515

37.9823

30.1382

24.852

21.094

18.302

16.15

14.4

6

101.692

73.7827

55.0849

43.1684

35.237

29.672

25.583

22.46

20

7

135.527

99.281

73.7898

57.29

46.348

38.74

33.203

20.01

25.7

8

170.16

126.924

94.5693

72.9317

58.512

48.544

41.353

35.96

31.8

三、Matlab拟合数据程序

clear,clc

%拟合求方程的简化形式

b=[3 3 3 3 3 3 3 3 3

4 4 4 4 4 4 4 4 4

5 5 5 5 5 5 5 5 5

6 6 6 6 6 6 6 6 6

7 7 7 7 7 7 7 7 7

8 8 8 8 8 8 8 8 8];

b=b(:);

r=[1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9];

r=r(:);

b1=b.*b;

r1=r.*r;

br=b.*r;

z=[9.1001 7.0901 5.7415 4.8018 4.1178 3.6001 3.1965 2.873 2.0608

38.0152 28.265 21.8677 17.6881 14.7668 12.6618 11.0719 9.8315 8.8382

69.0358 50.2515 37.9823 30.1382 24.8521 21.0942 18.3015 16.1508 14.4466

101.6923 73.7827 55.0849 43.1684 35.2372 29.6718 25.5829 22.4642 20.0127

135.5267 99.281 73.7898 57.29 46.3481 38.7399 33.2034 20.0128 25.7499

170.1604 126.924 94.5693 72.9317 58.5115 48.5441 41.3526 35.96 31.7831];

z=z(:);

plot3(b,r,z)

X=[ones(size(z)) b r b1 br r1];

[b,bint,r,rint,stats]=regress(z,X)

%t=-48.7089+25.7576*b-4.5995*r+.333*b1-3.08048*br+1.3481*r1;%拟合结果

b =

-48.7089

25.7576

-4.5995

0.3330

-3.0804

1.3481

bint =

-72.2766 -25.1411

17.7795 33.7358

-8.3381 -0.8609

-0.3637 1.0297

-3.4745 -2.6862

1.0510 1.6452

r =

-9.9687

-6.0620

-0.7159

5.6000

12.4278

19.3889

-2.1824

-2.9356

-3.5432

-3.2722

-1.7001

1.3506

3.5692

0.8476

-2.5516

-5.6288

-7.7698

-8.5022

7.0335

4.1524

0.1690

-3.9002

-7.5442

-10.3340

8.0573

6.0193

2.7515

-0.8826

-4.4568

-7.6447

6.5512

6.0063

4.1659

1.8048

-0.7320

-3.1986

2.4631

3.8122

3.8494

3.2724

2.3684

1.3271

-4.2411

-0.7286

1.4787

3.0141

-4.8814

4.9556

-14.1301

-7.7184

-3.1416

0.7268

4.1002

7.1036

rint =

-20.5373 0.5999

-17.7561 5.6321

-12.7057 11.2738

-6.2786 17.4786

1.1749 23.6807

10.0130 28.7648

-13.9030 9.5382

-15.2753 9.4042

-15.9366 8.8502

-15.6720 9.1276

-14.0598 10.6595

-10.3808 13.0819

-8.4228 15.5611

-11.6782 13.3735

-15.0607 9.9576

-18.0510 6.7935

-20.0891 4.5496

-20.2786 3.2742

-4.9146 18.9815

-8.3248 16.6296

-12.3325 12.6706

-16.3495 8.5490

-19.8839 4.7955

-22.0740 1.4059

-3.8494 19.9640

-6.3806 18.4191

-9.6997 15.2026

-13.3571 11.5920

-16.9133 7.9996

-19.5748 4.2854

-5.4204 18.5229

-6.4059 18.4184

-8.2759 16.6077

-10.6857 14.2952

-13.2666 11.8027

-15.2871 8.8898

-9.5527 14.4790

-8.6661 16.2905

-8.6311 16.3299

-9.2223 15.7671

-10.1406 14.8775

-10.7041 13.3584

-15.9131 7.4309

-13.0965 11.6393

-10.9506 13.9081

-9.3914 15.4195

-17.1681 7.4052

-6.6921 16.6033

-24.2824 -3.9779

-19.3282 3.8915

-15.0978 8.8146

-11.2630 12.7165

-7.6670 15.8674

-3.6622 17.8694

stats =

0.9722 335.6417 0 40.3428

四、各楼层到达率

楼层

人数

到达率

1

0

0

2

208

0.080889

3

177

0.068833

4

222

0.086333

5

130

0.050556

6

181

0.070389

7

191

0.074278

8

236

0.091778

p

< class=' _13'>

9

236

0.091778

p

< class=' _13'>

10

139

0.054056

p

< class=' _13'>

11

272

0.105778

p

< class=' _13'>

12

272

0.105778

p

< class=' _13'>

13

272

0.105778

p

< class=' _13'>

14

270

0.105

p

< class=' _13'>

15

300

0.116667

p

< class=' _13'>

16

264

0.102667

p

< class=' _13'>

17

200

0.077778

p

< class=' _13'>

18

200

0.077778

p

< class=' _13'>

19

200

0.077778

p

< class=' _13'>

20

207

0.077778

p

< class=' _13'>

21

207

0.0805

p

< class=' _13'>

22

207

0.0805

p

< class=' _13'>

总人数

4584

1.782667

五、基因算法程序

function zuiyou

tic

clc

figure(1)

clf

clear all

format long

MM=100;

%------------------------ parameters ------------------------

% befor using this function you must specified your function in fun00.m

% file in current directory and then set the parameters

var=6;

n=150;

m0=600;

nmutationG=20;

nmutationR=20;

nelit=2;

valuemin=ones(1,var)*0;

valuemax=ones(1,var)*11.22;

%-------------------------------------------------------------------------

nmutation=nmutationG+nmutationR;

sigma=(valuemax-valuemin)/10;

max1=zeros(nelit,var);

parent=zeros(n,var);

if var==2

cu=[valuemin(1) valuemax(1) valuemin(2) valuemax(2)];

end

for l=1:var-1

p(:,l)=(abs(valuemin(l)+rand(n,1).*(valuemax(l)-valuemin(l))));

p(:,var)=21*ones(n,1)-sum(p(:,1:var-1),2).*ones(n,1);%

if sum(sum(p(:,l))>20)>100

for i=1:MM

for l=1:var-1

p(:,l)=(abs(valuemin(l)+rand(n,1).*(valuemax(l)-valuemin(l))));

end

p(:,var)=21*ones(n,1)-sum(p(:,1:var-1),2).*ones(n,1);

if sum(sum(p(:,l),2)<=20)>85

break;

else continue;

end

end

end

initial=p;

m=m0;

maxvalue=ones(m,1)*(-1e10);

maxvalue(m)=(-1e5);

g=0;

meanvalue(m)=0;

%------------- **** termination criteria ****-------------

while abs(maxvalue(m)-maxvalue(m-(m0-1)))>0.001*maxvalue(m) &...

(abs(maxvalue(m))>1e-10 & abs(maxvalue(m-(m0-1)))>1e-10)...

& m<10000 & abs(maxvalue(m)-meanvalue(m))>1e-5 | m<20

sigma=sigma./(1.05);% reducing the sigma value

% ------ **** % reducing the number of mutation()random **** ----

g=g+1;

if g>10 & nmutationR>0

g=0;

nmutationR=nmutationR-1;

nmutation=nmutationG+nmutationR;

end

%------------- **** function evaluation ****-------------

for i=1:n

y(i)=shiyingdu(p(i,:));

end

s=sort(y);

maxvalue1(1:nelit)=s(n:-1:n-nelit+1);

if nelit==0

maxvalue1(1)=s(n);

for i=1:n

if y(i)==maxvalue1(1)

max1(1,:)=floor(p(i,:));

end

end

end

for k=1:nelit

for i=1:n

if y(i)==maxvalue1(k)

max1(k,:)=floor(p(i,:));

end

end

end

if var==2

figure(1)

subplot(2,2,1)

hold off

plot00(cu)

hold on

plot3(p(:,1),p(:,2),y,'ko')

plot3(max1(1,1),max1(1,2),maxvalue1(1),'r*')

title({'遗传算法演示1' ...

'每代信息(黑o)及最优值(红*'},'color','k')

end

y=y-min(y)*1.02;

sumd=y./sum(y);

meanvalue=y./(sum(y)/n);

for l=1:n

sel=rand;

sumds=0;

j=1;

while sumds

sumds=sumds+sumd(j);

j=j+1;

end

parent(l,:)=p(j-1,:);

end

p=zeros(n,var);

for l=1:var

for j=1:ceil((n-nmutation-nelit)/2)

t=rand*1.5-0.25;

p(2*j-1,l)=(t*parent(2*j-1,l)+(1-t)*parent(2*j,l));

p(2*j,l)=(t*parent(2*j,l)+(1-t)*parent(2*j-1,l));

end

for k=1:nelit

p((n-nmutation-k+1),l)=max1(k,l);

end

for i=n-nmutation+1:n-nmutationR

phi=1-2*rand;

z=erfinv(phi)*(2^0.5);

p(i,l)=(z*sigma(l)+parent(i,l));

end

for i=n-nmutationR+1:n

p(i,1:var)=(valuemin(1:var)+rand(1,var).*(valuemax(1:var)-...

valuemin(1:var)));

end

for i=1:n

for l=1:var

if p(i,l)

p(i,l)=valuemin(l);

elseif p(i,l)>valuemax(l)

p(i,l)=(valuemax(l));

end

end

end

end

p;

m=m+1;

max1;

maxvalue(m)=maxvalue1(1);

maxvalue00(m-m0)=maxvalue1(1);

mean00(m-m0)=sum(s)/n;

meanvalue(m)=mean00(m-m0);

figure(1)

if var==2

figure(1)

subplot(2,2,2)

end

hold off

plot(maxvalue00,'g*')

hold on

plot(mean00,'gv')

hold on

title({'遗传算法演示2',...

'Gaussian最大值绿色* rand最大值黑色o'...

' Gaussian平均值绿色三角','rand平均值黑色三角'}...

,'color','k')

xlabel('代数')

ylabel('函数值')

grid on

%------------- **** Random search ****-------------

%------------- **** for comparision ****-------------

p00=zeros(n,var);

for l=1:var

p00(:,l)=(valuemin(l)+rand(n,1).*(valuemax(l)-valuemin(l)));

end

for i=1:n

y(i)=shiyingdu(p00(i,:));

end

s=sort(y);

maxvalueRAND(m-m0)=s(n);

meanvalueRAND(m-m0)=sum(s)/n;

if m>(m0+1)

if maxvalueRAND(m-m0)

maxvalueRAND(m-m0)=maxvalueRAND(m-(m0+1));

else

for i=1:n

if y(i)==maxvalueRAND(m-m0)

maxRand=p00(i,:);

end

end

end

else

for i=1:n

if y(i)==maxvalueRAND(m-m0)

maxRand=p00(i,:);

end

end

end

plot(maxvalueRAND,'ko')

plot(meanvalueRAND,'kv')

if var==2

figure(1)

subplot(2,2,3)

plot00(cu)

hold on

plot3(maxRand(1,1),maxRand(1,2),maxvalueRAND(m-m0),'kP')

plot3(max1(1,1),max1(1,2),maxvalue00(m-m0),'bo')

title({'最优解-GaussianRandom对比'...

'每代(黑色rand'},'color','k')

end

if var==2

figure(1)

subplot(2,2,4)

plot00(cu)

hold on

title({'最大值'...

'G法:o,R: v'},'color','k')

end

pause(0.001)

end

if var==2

plot3(max1(1,1),max1(1,2),maxvalue1,'o')

plot3(maxRand(1,1),maxRand(1,2),maxvalueRAND(m-m0),'v')

end

clc

disp(' Genetic Algorithm(real coding) ')

disp(' By: Javad Ivakpour ')

disp(' E-mail: javad7@gmail.com ')

disp('**************************************')

num_of_fun_evaluation=n*m

max_point_GA=max1(1,:)

maxvalue_GA=maxvalue00(m-m0)

max_point_RS=maxRand

maxvalue_RS=maxvalueRAND(m-m0)

toc

p=floor(p)

Maple程序段

六、Maple部分程序段(用于动态规划的求解)

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

第一个模型用到的确Maple的程序段:

>

>

%适应度函数

function y=shiyingdu(R)

dx=1;

y=0;

if sum(R)<22

t1=R(1)/21*nihe(3,R(1));

t2=R(2)/21*nihe(3+R(1),R(2));

t3=R(3)/21*nihe(3+sum(R(1:2)),R(3));

t4=R(4)/21*nihe(3+sum(R(1:3)),R(4));

t5=R(5)/21*nihe(3+sum(R(1:4)),R(5));

t6=R(6)/21*nihe(3+sum(R(1:5)),R(6));

y=y+(t1)+(t2)+(t3)+(t4)+(t5)+(t6);

else

y=y-dx;

end

y=-y;

七、Maple部分程序段(求解实际模型)

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

本文来源:https://www.2haoxitong.net/k/doc/42b9711dc5da50e2524d7ff7.html

《数学建模 电梯调度问题8.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式