数学建模电梯调度问题1

更新时间:2024-05-23 17:31:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

电 梯 调 度 问 题

电梯调度问题

摘要:

本题为一个电梯调度的优化问题,在一栋特定的写字楼内,利用现有的电梯资源,如何使用电梯能提高它的最大运输量,在人流密度十分大的情况下,如何更快的疏通人流成为一个备受关注的问题。为了评价一个电梯群系统的运作效率,及运载能力,在第一问中,我们用层次分析发,从效益、成本两大方面给出了六个分立的小指标,一同构成电梯群运载效率的指标体系。对第二问,本文根据题目情况的特殊性,定义忙期作为目标函数,对该电梯调度问题建立非线性规划模型,最后用遗传算法对模型求解。第三问中,本文将模型回归实际,分析假设对模型结果的影响,给出改进方案。

对于问题一,本文用评价方法中的层次分析法对电梯群系统的运作效率及运载能力进行分析。经分析,本文最终确定平均候梯时间、最长候车时间、平均行程时间、平均运营人数(服务强度)、平均服务时间及停站次数这六个指标作为电梯调度的指标体系。在这些评价指标的基础上,本文细化评价过程,给出完整的评价方案:首先,采用极差变换法对评价指标做无量纲化处理。然后,采用综合评价法对模型进行评价。在这个过程中,本文采用受人主观影响较小的夹角余弦法来确定权重系数。

对于第二问,本文建立非线性优化模型。借鉴排队论的思想,本文定义忙期,构造了针对本题中特定情形的简单数学表达式,作为目标函数。利用matlab软件,采用遗传算法对模型求解。多次运行可得到多个结果,然后用第一问中的评价模型进行评价,最终选出较优方案。最得到如下方案:

第一个电梯可停层数为:1,2,3,4,5,6,7,10,14,15,16,19,20,22 第二个电梯可停层数:1,4,5,7,10,13,16,18,19,20,21 第三个电梯可停层数:1,2,3,4,6,8,10,11,12,15,16,20,22 第四个电梯可停层数:1,2,3,4,7,10,11,17,18,19,21,22 第五个电梯可停层数:1,2,4,7,8,9,17,18,19,20,21 第六个电梯可停层数:1,4,5,6,7,8,9,11,13,18,19,20 此方案平均忙期为:15.3分钟。

对于第三问,本文是从每分钟到达人群数的分布角度改进模型的。第二问中

假设在忙期,每分到达人数服从均匀分布,而在实际中,我们可以首先对此进行调查统计,跟据统计数据可以拟合出更符合实际分布函数,可以改进结果。 关键字:电梯调度;层次分析;非线性规划;神经网络;极差法;夹角余弦

一、 问题重述

随着社会经济的持续发展,高层建筑的数量不断增加,其建设高度更令人瞩目,电梯也开始为高层建筑的垂直交通提供保障。然而建筑高度的提升使电梯交通系统需求变得越来越复杂,有效的电梯垂直交通系统面临许多挑战。其中,人们在要求减少电梯设备占用建筑物的核心空间的同时,要求电梯交通系统的服务数量和质量有大幅度提高。特别在工作日里每天早晚上下班高峰期,电梯是非常拥挤的。如何对现有资源合理利用,缓解电梯的运输压力,缩短人们的等待时间,是高层建筑垂直交通系统所必须解决的问题。由此便产生了电梯的调度问题。我们将针对对早晚高峰期的人流情况,对电梯调度问题建立数学模型,以期获得合理的优化方案。本文考虑解决以下问题:

1. 2. 3.

给出若干合理的模型评价指标

针对该特定写字楼的简化情况给出一个合理的调度方案

在第二问的基础上,将数学模型进一步实际化,以期能够尽量适用于

实际情况,用于解决现实的电梯调度问题。

二、 问题分析

(一) 问题一的分析

为了实现电梯群系统的优化调度,本文分别从效益和成本两个方向出发,考虑该数学模型的评价指标。效益即电梯的运输强度,成本即电梯运行的耗能量,其中耗能量可用平均行程来反映。效益也可从多方面考虑:从服务质量的角度说,人们总是希望候梯时间与乘梯时间的总和越短越好;从服务数量的角度说,总是希望电梯交通系统具有最经济的电梯配置,同时能够提供较高的运送处理能力。在寻找指标时,需要指标既有代表性,能反映系统的工作情况,又有易衡量性,容易通过调查统计来获得。即使我们在评价模型时可以较为容易的得到评价指标数据便于人们得到评价结果。因此,本文通过层次分析发,提出了多个评价指标,包括:平均候梯时间、最长候车时间、平均行程时间、平均运营人数(服务强度)、

平均服务时间及停站次数。

上述个指标的单位不尽相同,为统一评价指标的属性,本文采用极差法对各指标进行无量纲化处理。指标权重的合理确定是综合评价结果是否可信的一个核心问题。为减少主观影响,本文采用客观赋权值法——变异系数发得到权重系数。最终建立了综合评价模型,对电梯调度模型进行评价。

(二) 问题二的分析

本题中,已给出每层楼间电梯的平均运行时间,电梯在各层的平均停留时间,各层办公人数,电梯的最大容量。为了提高电梯的使用率,我们通过电梯的分组管理——每组的电梯只可在特定的楼层停留,不同组的可停层数不同来达到对电梯运行的时间的优化。具体对每种方案,我们要确定如下三组数据:

1. 分为几组; 2. 每组有多少个电梯; 3. 每组分别可达的楼层。

本问题非一般的线性优化模型,因此本题选用遗传算法求解。

第一问提供了多个评价指标,若综合考虑这些指标,则问题归结为一个多目标规划问题,情况就会较为复杂。由于其中许多指标在该特定情况(针对早晚上下班高峰期的电梯运行情况)下的影响甚微,于是可以得到简化的规划模型。如:

服务时间。每个人从进入电梯开始至到达目的楼层所需时间的可变行小。从概率角度说,当乘电梯的人较多时,每一时刻电梯内人的目的楼层会基本覆盖所有电梯可达楼层,即可视为:电梯会在每个可达楼层停留。所以,优化模型中可以不考虑此项指标。

平均行程时间。针对早晚高峰期,人流方向是相当固定的。例如:在上班高峰期,几乎所有人都是从一层进入,分别到达个各楼层,而中途只下不上。因此个各电梯的运行路程都是从一层到达该电梯能到达的最高层再下来,如此做往复运动。在特定的电梯分组方案中,该项指标的可变性也不大。

本文通过对各种可能影响因素的细致分析,分析各个指标的可能表达情况及影响因素,考虑考虑增大电梯单位时间的运载量,减少人们的等待时间是大家更为关注的问题,直接的想法为:从每个等待个体角度出发,以等待时间为目标函数。但这种方法表达式复杂,不易在遗传算法里实现。因此我们变换思路,从电

梯角度出发,以电梯最大运载能力为目标,针对本题——当人流蜂拥而至时,我们选取将所有人全部运到目的楼层电梯组所需的总时间为目标函数,并作为适应值函数,在遗传算法中作为选择算子进行计算。

(三) 对问题三的分析

在问题二中的模型中用了一些假设使得模型与实际有写偏差。本文的视角不同也会对模型的对实际情况的拟合度有影响。在第三问中,我们将根据第二问的运行结果,结合实际,改进模型。

三、 模型假设

1. 假设人们均在特点时间段达到,并在该时间中,每时刻到达人数服从均

匀分布;

2. 假设每层楼之间电梯的平均运行时间是3秒,最底层(地上一层)平均停

留时间是20秒,其他各层若停留,则平均停留时间为10秒,电梯在各层的相应的停留时间内乘梯人员能够完成出入电梯; 3. 假设各层人员都乘坐电梯,并对电梯无偏见;

4. 假设人们都在忙期到达,忙期内到达人数服从均匀分布; 5. 假设每个电梯在运行时都满载。

四、

Т等待时间

N停站次数(第一项评价指标)

T平均服务时间(第二项评价指标)

定义与符号说明

R平均运营人数(第三项评价指标) Тr平均运行时间(第四项评价指标) Тm最长等待时间(第五项评价指标) Т平均等待时间(第六项评价指标)

aij表示第i种方案关于第j项评价因素的指标值

AiT =(ai1,ai2.ai3,ai4,ai5,ai6)是底i个方案关于这六项评价指标的指标值向量

TTTA?{A1T,A2,A3,?An}为n个决策方案的集合

6Hi??bijwj第i个指标的综合评价得分

j?1k第k个电梯 l第l层 Rl第l层办公人数

nk第k个电梯完成总目标的运行次数 xkl第k个电梯在l层的停留情况

Xk?(xk1,xk2,?,xk22)为第k个电梯的运行模式

TTTTTTX?(X1,X2,X3,X4,X5,X6)为这六个电梯组的运行模式,及电梯组的调度情

W电梯群的忙期的长短

W电梯的平均忙期

tk第k个电梯单次运行时在楼层停留时间 rk第k个电梯单次运行时在楼层间行进时间 nk表示第k个电梯在忙期运行次数 F(Xk):第k个电梯单次运行时间

五、 模型的建立与求解 (一) 问题一 电梯调度的评价模型

1) 用层次分析法[1]寻找评价指标。

对模型进行评价首先要找出合理的评价指标。因此我们采用层次分析法,对模型全面分析,寻找评价指标。对此,我们分别从效益、成本两个方面出发,建立了如下层次图,如图一:

图中,从左至又,分别表示第j项评价因素,其中j=1,2,3,4,5,6。

aij表示第i种方案关于第j项评价因素的指标值。

AiT =(ai1,ai2.ai3,ai4,ai5,ai6)是底i个方案关于这六项评价指标的指标值向量

TTTA?{A1T,A2,A3,?An}为n个决策方案的集合

2) 运用极差变换法[2]建立无量纲的效益型矩阵B。 变换公式为:

?(maxaij?aij)j?(j?1,4)?(maxaij?minaij)j?j B?(bij)n?6,bij??aij)?(aij?minj(j?2,3,5,6)?(maxa?mina)ij?j?iij3) 计算评价指标的权重。运用夹角余弦法[3]由矩阵B来确定各指标的

权重。

夹角余弦法的基本概念:由无量纲的效益矩阵B?(bij)n*m,则可得到各方案与理想最佳和最劣的相对偏差矩阵为:

U?(uij)n*m,V?(vij)n*m

式中,uij?maxbij?bijjmaxbij?minbijjj,vij?bij?minbijjmaxbij?minbij,再计算U,V对

jj应列向量的夹角余弦得到初始权重,归一化后得到客观性权向量w。

运用夹角余弦法建立客观性权重向量。首先由指标矩阵A得到各方案与理想最佳和最劣方案的相对偏差矩阵R与矩阵T,然后求出R与T两矩阵对应列向量的夹角余弦,并最为初始权重,归一化后得到客观性权向量

w?(w1,w2,w3,w4,w5,w6).

4) 计算综合评价值。

由矩阵B可得到第i个指标的综合评价得分Hi??bijwj,且Hi值越大越好。

j?16用matlab编程,对给定的评价矩阵可以直接计算出结果。程序见附录:

(二) 问题二 电梯调度的优化模型

1. 建立优化模型。

通过分析,本文首先对电梯调度方案进行量化,即要表达出电梯分组情况和每组电梯可停留楼层的情况。因此我们用六个向量分别表示各个电梯可停留楼层的情况,具体如下:

我们用0-1变量xkl表示第k个电梯在l层停留情况

(表示第1k个电梯在l层停留?xkl??0k个电梯不在l层停留)?(表示第

Xk?(xk1,xk2,?,xk22)为第k个电梯的运行模式;

TTTTTTX?(X1,X2,X3,X4,X5,X6)为这六个电梯组的运行模式,及电梯组的调

度情况;

在早晚人流高峰期时,常常会造成人流拥堵,即会在某个连续的时间段内,等待接受服务的人数大于电梯所能提供服务的最大人数,这就使部分人不能及时接受到服务,引用排队论里的说法就是队长超过了一定的限额。在这段时间内,电梯每次都应是最高效率工作,对上班高峰期来说,就是每次会在第一层满载后

再上楼,对下班高峰期来说,就是电梯下到第一层是满载情况。本文定义此段时间为忙期。因此本文选取忙期的长短作为衡量电梯运行的效率的指标,以此来作为目标函数,对电梯群的调度情况进行优化。

电梯群的调度情况用一个矩阵来表示,即X。 目标函数的表示,即忙期的长短,本文记做W。 首先考虑上班高峰期。

在这期间,人们大多到达时间比较集中,不妨假设所有人均在忙期到达,等待接收服务,并且每个时刻到达的人数服从均匀分布。则忙期即为电梯把人全部运到指定楼层所用的时间。这又可以表示为每个电梯往复一次的运行时间乘以运行次数得到值的最大值。

在这期间,人的流动方向是固定的,在忙期,乘电梯的人较多,所有从概率的角度来讲,每一时刻电梯内人的目的楼层会基本覆盖所有电梯可达楼层,即可视为:电梯会在每个可达楼层停留。

因此第k个电梯单次运行时间内,在楼层停留的时间可以表示为:

tk?10?xkl

l?122在楼层间行进时间为:

rk?2*3?(l?1)xkl

l?122则第k个电梯单次运行时间为:

F(Xk)?10?xkl?2*3?(l?1)xkll?1l?12222

nk表示第k个电梯在忙期运行次数 则nk满足的条件为:

?20*k?16Rl?xl?122*nkxkl?RlRlkl

因此,电梯群的忙期可以表示为:

W?G(X)?max[nk(F(Xk)?20)?20]

每个电梯的平均忙期为:

W??(nk?16k(F(Xk)?20)?20)6

对于每组Xk,相同的为一组;

2. 模型求解

本文采用遗传算法求解。

标准的遗传算法可用 6 个参数来描述。

GA?(P0,M,?,?,?,t)

P0是初始群体,M是总体体积,? 是选择运算,?是杂交算子,?是变异算子,t是停机条件。

因为Xk,X均为0-1构成的矩阵,可直接作为遗传编码,即:

Xk为染色体X为个体的染色体组 1) 遗传算子:

重要的遗传算子有 3种: 选择、 交叉和变异.选择是指从当前种群中根据适应度的高低将个体直接复制到下一代种群的过程. 交叉是遗传算法中最重要的步骤, 它对遗传算法的性能和收敛影响很大,通过交叉,种群中的优良基因得到保存与传播. 变异发生的概率一般很小,变异操作的目的是为了保持基因的多样性。[4]

2) 选择:

将种群中的个体按适应度从高到低排序,选择概率为Ps, 选定适应度最小的最后共 POP- SI ZE* P s个个体,将其淘汰。从高适应度的个体中选取若干个做父体,使用下述的交叉、 变异等操作生成同样数量的新子代补充至种群中。

3) 交叉:

每层基因各自进行一次交叉操作。对于第一、 二层,使用较小的交叉概率进行单点交叉, 即根据交叉概率P c1 = P c2 = 0

005在基因组上选定一个数位

作交叉点,互换两父体交叉点后的基因。对于第三层,使用较大的交叉概率进行两

点交叉, 交叉概率 Pc3 = 0

4) 变异:

01。

变异也是各层独立进行。对于第一、 二层,以变异概率 Pm1 = Pm2 = 0.005 , 确定 u 个变异位置S1, S2 , S3, …, Su, 将这些位置上的基因取反。对于第三层,以变异概率 Pm3 = 0.01确定变异位置后,将这些位置上的数换成一个[ - 10 , 10]间的高斯分布随机小数,即:Wi , j = Gaussian( - 10 , 10) 式中 Gaussian( - 10 , 10) 表示呈高斯分布的[ - 10, 10]间的随机小数。

5) 迭代判断:

若遗传最大迭代次数已到, 判断种群中是否出现了网络总误差 E达到用户指定精度的个体,如果有, 则选出适应度最大者作为迭代结果,如果没有,则本次运算不收敛;若未完成迭代,计算各染色体的适应度,并将各染色体按适应度从高到低排序,转“选择”处继续。[5]

6) 适应值函数:

为了引导遗传搜索,应定义一个适应度函数。电梯调度问题的目的是将忙期尽可能缩小 ,即将G(X)最小化。然而,遗传算法则是努力将基因的适应度函数最大化, 基于该原因,适应度函数定义如下:

S?1/G(X)

平均电梯忙期时间更容易表达,且可以缩短计算时间,并且效果也相当,因此我们用W(X)代替G(X),将其倒数作为适应值函数。

根据以上的基因表示, 设计相应的遗传操作并定义适应度函数,遗传算法可以得以实现。

程序流程图如下所示:

初始化参数随机生成初始群计算初始群适应值是否满足循环次数是输出最优结果选择交叉循环次数+1变异计算新群适应值新群替换原群记录最优结果 将程序运行多次得到多个优化结果:

3. 结果整理

1) 方案一:

第一次运行结果:

Bestpopulation Columns 1 1 1 1 1 0 1 Columns 23 1 0 1 1 0 0 Columns 45 1 1 1 0 1 1 Columns 67 0 1 0 1 1 1 Columns 89 0 0 0 1 0 0 Columns 111 1 1 1 1 0 0

=

through 22 1 1 1 0 through 44 1 0 0 0 through 66 0 1 1 1 through 88 1 1 0 1 through 110 0 0 1 0 through 132 1 0 1 1

1 1 1 0 0

0 0 1 0 0

0 1 0 1 0

0 0 1 0 1

1 1 0 0 0

0 1 1 1 0 0 1

1 0 1 0 1 0 0

0 0 0 1 0 1 1

0 0

0 0

1 1

0 0

0 0

1 1

1

1

0 0 1 1 1 0 0 1 0 1 1 0

Besttargetfunvalue =918

(说明:程序设计所求的Besttargetfunvalue是六个电梯忙期的累 加和,即6W(X),且单位是秒,即918秒)

程序运行的适应度函数图像为:

即:

第一个电梯可停层数为:1,2,3,4,5,6,8,12,14,15,16,19,20,22 第二个电梯可停层数,1,3,4,8,10,12,13,15,17,20

第三个电梯可停层数:1,2,3,5,6,7,8,9,11,16,18,19,21,22 第四个电梯可停层数:1,2,4,5,7,10,15,18,19,20 第五个电梯可停层数:1,6,11,15,18,19,20

第六个电梯可停层数:1,2,3,4,6,7,10,11,12,15,17,18,20 这六个电梯的平均忙期为:2.55分钟

2) 方案二:

第二次运行结果

Bestpopulation = Columns 1 through 22 1 1 1 1 1 1

1

0 0 1 0 0 0 1 1 1 0 1 Columns 23 through 44 1 0 0 1 1 0

1

0 0 1 0 0 1 0 0 1 1 0 Columns 45 through 66 0 1 1 1 0 1

0

1 0 1 1 1 0 0 1 1 0 1 Columns 67 through 88 0 1 1 1 0 0

1

0 0 1 1 0 0 0 0 0 1 1 Columns 89 through 110

0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 Columns 111 through 132 1 0 0 1 1 1

1

1

1

0

1

0

1

0

0

1 0 0

Besttargetfunvalue =918

1 0 0 1 0 1 1 0 0 0 1 1

0 1 1 0

0

1

1

1011

1

程序运行的适应度函数图像为:

即:

第一个电梯可停层数为:1,2,3,4,5,6,7,10,14,15,16,19,20,22 第二个电梯可停层数:1,4,5,7,10,13,16,18,19,20,21 第三个电梯可停层数:1,2,3,4,6,8,10,11,12,15,16,20,22 第四个电梯可停层数:1,2,3,4,7,10,11,17,18,19,21,22 第五个电梯可停层数:1,2,4,7,8,9,17,18,19,20,21 第六个电梯可停层数:1,4,5,6,7,8,9,11,13,18,19,20 这六个电梯的平均忙期为:2.55分钟

3) 方案三:

第三次运行结果

Bestpopulation Columns 1 1 1 1

=

through 1 1

22 1

1

0

1

1

0

0

0

0

0

1

0

0

0

0 1 0 Columns 23 through 44 1 1 1 1 1 1

1

1 0 0 1 0 1 1 1 1 1 1 1 1 Columns 45 through 66 0 0 1 0 0 0

1

1 0 1 1 0 1 0 0 1 0 1 1 1 Columns 67 through 88 1 0 1 0 1 1

0

1 0 1 0 1 1 0 0 1 1 1 0 0 Columns 89 through 110 1 1 0 0 0 0

1

1 1 1 0 0 0 0 0 0 0 1 0 1 Columns 111 through 132 0 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1

Besttargetfunvalue =

918

程序运行的适应度函数图像为:

1 0

0 0 0 1 1 1 1 0

即:

第一个电梯可停层数为:1,2,3,4,5,6,7,9,10,16,21

第二个电梯可停层数:1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,20,21,22 第三个电梯可停层数:1,3,7,8,10,11,13,16,20,21,22 第四个电梯可停层数:1,3,5,6,810,12,13,16,17,19,20 第五个电梯可停层数:1,2,7,8,9,10,18,19,20,22

第六个电梯可停层数:1,2,3,6,9,10,11,12,13,14,15,18,20,21,22 这六个电梯的平均忙期为:2.55分钟

4. 结果分析 对以上三种方案进行评价: 方案一:

单次运行的停车次数:68

平均运营人数:300(总人数/总时间) 方案二:

单次运行的停车次数:70

平均运营人数:300(总人数/总时间) 方案三:

单次运行的停车次数:75

平均运营人数:300(总人数/总时间) 得到不完整的评价矩阵为:

?68300?? A??70300????75300??比较三种结果我们采用第一种方案 即:

运行第一题的程序得到各个

第一个电梯可停层数为:1,2,3,4,5,6,7,10,14,15,16,19,20,22 第二个电梯可停层数:1,4,5,7,10,13,16,18,19,20,21

第三个电梯可停层数:1,2,3,4,6,8,10,11,12,15,16,20,22 第四个电梯可停层数:1,2,3,4,7,10,11,17,18,19,21,22 第五个电梯可停层数:1,2,4,7,8,9,17,18,19,20,21 第六个电梯可停层数:1,4,5,6,7,8,9,11,13,18,19,20

(三) 问题三 模型修正

在第二问的模型中,我们假设人们均在忙期到达,在忙期中,每分钟到达人数服从均匀分布,这点不大符合实际。事实上,不可能每个人都在忙期到达。若用泊松分布代替平均分布,计算当在一定时间内到达人数超过某一特定值时则进入忙期,应该会更接近实际,而这需要通过实际调查,找出统计数据,根据统计数据确定分布函数的参数。或者是根据实际数据拟合出其他形式的找到最符合的每分钟到达人数分布函数。

为简化模型求解,问题二的模型只选取了其中一个角度作为优化的目标函数,也就是说我们在优化时以尽快疏散到达人群为首要目标。虽然这已经可以较好的反映问题,但在写字楼中,人流大的时间较短,且人流总量有限,忙期持续时间不会太长。它毕竟不同于火车站、飞机场,人流动量十分可观,且忙期较长,一旦造成人流的拥堵这影响时间长,要求有最快的运输能力。电梯系统的服务范围小,因此我们将忙期限制在某个范围内就行,然后将其作为一个约束条件放在该规划模型中。这样我们可以对每个人的最长的等待时间最短为目标,及模型可以优化

为当使电梯的忙期在一定范围内时,如果能让每个人的最长等待时间缩短,那么将会更满足人们的需要。当然,这个范围的确定,要参照第二问的结果,不能太高也不能太

低。

六、 对模型的评价

比较上述模型的多次运行结果,每次方案虽略有不同,但他们的平均电梯忙期是相同的,可以认为,这种方法是可靠的。但是单看15分钟左右的忙期也略微显长。求出六个电梯在每层都可停的方案在本文的假设下的平均忙期值,这可通过比较我们的节约时间来评价。而对模型的评价也很不充分,应该将优化后的调度方案的结果与不加调度方案的结果相比较。

而问题一中的评价指标均易通过实际调查来获得,通过统计数据的简单处理

便可以得到满意的评价指标矩阵,但由于我们不能得第一手资料,所以得到完整可信的评价指标值是很困难的,本文也只是在理论上阐述了评价方案和计算程序。

七、 参考文献

[1] 喻湘存,熊曙初.系统工程教程. 北京:清华大学出版社 北京交通大学出版社,227-237.

[2] 马 莉. MATLAB数学实验与建模. 北京:清华大学出版社,2010. 121-123. [4] 席卫东,乔 兵,朱剑英. 基于改进遗传算法的柔性作业车间调度[J]. 哈尔滨工业大学学报,2007,第 39卷 第 7期:1152-1153.

[5] 冯??锋 , 徐?? 琪. 基于神经网络模式的遗传算法在 CRM的数据挖掘优化研究[J].黑龙江大学自然科学学报,2010,第27卷 第六期:798.

八、 附录一:评价模型的matlab程序:

附录

A=[29.09 24.05 1.94 4.55 67.40 67.60;36.97 22.90 2.60 2.43 67.90 54.55;... 29.13 20.40 1.97 3.60 68.70 64.00;23.92 27.20 1.17 7.92 58.10 55.20]; %运用极差法建立无量纲的效益矩阵B

B=[(A(:,1:3)-ones(4,1)*min(A(:,1:3))),(ones(4,1)*max(A(:,4:5))-A(:,4:5)),...

A(:,6)-min(A(:,6))]./(ones(4,1)*range(A)) %理想最佳和最劣方案向量U与V

U=[max(A(:,1:3)),min(A(:,4:5)),max(A(:,6))] V=[min(A(:,1:3)),max(A(:,4:5)),min(A(:,6))] %计算相对偏差矩阵R与T

R=abs(A-ones(4,1)*U)./(ones(4,1)*range(A)) T=abs(A-ones(4,1)*V)./(ones(4,1)*range(A)) %运用夹角余弦法建立权重向量w r=normc(R); t=normc(T);

w=sum((r.*t))/sum(sum(r.*t)) %计算综合评价值 H=B*(w')

附录二:matlab的遗传算法设计:

%遗传算法主程序

popsize=50; %初始种群大小 Generationnmax=100; %最大代数

pcrossover=0.90; %交配概率 pmutation=0.09; %变异概率

%产生初始种群

population=round(rand(popsize,132));

%计算适应度,返回适应度Fitvalue和累积概率cumsump [Fitvalue,cumsump]=fitnessfun(population); Generation=1;

while Generation

%选择操作

seln=selection(population,cumsump);

%交叉操作

scro=crossover(population,seln,pcrossover); scnew(j,:)=scro(1,:); scnew(j+1,:)=scro(2,:);

%变异操作

smnew(j,:)=mutation(scnew(j,:),pmutation); smnew(j+1,:)=mutation(scnew(j+1,:),pmutation); end

population=smnew; %产生了新的种群

%计算新种群的适应度

[Fitvalue,cumsump]=fitnessfun(population); %记录当前代最好的适应度和平均适应度 [fmax,nmax]=max(Fitvalue); fmean=mean(Fitvalue); ymax(Generation)=fmax; ymean(Generation)=fmean; %记录当前代的最佳染色体个体 x=population(nmax,:); Generation=Generation+1 end

Generation=Generation-1; Bestpopulation=x

Besttargetfunvalue=targetfun(x) %绘制经过遗传运算后的适应度曲线。 figure(1);

hand1=plot(1:Generation,ymax);

set(hand1,'linestyle','-','linewidth',1.8,'marker','*','markersize',6)

hold on;

hand2=plot(1:Generation,ymean);

set(hand2,'color','r','linestyle','-','linewidth',1.8,... 'marker','h','markersize',6)

xlabel('进化代数');ylabel('最大/平均适应度');xlim([1 Generationnmax]);

legend('最大适应度','平均适应度'); box off;hold off;

%子程序:新种群交叉操作,函数名称存储为crossover.m function scro=crossover(population,seln,pc); BitLength=size(population,2);

pcc=IfCroIfMut(pc); %根据交叉概率决定是否进行交叉操作,1则是,0则否 if pcc==1

chb=round(rand*(BitLength-2))+1; %在[1,BitLength-1]范围内随机产生一个交叉位

scro(1,:)=[population(seln(1),1:chb) population(seln(2),chb+1:BitLength)]; scro(2,:)=[population(seln(2),1:chb) population(seln(1),chb+1:BitLength)]; else

scro(1,:)=population(seln(1),:); scro(2,:)=population(seln(2),:); end

%子程序:计算适应度函数, 函数名称存储为fitnessfun

function [Fitvalue,cumsump]=fitnessfun(population); popsize=size(population,1); %有popsize个个体即50 for i=1:popsize x=population(i,:);

Fitvalue(i)=targetfun(x); %计算函数值,即适应度 end

%计算选择概率

fsum=sum(Fitvalue);

Pperpopulationl=Fitvalue/fsum; Pperpopulation=Pperpopulationl; %计算累积概率

cumsump(1)=Pperpopulation(1); for i=2:popsize

cumsump(i)=cumsump(i-1)+Pperpopulation(i); end

cumsump=cumsump';

%子程序:判断遗传运算是否需要进行交叉或变异, 函数名称存储为IfCroIfMut.m function pcc=IfCroIfMut(mutORcro); test(1:100)=0;

l=round(100*mutORcro); test(1:l)=1;

n=round(rand*99)+1; pcc=test(n);

%子程序:新种群变异操作,函数名称存储为mutation.m

function snnew=mutation(snew,pmutation); BitLength=size(snew,2); snnew=snew;

pmm=IfCroIfMut(pmutation); %根据变异概率决定是否进行变异操作,1则是,0则否 if pmm==1

chb=round(rand*(BitLength-1))+1; %在[1,BitLength]范围内随机产生一个变异位

snnew(chb)=abs(snew(chb)-1); end

%子程序:新种群选择操作, 函数名称存储为selection.m function seln=selection(population,cumsump); %从种群中选择两个个体 for i=1:2

r=rand; %产生一个随机数 prand=cumsump-r; j=1;

while prand(j)<0 j=j+1; end

seln(i)=j; %选中个体的序号 end

%子程序:对于优化最小值或极小值函数问题,目标函数可以作为适应度函数 %函数名称存储为targetfun.m

function fval=targetfun(x); %目标函数 for i=1:132

m=fix(i-1/22)+1;%将行向量x(1,132)化成矩阵y(m,n) n=mod(i-1,22)+1; y(m,n)=x(1,i); end

R=[0 208 177 222 130 181 191 236 236 139 272 272 272 270 300 264 200 200 200 200 207 207]';%R是22层的工作人数组成的列向量 %约束条件:

%目标函数(电梯的平均运行时间) z=y*R;fval=0; for i=1:6

fval=fval+z(i); end

本文来源:https://www.bwwdw.com/article/h4x7.html

Top