混合求解

2024-07-28

混合求解(精选8篇)

混合求解 篇1

0 引言

装箱问题(Bin Packing Problem,BPP)是一类重要的组合优化问题,在现实生活中有着广泛的应用背景,特别在现代物流中,许多问题都抽象化为装箱问题或其变形,如货物如何装载,才能提高运载器具的利用率,从而降低运输成本;物流任务应如何调度,才能提高运行效率,等等。但在理论上,装箱问题是一个NP难题[1],很难精确求解。因此对其求解进行研究具有重要的理论价值和实际意义。

到目前为止,针对该问题人们提出了许多算法,但都有其局限性:枚举法和分支定界等精确算法在箱子数目稍大时,会出现“组合爆炸”;一些近似算法如下次适应NF、首次适应FF、降序首次适应FFD、最佳适应BF等,在解决复杂的装箱问题时结果与物品的体积数据有较大关系,在极端情况下很不理想;遗传算法能在合理的时间内求得最优解或满意解,但易陷入局部最优。

本文针对以上算法的不足,提出一种混合算法,该算法结合遗传算法良好的全局搜索能力和禁忌搜索具有记忆能力的全局逐步优化特性,增强全局和局部意义下的搜索能力和效率。实例证明,在求解装箱问题时,该算法性能明显优于单纯遗传算法。

1 问题描述

装箱问题是指将重量分别为w1,w2,…,wnwj,>0,j=1,2,…,n,的n个物体装入许多个同种大小的箱子(最多n个),且每个箱子有重量限制c c,>w j,。问题是寻找最优的装箱方案,即在保证每个物体都被装入且重量之和不超过箱子的容量限制情况下,使用的箱子数量最少。

数学模型表示如下:

式(1)是装箱问题的目标函数;式(2)保证装入箱子的物体重量之和不超过其容量限制;式(3)保证每个物体都被放入箱子中;式(4)与式(5)是决策变量的整数约束。

2 遗传禁忌混合策略

遗传算法(Genetic Algorithm,GA)是Holland教授于20世纪60年代受生物进化论的启发而提出的一种基于生存遗传和进化机制的随机优化方法。它将问题的求解表示成染色体适者生存的过程,通过染色体群的一代代不断进化,包括复制、交叉和变异等操作,最终收敛到最适应环境的个体,从而求得问题的最优解或满意解[2]。遗传算法开创了在解空间中从多出发点搜索问题的先河[4],能从概率的意义上以随机的方式寻求到问题的最优解,具有并行性,很强的通用性,良好的全局性和鲁棒性等特点。但是,在实际应用中,由于受选择压力、交叉和变异操作等因素的影响,容易出现早熟现象,局部搜索能力差。

禁忌搜索(Tabu Search,TS)最早是由Glover提出的,是对局部邻域搜索的一种扩展,通过引入一个灵活的存储结构和相应的禁忌准则来避免迂回搜索,并通过藐视准则来赦免一些被禁忌的优良状态,进而保证多样化的有效探索以最终实现全局优化。但禁忌搜索时搜索效率低,并且禁忌搜索对初始解具有较强的依赖性[3]。

鉴于以上两种算法各自的优缺点,本文设计了一种混合算法,将遗传算法和禁忌搜索结合起来,相互取长补短,这样混合算法具有遗传算法多出发点和禁忌搜索的记忆功能及爬山能力强的特点[4]。混合算法结构如图1所示,具体来讲,就是将禁忌搜索作为遗传算法的变异算子,初始群体经过选择、交叉操作后产生的新个体作为禁忌搜索的初始解,然后禁忌搜索每一个参与变异的个体,搜索后的新个体与未变异的个体形成新的种群,再对新种群中的个体进行上述混合操作,直至算法终止。

3 遗传禁忌混合算法设计

3.1 算法步骤

步骤1给定初始参数,包括最大迭代次数T,群体规模m,交叉概率Pc和最大变异概率Pm,令当前代数t=0。

步骤2确定初始群体,随机产生n个箱子的m个全排列作为初始染色体xt1,…,xtm。

步骤3计算群体中每个个体的适应度值f(xt1),…,f (xtm))

步骤4按轮盘赌方式从群体中选择m个个体作为父代,个体被选择的概率为,i=1,2,…,m。选择过程中使用

最优个体保留策略。

步骤5按照交叉概率Pc,对群体中的个体进行交叉操作。

步骤6按照变异概率Pm,采用禁忌算法作为变异算子,把一个要变异的染色体作为禁忌搜索的输入,把禁忌搜索得到的解作为变异的新个体。

步骤7如果t<T,令t=t+1,转步骤3,否则转步骤8。

步骤8输出最优解,终止算法。

禁忌搜索算法操作步骤如下:

(1)按照变异概率从当前代中随机选择部分个体进入禁忌搜索集合,给定算法参数。

(2)从禁忌搜索中随机选取一个个体作为当前解,置禁忌表为空。

(3)利用当前解的邻域函数产生所有(或若干)邻域解,并从中选择部分候选解。

(4)对候选解判断藐视准则是否满足?若是,则用满足藐视准则的最佳状态y代替x成为新的当前解,即x=y,并用与y对应的禁忌对象替换最早进入禁忌表的禁忌对象,修改禁忌表中各禁忌对象的任期,同时用y替换“best so far”状态,然后转步骤(6);否则,继续以下步骤。

(5)判断候选解对应的各对象的禁忌属性。将候选解集中非禁忌对象对应的最佳状态作为新的当前解,同时用与之对应的禁忌对象替换最早进入禁忌表的禁忌对象,并修改禁忌表中各禁忌对象的任期。

(6)判断对该解的禁忌搜索是否满足终止条件,若是,则结束搜索,转步骤(7);否则返回步骤(3)。

(7)判断禁忌搜索集合中的每个解是否都搜索完毕,若是结束该过程;否则转步骤(2)。

3.2 参数设计

(1)编码方案。本文采用自然数编码。把所有物体按顺序进行编号,随机生成一个序列,从而组成一个染色体。例如有5个物体需要装箱,生成的染色体可能有(1,2,3,4,5)和(2,5,4,1,3)等。用这种编码方法,没有把箱子编入染色体中,染色体的结构仅和物体有关[5]。

(2)适应度函数。因为本文中研究的装箱问题,是以所用箱子数最少为目标函数,即目标函数是求问题的最小解。假设某一染色体对应的箱子数是Fx,则适应度函数可表示为fx=K-Fx,其中K是一足够大的正数。

F xF F由下次适应法NFFF确定。具体步骤是依次从每个随机生成的染色体中按顺序取出每个基因(即物体)放入一个箱子中,如果该箱子放满了,则放入下一个箱子,直到所有物品放完为止,此时所用的箱子数即为F xF F。

(3)选择算子。在这里使用轮盘赌选择算子,也叫比例选择算子,即个体被选中并遗传到下一代群体中的概率与该个体的适应度大小成正比。同时,在选择的过程中引入最优保存策略,用上一代适应值最大的染色体代替新一代适应值最低的染色体,可保证当前的最优个体不会被破坏,加速算法向最优解收敛。

(4)交叉算子。交叉是指对两个相互配对的染色体以某种方式相互交换部分基因,从而形成两个新的个体。本文选择最基本两点交叉算子,其具体执行过程如下:(1)群体中的个体进行两两配对。(2)对每一对相互配对的个体,随机设置两个位置为交叉点。(3)对每一对相互配对的个体,依设定的交叉概率的交叉点相互交换两个交叉点之间的染色体,从而产生出两个新的个体。

(5)变异算子。采用禁忌搜索算法作为变异算子,把一个要变异的染色体作为禁忌搜索的输入,把禁忌搜索得到的解作为变异的新个体,在这里以染色体本身为禁忌对象,采用两点互换操作构造邻域并从中选择部分个体作为候选解,以目标函数值作为藐视准则。

4 仿真试验

4.1 算例一

采用以上算法步骤,作者试算了文献[5]中的一组数据,这是一个由15个物体和足够多的单位箱子(容量为1)组成的装箱问题,物品重量。设定混合算法的运行参数为{迭代次数,种群大小,交叉概率,变异概率,禁忌长度}={100,100,0.7,0.1,4}进行试算,运行20次,以100%的概率找到最优解4,与文献[5]中的计算结果比较如表1所示。

由以上数据可以看出,与文献[5]中采用的混合遗传算法和简单遗传算法相比,本文算法能在较短的时间内收敛到最优解,其效率要优于以上两种算法。

4.2 算例二

为了进一步测试本混合算法的性能,作者对另外19组数据进行试验并和简单遗传算法比较,这些数据由随机方法产生,箱子数从10到100个,算法由Matlab编程实现。实验结果如图2所示。

通过以上比较图,我们可以看到,当物品数量较少F10≤n≤30F时,两种算法最终收敛到相同的解。随着问题规模的扩大,简单遗传算法的装箱方案所使用的箱子数要比混合算法的多。用△表示多用的箱子,当物品数n=50,△=2,△随n的增大而逐渐增大,当n=100,△=5。由此可见,当箱子数量增大的一定规模时,简单遗传算法因其固有的缺点,在运行过程中可能会过早收敛到非满意解,不适合用来求解;而此时混合算法却能在较短的时间内求得较优的装箱方案,表现出明显的优越性。

5结论

本文为求解装箱问题提出了一种基于遗传算法和禁忌搜索的混合算法,该算法具有多点出发和爬山能力强等特点,有效地解决了传统遗传算法的早熟收敛问题。通过实例计算,证明遗传禁忌混合算法是一种行之有效的算法,对解决装箱问题有很好的实用价值。

参考文献

[1]Garey M R,Johnson D S.Computers and intractabililty:a guide to the theory of NP-completeness[M].San Francisco:Freeman,1979.

[2]Coffman E G,Garey M R,Johnson D S.Approximation Algorithms for Bin packing:A survey[C]//In:D Hochbaumed.Approximation Algorithms for NP-Hard problems.Boston:PWS Publishing,1996,46-93.

[3]王凌.智能优化算法及其应用[M].北京:清华大学出版社,施普林格出版社,2001.

[4]李大卫,王莉,王梦光.遗传算法与禁忌搜索算法的混合策略[J].系统工程学报,1998,13(3):28-34.

[5]汤岩,贾红雨,廖洁君.混合遗传算法在装箱问题中的应用研究[J].计算机与现代化,2004(11):13-14,18.

混合求解 篇2

用混合网格求解三维可压雷诺平均Navier-Stokes方程

用混合网格求解了三维紊流N-S方程.在物面附近采用三棱柱网格,其它区域则采用四面体网格.方程的求解采用Jamson的.有限体积法,紊流模型采用两层Baldwin-Lomax代数紊流模型.数值算例表明,用混合网格求解三维紊流Navier-Stokes是非常有效的.

作 者:刘学强 伍贻兆 夏健 作者单位:南京航空航天大学,空气动力学系,南京,210016刊 名:计算力学学报 ISTIC EI PKU英文刊名:CHINESE JOURNAL OF COMPUTATIONAL MECHANICS CHINESE JOURNAL OF COMPUTATIONAL MECHANICS年,卷(期):19(3)分类号:V211.3关键词:混合网格 有限体积法 紊流模型

混合求解 篇3

敏捷卫星是近年来出现的新一代对地观测卫星,由于保密的原因,国内外公开的相关敏捷卫星任务规划问题的文献资料不是很多。典型的主要有法国Lemaitre等人针对新一代敏捷卫星Pleiades的任务规划问题研究,提出了约束规划模型,比较了约束规划、贪婪、动态规划以及局部搜索等四种算法,并指出了各自的适用范围[1]。Panwadee针对敏捷卫星任务规划问题建立了多目标优化模型,提出了遗传算法的求解策略[2]。在国内研究中针对敏捷卫星的常规任务规划问题,陈宇宁,等分析了灵巧卫星调度问题的约束条件,构建约束满足模型,提出了基于蚁群算法的调度求解策略[3]。李玉庆构建了任务规划调度的数学模型,并采用了模拟退火算法和遗传算法相结合的混合遗传算法求解策略[4]。对于非敏捷卫星任务规划,美国的Wolfe等学者采用了三种算法求解对地观测卫星任务规划问题,研究表明遗传算法求解效率优于优先级调度算法和具有前看功能的求解算法[5]。由此可见,在解决卫星任务规划非线性NP-hard问题时,智能优化算法在求解敏捷卫星任务规划问题时具有很多优势。

在深入分析敏捷卫星任务规划特点的基础上,首先对敏捷卫星任务规划问题进行了抽象描述;然后构建了基于多目标的敏捷卫星任务规划模型;最后提出了蚁群算法和免疫遗传算法相结合的混合遗传求解方法。

1 问题描述及模型构建

1.1 敏捷卫星观测方式

敏捷卫星观测视角可以围绕翻滚、俯仰和偏航三个轴变化,具有三维观测自由度,它可以进行完成滚动、俯仰、偏航的星上动作,因此其具有很强的姿态机动能力。敏捷卫星有可能在能力允许的范围内沿任意走向对目标进行观测,因此敏捷卫星的灵活性和观测效率由于姿态敏捷的控制而得到了很大的提高,如图1所示[6,7]。敏捷卫星切换速度快,在俯仰轴14秒内可达到45度,平均速度可达到了3.2度每秒[8]。敏捷卫星能够进行俯仰,其可视时间窗口也相对比较宽泛,其可以在可见时间窗口内较自由地选择可见时间窗对观测目标进行观测。而非敏捷卫星不能做出俯仰的姿态,因此其只有在经过地面目标上空时才可见观测目标[9,10]。它们的观测方式对比如图2所示。正是由于敏捷卫星观测方式的复杂性,导致其任务规划求解对比于传统的非敏捷卫星任务规划问题更为复杂。

1.2 敏捷卫星对地观测组织实施

敏捷卫星对地实施过程是将包含有任务类型、任务目标优先级以及任务图像分辨率等要求的多用户任务需求,经过智能辅助分析后形成规范化的任务集;以敏捷卫星和地面站部署的现有资源集为基础,充分考虑敏捷卫星携带传感器类型、存储容量、俯仰角以及侧视角范围等一系列约束条件,在一定的规划时间范围内统一规划有限的敏捷卫星资源,将待观测任务集合理地安排到各个敏捷卫星上执行完成观测任务;然后将任务规划方案提交给地面测控中心进行操控实施调度,通过地面测控与观测目标的数据接收处理、评估后将用户所需的数据发送给敏捷卫星需求用户。卫星任务规划可以大大提高敏捷卫星的对地观测效率,可以满足更多的敏捷卫星用户需求。如图3所示敏捷卫星对地观测组织实施流程。

1.3 模型假设

敏捷卫星任务规划问题是一个极为复杂的问题,涉及到的决策对象繁多,还需要考虑对象间的关系错综复杂,而在解决问题时不可能考虑到所有的约束条件;为了更贴近实际,解决关键问题,需要对任务规划问题简化并适当做出一些假设,而这些假设都是与卫星任务规划调度实际紧密结合的,假设也是合理的[11]。

(1)每个敏捷卫星只携带一个星载传感器。

(2)同一颗敏捷卫星同一时刻只能执行一个元任务,而且只要开始执行一个元任务,则不能中断。

(3)敏捷卫星可靠性高,工作时故障发生的可能性很低;同时也不考虑天气、云层等有关气象条件对目标观测的影响。

(4)除周期性任务外,每个元任务在敏捷卫星规划的一个周期内只执行一次。

1.4 模型构建

1.4.1 目标函数

敏捷卫星任务规划的目标是在某一确定的时间段内,在满足卫星约束的前提条件下以尽量少的资源消耗完成尽可能多的任务、获得最大的综合收益,同时也希望各个敏捷卫星间负载更加均衡,达到尽量好的卫星成像效果。因此其敏捷卫星任务规划问题是一个多目标优化问题。任务规划目标函数数学表述如下。

目标1:任务收益率最大,即

目标2:任务完成率最大,即:

目标3:资源使用均衡度最大,即尽可能满足各可用载荷上负载均衡,工作时长均匀一些。即:

资源使用均衡度公式如下:

其中,max SWT=mjax(SWTj)。wi为观测任务ti的收益,PRI(ti)为观测任务ti的优先级,N为观测任务集中的任务总数。Tetij代表观测任务ti的结束时间,Tstij代表观测任务ti的开始时间。对于上述三个目标可以利用加权法实现。

maxf1=αM1+βM2+γM3,其中α,β,γ为影响因子,α+β+γ=1。

1.4.2 主要约束条件及数学描述

(1)可见时间约束

式(1)和式(2)要求观测任务起始时间必须在卫星与观测目标的可见时间窗内执行,其可见时间长度必须要大于任务的执行时长。其中,ETik为观测任务ti的可见时间窗的结束时间,Tstij为可见时间窗ti的开始时间。DuraT(ti)为观测任务的持续时间。

(2)俯仰角和侧摆角约束

式(3)和式(4)是侧摆角与俯仰角的约束条件,要求在任务转换时敏捷卫星在有限的时间内能够达到下次观测任务时所需要满足俯仰角和侧摆角的约束条件。其中,FAgij和BAgij分别为敏捷卫星j中观测任务ti在STjik时刻的俯仰角和侧摆角;ajf和ajb分别为敏捷卫星j进行姿态调整俯仰和侧摆两个姿态时的角加速度。

(3)太阳高度角约束

式(5)是太阳高度角约束,要求卫星执行任务时刻应该满足最小太阳高度角要求。其中,Ai(Ai∈(0,90])是任务ti在STjik时刻的太阳高度角。SEAmin是满足成像要求的最小太阳高度角。

(4)能量约束

式(6)是能量约束,卫星侧摆俯仰以及照相时所消耗的能量敏捷卫星应该能满足,其应该小于卫星最大能量。其中,ηi为敏捷卫星j观测单位时间内所消耗的能量;ρi表示敏捷卫星j在姿态调整时单位角度内所消耗的能量;πj卫星j在阳照区单位时间内的充电量;SNLij表示执行观测任务ti前敏捷卫星j可用的能量;SNLi表示敏捷卫星j最大的可用能量。

(5)存储容量约束

存储容量约束式(7)要求敏捷卫星在一个轨道圈次内执行观测任务ti时星上可用的存储容量满足成像要求。其中,SSRjt代表敏捷卫星j在t时刻的存储容量;imageSSR(tj)表示为执行观测任务ti所需要的存储容量;MaxSSRj代表敏捷卫星j的最大存储容量。

2 免疫遗传蚁群混合求解算法

从敏捷卫星任务规划模型中可以得出其目标函数具有非可导性、非连续;任务规划中的一些先验信息较少或者不存在;因此其为求解带来了一定的难度。遗传算法对于解决多数组合优化和调度问题,处理复杂约束问题和非线性问题具有众多优势。

同时针对蚁群算法具有初始解好,易陷入局部最优,收敛速度慢,求解精度不高等特点,并结合遗传算法的优点[12]。本文提出了将蚁群算法与免疫遗传算法相结合的求解算法,其能够克服每个算法的缺点,充分发挥各自的优势。

2.1 混合求解算法流程

设计的求解算法基本思想是将蚁群算法每次迭代中所产生的全部解的集合作为初始种群,对初始种群进行免疫遗传算法的多次进化迭代操作,尝试寻找相对于当前全局最优解更优秀的解,如图4所示求解算法流程图。

2.2 状态转移规则及信息素的更新

针对敏捷卫星任务规划的特点,借鉴蚂蚁系统的思想,本文在蚁群算法中的状态转移规则如下:一只处于节点r的蚂蚁应用式(8)选择将要移动到的下一个j节点[13]。

式(8)中,q为[0,1]均匀分布的随机变量,q0(0≤q0≤1)是一个参数;ηij是距离tij的倒数,tij是任务执行间隔时间的影响;Y的选择主要依据式(9)中的概率分布函数。

式(9)中,alldk(Ti)为蚂蚁k下一步可执行任务的集合;τij是信息素分布,PRI(ti)为观测任务的优先级影响。α,β,γ分别为各个影响因素作用强度的权重。

信息素局部更新策略:当蚂蚁从任务T(t0)出发,依照状态转移寻优策略选择下一个任务节点,若找不到,则返回;若找到,则构造可执行任务序列TSequ,将其目标值与当前全局最优任务执行序列TSequB的目标进行比较,若小于,则TSequ所有边上的信息素挥发,τNij=(1-ρ)τijOld,ρ为信息素挥发率;若大于,则更新全局最优解TSequB=TSequ。为加快收敛速度,每次依据式(10)只对最优任务序列上的信息素浓度进行更新。

式(10)中,,R为设定的参数。

2.3 混合求解算法基本操作

2.3.1 染色体编码结构

编码是遗传算法的关键,编码结构的选择会对求解空间产生直接的影响。编码方案是确定染色体串与问题的搜索空间中的点之间的映射关系。本文采用二进制编码方式构造染色体。敏捷卫星成像目标任务只有完成或不能完成两种状态,长度为N的等长0—1二进制编码构造染色体被选择采用。每一个二进制序列被称之为一个染色体段,因此整个二进制序列所代表的敏捷卫星成像任务的集合即为任务规划的结果。染色体串的每一位取值代表了该观测目标是否被选取,每个基因位对应着一个敏捷卫星观测元任务。

其中,将X={x1x2…xi…xN}。

为种群中的一个染色体,其染色体编码结构如图5所示。

2.3.2 遗传操作

选择:选择基于适应度比例的选择策略,即常用的轮盘赌法,个体i被选中的概率为,其中fi为个体i的适应度值;N为种群个体数目。

交叉:采用多点交叉的方法来进行,如图6所示。多点交叉比单点交叉具有更好的鲁棒性,具有更好的重组能力,不但可以解决过早收敛的问题,而且可以加快算法对整个解空间的搜索速度。

变异:每个个体的变异概率采用公式(11)来计算:

式(11)中,fmin和favg分别表示当前种群中个体适应度值的最小值和平均值,fi代表第i个个体的适应度值,P[i]代表第i个体变异概率。

3 实例分析

实例为10颗星,600个元任务的仿真场景,应用STK软件及Matlab2011a软件,卫星轨道数据来源于AGI公司于2010年6月发布的全球卫星轨道数据库,任务分布主要集中在重点热点地区,任务生成方法采用文献[14]的方法。为表述更加清晰,选择在实际应用中最广泛的点目标观测需求为例展开研究。仿真中的参数设置为:免疫遗传操作最大代数MAXGEN=1 300,交叉概率pc=0.95,变异概率pm=0.08,疫苗接种概率pv=0.5;蚂蚁数AntCount=40。所设计的算法与遗传算法和免疫遗传算法进行了对比,在内存为4 G,Intel-i5双核心CPU的环境下将每个算法运行15次,取平均值,对任务收益率、负载均衡度以及综合收益率几个方面进行了比较分析。运行结果统计处理后如表1、图7、图8所示。

从表1中可以看出在达到约98%最佳解性能时,遗传算法所用时间最多,免疫遗传算法次之,IA-COGA算法所用的时间最少,与GA相比节省了约373 s,可见其求解效率很高。

为运算结果对比更加清晰,加入了求解敏捷卫星任务规划的规则算法,主要有先来先服务(FIFS)和优先级规则算法(Priority),由于规则方法执行时间极短,因此本文将其画成直线与其它算法形成直观的对比,便于分析。从图7中可以得出IACOGA算法综合指标最高,其任务收益率高于其它算法;其次是IGA算法得到的结果,较接近IACOGA算法求得的值;GA算法、IGA算法以及IACOGA算法最终都超过了FIFS算法和Priority算法,相比较而言GA得到的理想解是最不理想的。从图8中可以得出IACOGA算法的任务均衡度也是最高的,优于其它两种算法。

综合来看,在算法初期,IGA算法曲线起点较高,但随着时间的推移,曲线上升幅度很小,很平缓。GA算法曲线初始起点较低,一段时间内上升幅度较大,但到最后曲线很是平缓,其方差波动也较大。IACOGA算法曲线起点较高,曲线上升也较快,其方差波动也较小,因此所设计的混合遗传算法具有较佳性能。

4 结束语

混合求解 篇4

关键词:遗传算法,反问题,混合优化

反问题是一类比较特殊的问题, 其任务是由已知的部分结果确定模型或反求原因。同时绝大部分的反问题是不适定的, 其特征是解的不唯一性和不稳定性。不适定反问题在热传导中可以分为两类:相变和无相变。无相变情况下的反问题, 如热系统参数辨识, 热流辨识, 温度辨识等, 已有许多研究[1]。有相变情况下的反问题, 实际上是一个自由边界反问题[2] (反stefan问题) 。本文涉及到的这类问题是:在材料融化过程中, 由已知的温度和热流数据实时估计自由边界的反问题。而我们的任务是, 对该问题中的目标价值函数进行优化求解。

采用传统优化方法求解热传导反问题, 其解常常是振荡的和不收敛的, 且依赖于初始搜索点。有许多非线性方法可用于解决这一问题, 遗憾的是大多数方法要么是计算量过大, 要么是容易陷于局部极小。有效解决这一问题的方法之一是采用具有良好的鲁棒性的算法, 遗传算法是一种有效的非线性优化方法, 它基于生物界中普遍存在的遗传、变异、进化等过程, 在许多方面, 都有别于经典的优化方法, 已经应用到线性规划、图象识别和参数反演等领域。本文的主要目标就是提出一种具有良好鲁棒性和快速性的优化算法以确定热传导过程中材料的自由边界。

1 热传导反问题数学模型

图1所示为一段长为L, 处于融化过程的固体材料。定义: (x, t) T (x, t) 为固体部分的温度场;t s (t) 为液体与固体之间的交界面。Ti (x) 为材料初始时刻的温度分布, Tf为材料的融化温度, Θ (t) 、Υ (t) 分别为x=L处的温度和热流。

经过归一化处理后, 图1中s (t) 的变化范围介于0和1之间。于是, 该问题在数学上可以描述为:

以上各物理量均为归一化后的无量纲量。反问题就是:根据Θ (t) 和Υ (t) 来求解s (t) 。

本文的目标价值函数来自上面的热传导反问题, 定义如下:

式 (2) 中α为调节系数, y1 (t) 为热流的真实值, y2 (t) 为计算值。

A为算子, 由热传导正问题[3]决定。也就是已知s (t) 和Θ (t) 求y (t) (亦即Υ (t) ) 。在L2空间中, 经离散化后上述目标价值函数变成:

本文就是优化求解目标函数J。由式 (4) 看出我们要优化求解的反问题目标函数与一般典型函数相比有其特殊性:首先, 为了达到实时估计s (t) 的目的, 式 (4) 是在一个滑动区间τ上优化求解[4];其次对于函数值J的计算比较麻烦, 先要求解正问题, 即利用式 (1) 计算出温度场T, 然后用式 (3) 计算出热流y (t) , 代入式 (4) 才能求得J。

2 GA求解热传导反问题的仿真实验

遗传算法由染色体编码方法、适应度函数和遗传算子构成[5]。为了克服二进制编码的缺点, 对于反问题直接采用十进制进行编码。这样可以直接对解进行遗传操作, 从而便于引入与问题领域相关的启发式信息, 增加算法的搜索能力。对于初始的n个种群个体值可以用公式

得到。

适应度函数是遗传算法进化过程的驱动力, 也是进行自然选择的唯一标准, 它的设计应结合求解问题本身的要求而定。本文是极小化目标函数, 适应度函数取目标函数值的倒数。

遗传算子有选择算子, 交叉算子和变异算子三种。常用的选择算子很多, 这里采用期望值法选择进入下一代的种群;交叉运算采用公式

处理, 式 (6) 中, Y为交叉前的种群值。变异操作采用公式:

进行计算。

仿真是基于由Neumann获得的一个空间一维情况下的解析解[6]。Neumann的解析解为:

式中erfc () 为误差传递函数, k*为相对扩散系数。取λ=0.158, k*=0.125。同时为了衡量求解效果, 在L2空间中定义一个误差函数:

式 (11) 中, s (i) 的取值由公式 (8) 计算求得, s0 (i) 为优化求解值。

以下求解中s (i) 取200个点, 滑动区间采样点数τ=5, 调节系数α=0.3 (仿真结果表明求解效果较好) 。下面主要讨论GA求解中种群大小、交叉率、变异率对优化效果的影响。由于GA是随机搜索, 每次的计算结果会有差别, 为此, 以下的计算数据都是多次计算得到的平均值, 且迭代次数均取100次。

3.1种群规模对求解的影响

取交叉率Pc=0.9, 变异率Pm用公式Pm=0.10-[1:1:n]×0.01/n线性取值。改变种群规模, 求解数据如表1。

通常, 种群规模太小不能提供足够的采样点, 以致算法性能很差;种群规模太大, 尽管可以增加优化信息, 阻止早熟收敛的发生, 但无疑会增加计算量, 造成收敛时间太长, 表现为收敛速度缓慢。综合考虑求解精度和求解时间, 以下计算中种群个体数取30。

2.2 变异率对求解的影响

变异操作是对种群模式的扰动, 有利于增加种群的多样性。但是, 变异概率太小则很难产生新模式, 变异概率太大则会使遗传算法成为随机搜索算法。

表2和表3分别是变异率取定值和按照公式Pm=0.10-[1:1:n]×0.01/n线性变化取值的不同运算结果。

比较表2和表3可知, 变异率自适应取值求解效果较好。

2.3 交叉率对求解的影响

种群大小取30个, 变异率Pm线性取值, 改变交叉率看求解效果, 如表4。

交叉概率太大时, 种群中个体更新很快, 会造成高适应度值的个体很快被破坏掉;概率太小时, 交叉操作很少进行, 从而会使搜索停滞不前, 造成算法的不收敛, 这里取交叉率0.9比较合适。

以上各参数取值下的仿真结果如图2所示。

3 混合优化算法求解热传导反问题

由图2可以看到, 上述采用遗传算法求解反问题效果基本令人满意。但考虑到实际问题需要实时估计自由边界s (t) , 且s (t) 变化较缓慢, 因此, 为了进一步提高算法的稳定性, 减少计算时间, 可在滑动区间上使用如下的线性假设:

式 (12) 中β为线性预估系数。在这个假设下, J变成了一个一元函数。此时, 目标价值函数具有如下的形式:

考虑到经典优化算法收敛速度快的优点, 下面采用遗传算法+梯度法的混合策略, 先用梯度法迭代计算若干次, 让搜索点向最优解靠近, 然后再用遗传算法求解, 这样既能保证算法的稳定性, 又可以弥补遗传算法收敛速度慢的缺点。梯度法为经典优化算法, 利用公式xk+1=xk+λkdk进行迭代寻优。其中λk为搜索步长, dk=-f (xk) 为搜索方向。

仿真发现, 混合求解中梯度法取定步长比取最优步长效果好, 且λk=0.5, 迭代次数15次较为合适, 仿真结果如图3。将单纯的遗传算法求解和改进的混合算法求解数据作一比较, 见表5。

由表5和图3可以看出, 混合优化算法比起基本遗传算法, 求解精度和速度都大为提高。

4 结语

本文首先采用遗传算法对一类热传导反问题进行了优化求解, 保证了算法的收敛性, 然后利用遗传算法和梯度法相结合的混合策略对其求解, 综合了二者的优点, 同时保证了求解的精度和速度。仿真结果表明, 对于热传导反问题目标函数的优化, GA+Gradient是一个行之有效的方法。

参考文献

[1]Shau R.An improved algorithm for inverse designproblem with multi-ple materials.ASME Heat Transfer, 1990;112:10—15

[2]Ang D D, Pham ND A, Thanh D N.An inverse stefan problem:iden-tification of boundary value.Journal of Computational and Applied Mathematics, 1996;66:75—84

[3]王新房, 汪春华.基于有限元的一类Stefan问题数值模型研究.自动化技术与应用, 2007;26 (5) :9—12

[4]Benard C, Afshari A.Inverse stefan problem:tracking of the interface position from measurements on the solid phase.Numer Methods Eng, 1992;35:835—851

[5]陈国良, 王煦法.遗传算法及其应用.北京:人民邮电出版社, 1996

混合求解 篇5

集团现金池是为解决集团企业“高额”闲置资金沉淀、“高额”银行贷款、“高额”财务费用的“三高”现象而诞生的资金集中管理模式[1]。集团母公司通过“现金池”以委托贷款的形式,将所有本地区及跨地区子公司的资金进行统一调配,化外源融资为内源融资,实现了集团资金高度集中管理。

现金池对于解决集团资金沉淀和高额银行贷款成效显著,但由于本质上是采用委托贷款的方式将资金在集团内部划拨,因此必须承担额外的成本,包括营业利息税、印花税以及交付银行的手续费。这些财务费用伴随着集团内各公司之间的每日的财务往来活动而产生。虽然现金池令集团公司享受到委托贷款所带来内部融资低廉的贷款利率,但对于现金池的主要客户——拥有数百家子公司的大型跨国集团企业来说,所有子公司每日大量的财务往来所产生的财务成本已构成了影响现金池效率、侵蚀委托贷款收益的重要因素。

本文将现金池收益优化模型抽象成为资源受限项目调度问题RCPSP[2],这是一种研究在工程项目活动网络图中满足活动时序、资源等约束来安排各活动开始或结束时间的调度方法。考虑到现金池收益优化问题的解空间巨大,为在求解质量和求解效率上寻找到平衡,本文采用结合了遗传算法和模拟退火算法特点的混合遗传算法HGA(Hybrid Genetic Algorithm)作为智能优化算法,来解决现金池收益优化问题。

1现金池收益优化问题建模

1.1问题描述

伴随集团现金池业务的发展,其资金集中管理模式不仅要求下属企业在日间统一结算之前上报现有的资金存量信息和当日内的资金流量信息,还要求提交未来一段时间间隔内的资金流入流出量[3]。这就使得主要针对减少现金池财务成本的优化成为可能。

如图1所示,进行现金池收益优化时,要处理的对象是本日累计资金流量信息,以及各公司预测的未来一段特定时间内本公司会作出的主要资金流量信息,包括各子公司之间或母子公司之间的转账支付、母公司向子公司划拨短期委托贷款、吸纳短期委托存款、划拨长期委托贷款、吸纳长期委托存款等。

初期的现金池模型基本采用依照财务活动申请的优先顺序进行直接处理,忽略了对于集团内部财务活动网络图的优化调度会带来的财务成本的节约。例如,活动i代表子公司1向集团现金池申请某笔金额为Mi的长期委托贷款,活动j代表公司2存入集团现金池某笔金额为Mj的长期委托存款,Mj>Mi,这两笔并行业务如果按照申请顺序,即ij前的顺序调度,而集团公司碰巧在活动i发生时没有足够的金额发放这笔长期委托贷款,则意味着公司1将不得不以长期贷款的市场利率从银行贷款,现金池的作用未得到发挥;但如果按照活动j在活动i之前的顺序调度,则完全可以利用现金池实现内部融资,享受委托贷款利率。

目前已经有现金池产品[3]开始利用预测财务活动的资金流入流出量,来判断未来某时点的资金余缺,并作出内部调剂资金或向外融通资金的决策,但主要都是由集团公司或集团公司委托的银行进行人工参与,没有应用优化算法进行智能分析决策的报道。

1.2现金池收益优化问题数学模型

现金池收益优化问题可以转化为一个RCPSP问题来求解。将现金池内资金视为资源,同时将优化时本日累计的以及预测时段内的集团内部各公司之间的J项财务活动抽象为J项任务,按照其申请执行顺序进行编号,并对其进行重新调度,以寻找到实现集团公司级别财务成本开销最小的排序。

设有任务j,j=1,2,…,J,它与部分任务之间存在着紧前关系,例如任务j在它的任一项紧前任务i完成之前不能开始执行,即i属于Pj,Pj为任务j的紧前任务集;设现金池在t时刻的资金余量为Mt,如果在t时刻存在任务j,其属性标识指明其为向现金池申请委托贷款数额rj的活动,则它属于本次调度在t时刻的所有委托贷款申请业务集合Aclt

可建立如下数学模型:

min{C(W)=i=1JΙΟi+ΙΤi+SDi+CCi+ΝCi} (1)

s.t. Sj-Si≥1 ∀iPj (2)

(3)

其中,式(1)表示目标函数,代表集团现金池总财务费用C(W)最小,W为对集团内部财务活动网络的一种调度方案,IOi为执行任务i产生的委托贷款利息支出,ITi为执行任务i产生的利息收入营业税,SDi为执行任务i产生的印花税,CCi为执行任务i产生的委托贷款手续费,NCi为执行任务i产生的资金普通划转结算手续费;式(2)表示任务紧前关系约束,任务j的开始时间要晚于其紧前约束集合Pj中的任何任务i的开始时间;式(3)表示资源约束,即在任意时刻t从现金池申请委托贷款的业务的资金总量不超过现金池在此时刻的资金余量Mt

2混合遗传算法

2.1混合遗传算法基本思想

遗传算法是基于自然选择和群体遗传机理的搜索算法,是求解RCPSP这种在计算理论上为NP难问题的常用算法[4]。遗传算法具有鲁棒性强、高效实用的显著特点。理论上已经证明,遗传算法能从概率的意义上以随机的方式寻找到问题的最优解,但基本遗传算法也存在容易早熟收敛、局部寻优能力不强等缺点。

模拟退火算法SA(Simulated Annealing)自1983年由Kirkpatrick等引入组合优化理论之后,解决了诸如VLSI等大规模优化设计问题[5]。本文在用遗传算法搜索全局最优解的过程中融合了SA算法思想,利用其出色的局部寻优能力,形成混合遗传算法HGA,用来提高遗传算法的运行效率和求解质量。

2.2编码[6]

将集团内各公司的财务活动网络图抽象成一个任务链表,作为HGA算法操作的染色体W,这是一个满足紧前约束和资源约束的任务序列,具体编码方式如图2所示。

2.3适应度函数

本文采用的适应度函数为:

f(W)=Vm-C(W) (4)

式中,取一个较大的值Vm,并计算个体W代表的任务序列所带来的财务成本C(W),并做两者之差,作为用于判断解个体优劣程度的适应度函数。

2.4遗传算子设计

(1) 选择算子

集团现金池收益优化模型中采用的是排序选择方法,即对种群按照个体适应度值大小排序,并分成等量三份,将排序优先的个体复制两份,将排序居中的个体排序复制一份,排序靠后的个体不复制,构成新种群。该方法将种群质量在适应度值方面进行了初步优化。

(2) 交叉算子

采用单点交叉,记参与交叉运算的2个个体的一个为母体Wm,另一个为父体Wf,经交叉运算产生的2个后代分别为女儿Wd和儿子Ws。在[1,J]中产生一个随机整数r,女儿的前r个位置的基因继承母体,即Wdi=Wmi,i=1,2,…,r;而i=r+1,r+2,…,J位置的基因则来自父体,其中女儿中已有的任务不再考虑,并保持各任务在附体中的相对位置,即Ddi=Wfk,k=min{Wfk∉{Wd1,Wd2,...Wdi-1},k=1,2,...,J},i=r+1,r+2,…,J,类似地可以得到子个体[7]。对于交叉后的子个体进行合法性检查,判断其是否满足紧前约束和资源约束,放弃无法满足约束的子个体。

(3) 变异算子

对表示任务序列的个体采用插入操作,即按照变异概率Rm选中个体上的某个基因,选出此基因的所有紧前节点在此个体上的最后位置r1,及所有紧后节点在任务链表中的最前面位置r2,随机选择r1与r2之间的某位置r,将此基因插在r处。按照此规则产生的变异个体符合紧前约束,对其进行资源约束合法性检查,放弃无法满足资源约束的变异个体。

2.5退火处理[8]

给出初始温度T0、退火次数Num,计算待处理的个体W的适应度值f(W);从个体基因属性数组中选择操作优先权值高且操作数额最大的n个基因进行重定位,按照变异时的原理进行插入操作,即将此n个基因重新定位到在其紧前节点和紧后节点的某随机位置r上,得到新个体W′,计算其适应度值f(W′),以及适应度值之差Δf=f(W′)-f(W);如果Δf≥0,则接受新点,作为下一次模拟的初始点;如果Δf<0,则计算新点的接收概率: Pf)=expf·Tnum),在[0,1]区间上产生均匀随机数rand,如果Pf)≥rand,则接受该点作为下一次模拟的初始点,否则放弃该新点,仍取原来的点作为下一次模拟的初始点;令Tnum=λTnum, num=num+1,若满足numNum约束,则停止计算,否则开始下一次迭代。

2.6初始种群

算法的初始种群由两个部分组成:一部分是按照财务活动的申请顺序产生,另一部分随机产生[9]。由于集团公司旗下各公司间的财务往来除特殊业务要求外均具有可并行性,只要按照根据紧前约束和资源约束对初始种群进行合法性检查,两种产生方式均可产生可行调度解。

2.7HGA算法的主要步骤

步骤一 产生初始化种群G(k),种群规模设为N,并进行染色体有效性判断,进化代数标识k为0;

步骤二 计算个体W所对应调度方案的集团现金池总财务费用C(W)及其适应度函数值f(W);

步骤三 如果k小于混和遗传算法终止代数K,转步骤四,否则转步骤八;

步骤四 对种群G(k)进行选择操作;

步骤五 对种群G(k)进行交叉操作;

步骤六 对种群G(k)进行变异操作;

步骤七 令k=k+1,得到新一代种群G(k+1),转步骤二;

步骤八 选择种群中适应度值最大的个体作为相对最优解,将其解码,得到优化方案。

3应用示例结果与分析

使用C#语言编写第2节中介绍的HGA算法并验证其有效性。程序搭建在ASP.NET 3.0框架上,运行在使用Windows XP操作系统、硬件配置为Intel Pentium D CPU 2.8GHz 2.79GHz,1 GB内存的PC机上。

在应用示例中,某集团公司旗下包含有五个子公司,令集团公司编号为G,各子公司编号分别为1至5,有如下按照申请和预测时序列出的集团现金池业务流,各项业务的编号、资金流入流出方、交易类别、资金额度等信息如表1所示。

要求各公司均使用相同委托存贷款利率和税费率。本示例中各项业务所涉及到的税费率如表2所示。

HGA算法中,令每一代种群中全部个体均参与两两交叉操作,变异概率Rm设为0.78,初始温度T0设为500,退火次数Num设为20,初始种群规模设为20。结果显示,运用HGA算法将集团现金池财务成本进行优化,对集团公司财务活动任务链表进行了重新排序,得到以更小财务成本为目标的优化排序,任务链表新的执行序列为1→2→8→9→7→5→4→6→3,并且计算出优化后的现金池财务成本(包括委托贷款手续费、资金划转结算手续费、营业利息税、印花税和委托贷款利息等五部分),总体上比简单依照业务申请顺序执行操作时降低7.04%,各项税款利息下降额度如图3所示。

4结论

本文将集团现金池收益智能优化功能抽象为一种受现金池资金余量约束的资源受限项目调度问题,提出一种结合遗传算法和模拟退火算法优点的混合遗传算法,来求解相对最优调度。在模拟退火算法的设计中,通过对大额交易的优先选择退火使得算法更快的向最优解收敛。示例测试结果表明该现金池收益优化模型和HGA算法可以有效降低现金池财务成本。

摘要:集团现金池业务的收益优化决策一直是由人工辅助完成,存在决策效率低下、全局寻优能力差等问题。首次将现金池财务成本优化模型抽象为一个资源受限项目调度问题RCPSP(Resource Constrained Project Scheduling Problem),并引入结合了遗传算法全局寻优能力以及模拟退火算法局部寻优能力的混合算法解决了此NP难问题。仿真示例证明了该现金池优化模型和混合遗传算法的有效性。

关键词:集团现金池,资源受限项目调度问题,混合遗传算法

参考文献

[1]高路.浅谈企业集团资金管理中的“三高”现象[J].当代经济,2008(12):26.

[2]张颖,刘艳秋,汪定伟,等.RCPSP种现金流优化问题的HGA方法[J].基础自动化,2001,8(4):5-7.

[3]陈国琴.企业集团资金集中管理的新方式——现金池探究[D].成都:西南财经大学会计学院,2007.

[4]刘振元,王红卫.基于优先规则的活动成本目标资源受限工程调度[J].系统工程理论与实践,2005(9):99-106.

[5]Kirkpatrick S,Gelatt C D,Vechi Jr MP.Optimization by simulated an-nealing[J].Science,1983(220):671-680.

[6]喻瑛.多模式资源受限项目调度问题的混合遗传算法[J].东南大学学报:自然科学版,2008,38(4):736-740.

[7]王宏,林丹,李敏强.求解模糊资源受限项目调度问题的遗传算法[J].系统工程学报,2006,21(3):323-327.

[8]李振涛,王淑玲,张国立.利用遗传模拟退火算法优化神经网络结构[J].计算机工程与应用,2007,43(36):74-76.

混合求解 篇6

多工序订单生产排序计划问题(以下简称订单排序),是一类典型的组合优化问题,描述的是在工厂有限处理能力的前提下,如何安排大量订单的生产顺序,以达到利润最大化的目的。其经典描述如下:

设:一个工厂接收到n个客户订单,对于其中任何订单i,其处理时间Ti、交货期di以及销售ri收益都是已知的。由于生产能力的限制,某些订单可能需要延迟交货,对于延迟交货的订单对应有与延迟时间成正相关的处罚(或者销售价格折扣),而提前完成任务没有任何奖励。决策的目标就是寻找一个订单排序,以最大化企业的收益。

订单排序问题具有NP—HARD计算复杂性[1],混合整数规划[2]被用来解决此类问题。近年来出现的一些启发式算法如:模拟退火算法[3]、遗传算法[4]、神经网络[5]、禁忌搜索算法[6]以及蚁群算法[7]为解决更大规模的此类问题提供了新的途径。蚁群算法是近些年新出现的一种从群体智能演变而来的新算法,在解决大规模组合优化问题上显示了强大的实力。模拟退火算法也在求解此类问题时也有良好的表现。现有的有关订单排序的研究文献中,大多假定订单的处理过程是单工序的[5,6,7],而这与企业的多工序制造是不相符合的。本文将基于多处理工序订单排序模型,应用将蚁群算法(ACA)和模拟退火算法(SA)结合的混合蚁群算法(HACA)进行求解,并对算法的有效性和鲁棒性进行分析。

1 问题描述与数学建模

订单生产有多道工序,所有订单需要在这多道工序顺序处理完毕后才能交付客户。订单数目,每个订单交货期、收益以及在各道工序的处理时间是已知的。订单的加工工序遵循严格的串行顺序,每个工序的设备在同一时刻不能同时完成不同的订单,在同一时刻,同一订单的各个工序不能同时进行。当订单的完工时间晚于交货期时,企业要承担延迟成本。延迟成本和延迟时间正相关,不同的订单有不同的延迟惩罚系数,而工厂要完成所有的订单。

基于上文对多工序订单生产计划的描述,现转换为数学模型,首先对参数和变量进行说明:

n:表示工厂在某时期接到的订单数目;

i:表示订单序号;

m:表示订单处理工序的数目;

j:表示工序序号;

di:表示订单的交货时间;

ri:表示订单i的期望收益;

wi:表示订单i延迟的惩罚系数;

Tij:表示订单i在工序的处理时间;

Xij:表示订单i的在工序完成时间;

S:表示n个订单的可能的一个排列;

S(k):表示在排列S中第k个被处理的订单号;

f:表示企业的利润函数;

cost:表示在S中所有库存持有成本和惩罚成本之和。

该问题的数学模型可描述为:

约束条件:

目标函数式(1)表示企业利润,是期望收益减去延迟交货成本,+表示仅取正数;约束条件式(2)表示在工序处排在订单i前面的订单必须完成;约束条件式(3)表示订单i在进行j工序之前,j-1工序也必须已经完成;约束条件式(4)表示第一个加工的订单第一个工序完成时间要不小于其加工时间。

2 算法介绍

2.1 蚁群算法(ACA)

蚁群算法是20世纪90年代由意大利学者M-Dorigo等人首先提出的一种新型的模拟进化算法,称为蚁群算法(ant colony algorithm,ACA)。蚁群算法的基本原理是:当蚂蚁在搜索食物源的过程当中,会在其所走过的路径上释放一种特殊的分泌物——信息素,一定范围内的蚂蚁在寻找食物的过程中都会受到这种信息素的影响。当某些路径上走过的蚂蚁越来越多,留下的这种信息素也越多,以致后来蚂蚁选择该路径的概率也越高,从而更增加了该路径的吸引强度。利用这种正反馈机制,最终蚂蚁群体能够在食物源与蚁巢之间找到一条最短的最优路径。

蚁群算法的步骤可简要表述为:(1)设置所有参数,信息素初始化;(2)每只蚂蚁根据状态转移方程建立一个完整的解,状态转移方程主要取决于信息素和能见度因子;(3)更新信息素。重复后两个过程直到满足条件为止。

2.2 模拟退火算法(SA)

模拟退火算法思想最早由Metropolis[8]在1953年提出,Kirkpatrick[9]在1983年成功地应用于组合优化问题。模拟退火算法的基本原理是:金属或玻璃加热后逐渐冷却,其物理性质(稳定性)就会发生改变,这其实是分子重新以一定的结构进行了排列。对冷却过程加以控制,从而获得最好的物理特性。

模拟退火算法步骤可简要表述为:(1)随机给一个初始解;(2)按照一定的方式搜寻初始解的相邻解,并按照某一状态转移方程判断此相邻解是否被接受;(3)重复过程(2)直到温度降低到指定的阀值。

2.3 混合蚁群算法(HACA)

研究表明,蚁群算法开始寻优速度很快,随着迭代次数的增加,其发现更好解的速度变慢,最终收敛。虽然有很多学者研究通过对信息素更新等改进来克服这个缺陷,但要付出增加大量迭代次数和运算时间的代价。而模拟退火算法迭代初期寻优速度很慢,随着温度的降低,其发现更好解的速度变快,最终收敛。加快退火速度和降低初始温度能改善初期寻优慢的问题,但要付出搜寻结果变差的代价。混合蚁群算法的思想就是将蚁群算法和模拟退火算法结合起来,充分利用两种算法的优点。

混合蚁群算法的步骤可简要表述为:(1)适当减少蚁群算法的迭代次数,并取得某一最好解;(2)以蚁群算法取得最好解作为模拟退火算法的初始解进行运算,并适当降低初始温度和加快退火速度;(3)满足某一条件,停止运算,输出结果。

3 混合蚁群算法的求解策略

在用于订单排序问题的混合蚁群算法中,每个人工蚂蚁都是具有下述特征的智能体:(1)当它选择执行完订单i再去执行订单b时,它会在连接(i,b)上留下信息素τkib;(2)它以一定的概率Pkib进行状态转移(从订单i转移到订单b),该概率是启发式信息ηib和信息素量τib的函数;(3)在构造一个完整的解时,已经被处理的订单被加以禁忌,如此重复直到所有订单都被处理完毕;(4)重复以上步骤,在蚁群收敛时,输出当前最好解的蚂蚁参数;(5)以最好解蚂蚁的参数,进行模拟退火的运算,以优化次最好解;(6)达到某一条件,输出运算结果。

按照以上步骤,对其中涉及到的一些参数作如下定义:

相应地,能见度因子ηib表示为:

式(5)和式(6)中,μ、λ为正的可调系数μ燮1,λ叟1。

信息素的更新方程定义为:

式(7)、式(8)和式(9)中,ρ为非负可调系数,表示信息素的持久性,且ρ燮1;Δτib表示蚂蚁转移后的信息素的增加。H为含有(i,b)的解的集合,Q为正的可调系数;如果H为空集,那么Δτib=0;这说明只有蚂蚁经过时才会有信息素的增强。

状态转移方程表示为:

式(10)中,α,β为非负的可调系数,分别表示蚂蚁k在从订单i在转移到订单b时的信息素τib的相对重要性和能见度因子ηib的相对重要性。

初始温度的确定:

式(11)中,To为模拟退火初始温度,costmax和costmin分别表示蚁群算法中所输出的最好解和最差解。

解的接受概率:

式(12)、式(13)和式(14)中,γ为可调系数,0<γ<1,T为温度。

于是,伪代码可以写为:

(1)初始化过程。

参数初始化;

读入订单数据,虚拟一个初始订单,除其序号为1外其他参数均为0;

Nc:=1;/迭代次数置为1/

τib:=A;/信息素强度置为某一相等的较小数值/

Δτib=A;/初始信息素增量置为零/

ηib=1/Δdib;/读入能见度因子,参见式(5)和式(6)/

Sk=准;/蚂蚁k的禁忌表初始为空集/

读入虚拟订单,设;l:=;/l为禁忌表中元素索引/

for k:=1 to ant_num do/ant_num表示蚂蚁数目/

(2)重复到禁忌表满为止。

设置;l:=l+1

蚂蚁k以Pkib选择下个订单b;/见式(10)/S(l)=b;/订单j被列入到禁忌表中/

(3)计算每个蚂蚁的各个订单的完工时间,收益和额外成本。

计算完工时间Xij;/约束条件参见式(2)式(3)

计算企业利润f;/计算公式参见式(1)/

计算企业额外成本cost;/计算公式参见式(9)/(4)更新信息素。

(5)记录到目前为止的最优利润及其相应的排序。

if Nc<Nc_max/不满足终止条件/

清空所有禁忌表;

设Nc:=Nc+1;/迭代次数增加1/

Δτib=0;/清空信息素增量/返回步骤(2);/循环/

输出最好解和最差解;(6)参数初始化。

温度阀值,退火速度等/

初始温度To确定;/参见式(11)/T=To;/当前温度置于最高温度/

(7)for i:=1 to num do/num为某一数值/

进行邻域搜索;

判断搜索解是否接受;/判断条件见式(13)/

(8)记录目前解和相应的排序。

if T>Tf/温度没有达到阀值/

Nc:=Nc+1;/迭代次数增加1/

T=T*γ;/温度更新/

返回步骤(6);/循环/

输出最好利润和相应的订单排序。

4 算例比较

取如下几组(n,m)的随机参数订单进行比较:(10,3)、(50,3)、(50,4)、(100,4)。(10,3)表示订单数为10,工序数为3,其他类推。

运行环境为windows XP系统,MATLAB编程环境,CPU主频为1.5GHZ的笔记本电脑,采用三种计算方法进行比较分析,其参数分别为:(1)模拟退火算法γ=0.95,end T=0.01,L=3*n;(2)蚁群算法:ant_num=1.5*n,μ=0.5,λ=2,α=1,β=2,ρ=0.8,Q=15*n,N=50;(3)混合蚁群算法:ant_num=1.5*n,μ=0.5,λ=2,α=1,β=2,ρ=0.8,Q=15*n,N=50,γ=0.8,end T=0.01,L=3*n。都重复10次求解,求解结果表1~表4。

从统计指标来看,混合蚁群算在四次求解过程所有的指标值都是最好的。而且随着订单数目和工序数目的增加,混合蚁群算法相比其他两个算法更占优势,因而该算法具有良好的鲁棒性。由于三种算法在不同的订单与工序的组合中的寻优过程类似,因而只给出三种算法在(50,3)的最好解的进化图,见图1、图2、图3。

模拟退火算法中可接受解在150代开始收敛,蚁群算法在10代开始就陷入局部最优,而混合蚁群算法在30代开始收敛,从此可以看出混合蚁群算法综合了模拟退火算法和蚁群算法的优点。

5 结束语

订单排序是生产管理中常见的决策问题,也得到了广泛的理论研究和实践应用。本文尝试用混合蚁群算法对多工序的订单排序进行了求解,并通过和模拟退火算法、蚁群算法的横向比较,以及不同数目订单和工序组合的纵向比较,证明了混合蚁群算法在求解此类问题的有效性和良好的鲁棒性。其他的启发式算法,例如遗传算法、粒子群算法、禁忌搜索算法等等均可用于此种模型的求解。融合这些算法或者改进设计启发式算法来求解多工序订单排序问题是一个值得进一步研究的问题。

参考文献

[1]Ghosh J B.Job selection in a heavily loaded shop[J].Computers and Operation Research,1997,24(2),141-145.

[2]Simone Zanoni,Lucio Zavanella.Model and analysis of integrated production-inventory system:The case of steel production[J].International Journal of Production Economics,2005,93/94,197-205.

[3]肖依永、常文兵、张人千:《基于模拟退火算法的多节点订单排序模型》[J];《计算机应用研究》2009(2):460-463。

[4]Rubin P A,Ragatz G L.Scheduling in sequence dependent setup environment with genetic search[J].Computers and Operations Research,1995,22,85-99.

[5]Sabuncuoglu Gurgun.A neural network model for scheduling problems[J].European Journal of Operational Research,1996,93,288-299.

[6]Franca P M,Gendreau M,Laporte G,Muller F M.A tabu search heuristic for the multiprocessor scheduling problem with sequence dependent of setup time[J].International Journal of Production Economics,1996,43,79-89.

[7]Gagne C,Price W L,Gravel M.Comparing an ACO algorithm with other heuristics for the single machine scheduling problem with sequence dependent setup time[J].Journal of the Operations Research Society,2002,53,895-906.

[8]Metropolis N,Rosenbluth A.Equation of state calculations by fast computing machines[J].Journal of Chemical Physics,1953,21,1087-1092.

混合求解 篇7

对列车调度问题的研究主要集中在调度模型和求解算法上。列车调度模型主要包括整数规划模型和析取图模型;列车调度问题的求解算法主要包括分枝定界法和智能优化算法。文献[1]提出利用整数规划模型描述货物列车运行状况,并设计了问题求解的启发式算法,该方法已被成功应用于编制济南-兖州-徐州等多个区段的列车运行图。文献[2]将复线列车调度问题用整数规划模型进行描述,以最小化高速列车额外等待时间和最小化高中速列车运行时间为目标,利用分枝定界法进行求解,并以北京-上海的高速线路为例对算法进行了验证。文献[3,4]分别使用整数规划模型求解了列车调度问题。整数规划模型可以精确地描述调度问题,但其表现形式不够直观,不利于深度分析调度问题特性。文献[5]建立了析取图模型来描述列车调度问题,利用分枝定界法进行求解,并提出了多种蕴含规则以提高算法的计算效率,通过对荷兰铁路网一个交通密集区域的列车调度进行仿真,验证了算法高效的求解质量。文献[6,7]分别用析取图模型求解了列车调度问题。实验证明,析取图模型能方便地表达列车运行顺序和列车运行约束。在求解算法上,分枝定界法和智能优化算法应用较多,智能优化算法因能在较短时间内找到近似优化解而被广泛应用。文献[8]采用遗传算法解决了单线列车调度问题,并利用西班牙某铁路数据进行了测试,证明了使用遗传算法解决该类问题是可行的,该算法能够在较短时间内得到较优的解。文献[9,10,11]分别使用遗传算法及其改进算法对列车调度问题进行了求解。文献[12]提出将模拟退火优化方法嵌入粒子群优化算法中,构建集成粒子群优化算法,在综合考虑特快列车中途离开时间、普快列车中途离开时间和特快、普快、货车三种列车的全程运行时间等因素的基础上,优化了复线旅客列车调度,对青岛至广东高速轨道线738公里段进行的实验表明,所提出的集成粒子群优化算法的局部搜索能力有显著提高,且搜索到全局最优解的概率较大。

列车调度需要解决轨道分配问题和列车运行顺序问题,但上述文献并未给出一种直接的求解方法,为此,本文提出利用带有阻塞(blocking)限制的混合流水车间调度问题(hybrid flow shop scheduling problem with blocking,HFSP-B)模型来描述列车调度问题的解空间。HFSP-B是混合流水车间调度问题的扩展,其主要特征是加工机器间不存在缓冲区,当工件Ji在机器mj上加工完毕后,若机器mj+1非空闲,则Ji将被阻塞在机器mj上,直至机器mj+1可用。列车调度问题与HFSP-B模型在处理过程中存在相似之处,同样具有阻塞约束,为此,本文提出利用HFSP-B模型描述复线列车调度问题。HFSP-B模型中,列车对应加工工件,列车运行轨道对应加工机器,线路中的并行轨道对应工序中存在的并行机器,列车在轨道的运行时间对应工件的加工时间。

针对HFSP-B模型,本文提出了一种混合粒子群优化算法进行求解。设计矩阵编码方式解决列车占用轨道问题,提出RB(release bockstepping)算法进行解码,安排列车运行顺序,并计算问题适应值;利用粒子群优化算法进行全局优化,并引入迭代邻域搜索算法以提高粒子群优化算法的局部搜索能力。

1 问题描述

HFSP-B模型可描述为:n个工件要在m道工序上加工,加工约束为:①至少有一道工序存在多台并行机器,工序的加工时间随加工机器的不同而不同;②同一台机器在同一时刻只能加工一个工件;③同一工件的同一道工序在同一时刻只能被一台机器加工;④每个工件在工序上的加工顺序相同,工序顺序是预先确定的;⑤工件在一道工序上完成加工后,在下游工序机器可用之前都将被阻塞在该道工序机器上。

列车线路由若干轨道区段构成,图1所示为某一方向上的线路结构。线路中可能存在某些轨道区段有多条并行轨道的情况。串行轨道在同一时刻只能允许被一辆列车占用,并行轨道区段可允许多辆列车在同一时刻分别占用并行轨道。列车的运行带有阻塞限制,列车在轨道Track1运行完成后,若轨道Track2_1和Track2_2被占用,列车将会被阻塞在Track1上直到Track2中有可用轨道。

可见,列车调度问题与HFSP-B模型是相似的,可用HFSP-B模型进行求解。

为方便讨论,引入如下数学符号:定义列车调度问题涉及的列车数为n,轨道数为m,轨道区段数为λ;第k轨道区段的并行轨道数为πk (k=0,1,…,λ-1),若轨道区段k为串行轨道,则πk=1;Ai,j表示列车Ji(i=0,1, …,n-1)在轨道Mj (j=0,1,…,m-1)上的运行时间;Ci,k表示列车Ji在轨道区段k上的运行完成时间;Rj表示轨道Mj被释放的时间;Si,j表示列车Ji进入轨道Mj的时间;γi,j,t表示t时刻列车Ji占用轨道Mj的情况,且有

γi,j,t={0tJiΜj1tJiΜj

本文求解列车调度问题的目标为列车总的最短运输时间Cmax,即

min Cmax=min{max(Ci,λ-1|i=0,1,…,n-1)} (1)

列车运行时有如下约束条件:

k(πk≥2) k∈[0,λ-1] (2)

[Si,j,Tj]∩[Si+1,j,Tj]=Ø (3)

γi,j,tγi,x,t≠1j,x∈[0,m-1] (4)

Si,j≥max(Rj,Ci,j-1) (5)

式(2)表示在列车线路中,至少有一个轨道区段存在并行轨道;若不满足式(2),问题模型将变为流水车间调度问题模型。式(3)表示轨道占用约束,任何一个轨道不允许被多辆列车同时占用。式(4)限制了同一列车同时占用多个轨道。式(5)表示列车的阻塞限制,当轨道未被释放之前,其他列车不能占用,只能被阻塞。

2 算法描述

本文将粒子群优化算法与RB算法相结合,提出了一种混合粒子群优化算法。混合粒子群优化算法中,粒子群优化算法负责轨道分配和全局优化;RB算法负责安排列车运行顺序并计算问题适应值。用混合算法求解列车调度问题的流程如图2所示。

2.1 种群初始化

用粒子群优化算法求解问题时,首先要确定粒子编码方式。文献[13]提出了一种矩阵编码方法,用矩阵形式表示工件在各工序的机器分配情况。本文借鉴了该方法对粒子进行编码,但在其基础上有所调整,编码形式如下:

An×λ=[Ρ0,0Ρ0,1Ρ0,λ-1Ρ1,0Ρ1,1Ρ1,λ-1Ρn-1,0Ρn-1,1Ρn-1,λ-1]

矩阵An×λ的行代表列车在各轨道区段的运行,列代表轨道区段,因此,若有n辆列车运行,线路中有λ个轨道区段,粒子编码矩阵的大小为Pi,k为一正整数,表示列车Ji在第k个轨道区段运行时所占用的轨道。若Pi,k=Pd,k,则说明列车JiJd在第k个轨道区段运行时使用同一条轨道。按照列车运行的轨道区段依次对轨道进行编码,对任一轨道区段k(0≤kλ-1),在该区段的轨道编码范围可由下式给出:

Ρi,k[t=0k-1πt,t=0k-1πt+πk-1] (6)

粒子群初始化主要是随机产生粒子的位置和速度,位置和速度矩阵即为各辆列车在各轨道区段占用的轨道。随机产生的轨道必须满足式(6)限定的范围,初始化时列车Ji在第k轨道区段分配的轨道可由下式给出:

Pi,k=mod(rand(),πk)+t=0k-1πt (7)

其中,rand()表示随机产生一整数;mod()表示取余函数。

2.2 粒子调整

并行轨道区段允许多辆列车同时占用不同的并行轨道,这样可以提高列车运行的并行性。但种群初始化随机分配列车在各轨道区段占用的轨道,可能出现在某并行区段所有列车都被集中分配到某一轨道的情况,或出现分配不均匀的情况。粒子调整的目的是找出瓶颈机器,对轨道分配进行均衡处理。粒子调整的过程如下:

(1)查找未分配的轨道。设M为轨道集合,对任一轨道MjM,其所属的轨道区段为k,若满足∀iPi,kMj,i∈[0,n-1],转步骤(2);否则转步骤(3)。

(2)检测瓶颈轨道,并进行调整。本文提出在轨道区段中,被分配次数最多的轨道为本区段中的瓶颈轨道,瓶颈轨道的计算如下:

Bk=Pi,knum(Pi,k)=

max(num(Pl,k)|l=0,1,…,n-1) (8)

其中,Bk表示第k个轨道区段的瓶颈机器,num(Pi,k)为轨道Pi,k被分配给列车的数目。轨道调整的目的是减轻瓶颈机器的负担,由步骤(1)知,Mj在轨道区段k未被分配,调整方法为:随机选取列车Ji,若满足Pi,k=Bk,调整列车Jik区段分配的列车为Pi,k=Mj

(3)M=M-Mj,若M≠Ø,转至步骤(1)继续查找;否则结束粒子调整。

2.3 更新种群

本文采用整数矩阵编码方式,粒子代表各列车在轨道区段分配的轨道,是离散值,若用标准粒子群优化算法的速度和位置公式更新粒子,则难以进行表述。为此,本文修改粒子速度、位置更新公式如下:

Vi(k+1)=Vi(k)⨂Pbestigbest (9)

Xi(k+1)=Xi(k)⨂Vi(k+1) (10)

其中,Vi(k)、Xi(k)分别表示粒子i在第k次迭代的速度和位置;Pbesti表示粒子i到目前为止找到的最优解;gbest表示整个种群到目前为止找到的最优解;⨂代表交叉操作。

对于交叉操作,本文提出列交叉的方法。两个体交叉时,随机产生交叉点σ(0<σ<λ),互换两交叉个体的0-σ列,交叉操作后取列车运行完成时间最短的个体为更新后的个体。

更新粒子个体时,若Pbesti在若干代内未改进,则认为粒子出现了停滞,此时需要对粒子进行变异才能使粒子跳出局部极值的约束。本文提出的变异策略为:对粒子编码矩阵中每一行,随机选取一列,改变所对应的轨道为该轨道区段中的其他轨道。若该轨道区段为串行轨道,则重新选取列,按同样的方法进行变异。变异后的粒子所对应的解可能比原来差,本文采用模拟退火思想概率接收,即:计算变异后粒子和变异之前粒子解的变化量ΔE,若ΔE≤0,接收新值;若|ΔE|≤γ,也接收新值;否则拒绝接收。其中,γ为常量。

按照粒子新的位置计算粒子适应值,若新值优于Pbesti,则将Pbesti用新值替换;根据所有粒子的Pbesti更新gbest,使得gbest始终为种群最优解。

2.4 局部搜索策略

粒子群优化算法具有较强的全局搜索能力,但其局部搜索能力较弱。本文提出了一种迭代邻域局部搜索策略,以扩大算法的搜索空间。迭代邻域局部搜索方法为:迭代变换列车在轨道区段所占用的轨道,若列车更改轨道后适应值变小,则接收列车在该区段变换的新轨道;否则继续进行迭代,直至所有列车在所有轨道区段的轨道变换完毕。迭代邻域局部搜索的步骤如图3所示,position(p)代表粒子p的位置。

2.5 RB解码算法

粒子编码矩阵初步确定了列车在各轨道区段占用的轨道,但并未解决列车运行顺序问题。本文提出RB算法进行解码,安排列车运行顺序的同时计算粒子所代表列车的运行完成时间。RB算法的基本思想为:按照轨道区段顺序安排列车占用区段中的轨道,若本区段轨道全部被占用,但仍有后续列车需要占用,则向前驱轨道区段查找空闲轨道,并安排相应列车占用,同时释放其所占用的后续轨道。轨道被释放后,算法进行回推处理,安排列车占用已释放的空闲轨道,同时该列车释放占用的后续轨道,算法不断重复进行回推处理,直至回推到最初的轨道区段。经过不断的释放轨道、回推处理,算法最终安排所有列车在线路中完成运行。

RB算法采用先来先服务(first come first serve,FCFS)策略安排列车运行。FCFS策略指多辆列车要占用k(0<k<λ)区段的同一个轨道Mj,则满足min(Ci,k-1)的列车被优先指派占用轨道。RB算法的伪代码描述如图4所示。

由于列车运行带有阻塞限制,列车Ji在轨道区段kMj轨道的完成时间与Ji在区段k-1的完成时间和Mj的释放时间有关,列车的完成时间Ci,j和轨道的释放时间Tk-1分别为

Ci,j=max(Tk-1,Ci,j-1)+Ai,j (11)

2.6 算法复杂度分析

根据对算法的描述,算法中关键步骤的时间复杂度如表1所示。其中,n表示列车数,θ代表轨道区段中拥有并行轨道的最大值,λ表示轨道区段数。

迭代邻域局部搜索只在算法陷入局部最优时执行,在此,只计算执行一次的时间复杂度;变异操作也只在粒子停滞时执行,同样只考虑执行一次的时间复杂度。

设粒子群大小为P,算法执行迭代次数为G,循环次数为C,忽略次要步骤及降低次幂的影响,所提出算法的时间复杂度为O(PGCn2λ+θ λ n+n λ)。可以看出,所提算法的时间复杂度与种群大小、算法迭代次数、循环次数以及问题的规模有关。

3 实例测试

本文算法基于VC++ 6.0实现,在处理器为Pentium 1.6GHz、内存为1.5GB的PC机下运行。算法设置的粒子群规模为50,迭代次数为100,循环次数为100。由于目前对该类问题的研究较少,没有统一的数据进行测试,本文选取了2组数据进行测试,其中实例1的数据来自现有文献,实例2的数据为根据问题特征构造的测试数据。

3.1 实例1

实例1数据来源于文献[13],设有12辆列车、3个轨道区段,每个轨道区段中并行轨道数分别为3、2、4。

利用本文提出的算法对实例计算20次,得到的最优解为25,最差解为27,平均解为26.2,算法完成一次循环的平均计算时间为95s。最优解对应的甘特图见图5。

本文算法与文献[13,14,15]的结果进行了对比。文献[13]使用遗传算法解决该问题,文献[14]和文献[15]使用粒子群优化算法解决该问题,所有文献使用相同的数据进行测试,但文献[13,14,15]均没有考虑阻塞限制。严格意义上来说,本文解决的问题比上述文献具有更强的约束条件。4种算法的计算结果见表2,表中“-”代表该文献没有提供相关数据。由于文献[13,14,15]都未给出算法求解问题的时间,因此表2未对算法的执行时间进行比较。从表2可以看出,本文在求解该问题时得到的最优解为25,明显优于使用遗传算法和一般粒子群优化算法得到的解。这说明本文算法在求解精度上具有较高的优越性。

3.2 实例2

为验证本文算法求解列车调度问题的可行性,构造了某一方向上的一条列车线路进行测试。该线路共有9个区段,有10辆列车运行。轨道区段Track={0,1,…,8},线路中存在串行轨道、双并行轨道、三并行轨道,其中,Track1、Track3、Track7为双并行轨道,Track5为三并行轨道,其他区段为串行轨道。列车在各区段轨道上的运行时间如表3所示。

利用本文提出的算法可计算列车进入轨道、离开轨道的时间,得到列车运行时刻表。对实例计算10次,得到调度最短运行完成时间为72s,平均解为72s。另外,算法每次运行时间不超过1s,算法效率很高。最优调度对应的列车运行图见图6,图中数字代表列车编号,清晰地显示了列车在每一轨道区段的开始时间、离开时间。

从图6可以看出,列车在各轨道区段运行时不存在冲突,各列车满足运行的限制条件。这说明用HFSP-B模型求解列车调度问题是可行的,可以满足实际应用。

4 结语

本文用HFSP-B模型描述复线列车调度问题,并提出了混合粒子群优化算法进行求解。混合算法采用矩阵编码方式,设计了RB算法进行解码,安排列车运行顺序并计算问题目标值;粒子群优化算法被用来分配列车占用的轨道并进行全局优化。提出了迭代邻域局部搜索策略以增强粒子群优化算法的局部搜索能力。为了避免粒子群优化算法陷入局部收敛,算法不断对停滞粒子进行变异,以增加种群多样性。实例测试证明,采用本文提出的模型和算法来求解列车调度问题是可行的、有效的。

摘要:针对复线列车调度问题,建立了描述问题解空间的阻塞限制混合流水车间模型,并提出一种混合粒子群优化算法进行求解。该算法以最小化最长完工时间为目标,设计了释放-回推算法来安排列车运行顺序并计算最小化最长完工时间,利用改进的粒子群优化算法解决轨道分配问题并进行全局优化。此外,通过基于迭代邻域的搜索算法来提高种群的局部搜索能力。实验结果表明,所提出的方法能够有效地求解复线列车调度问题。

混合求解 篇8

矩阵对策也叫二人零和对策, 其对策中有两个局中人, 每个局中人仅有有限个策略可供选择。每一局的对策均有确定的得失值 (赢得值) , 且同一局的两个局中人的得失值之和为零, 局中人双方针对对方所采取的策略相应地制定最有利于自己的应对策略, 双方激烈对抗。在矩阵对策中, 如果局中人的支付矩阵中有鞍点, 选择鞍点对策是最优的策略, 若无鞍点, 则需要选择混合策略, 混合策略是纯策略在空间上的概率分布。

1 矩阵对策中混合对策问题的数学模型

设局中人A分别以x1, x2, …, xm的概率混合使用他的m种策略, 设局中人B分别以y1, y2, …, yn的概率混合使用他的n种策略。

当A采用混合策略, B采用纯策略bj (j=1, 2, …, n) , A的赢得为, 依据最大最小原则, 有

其中C= (cij) m×n为局中人A的支付矩阵, vA为A的赢得值。可以将该问题转化为线性规划问题, 则局中人A、B的最优策略的数学模型为:

该线性规划问题的求解运用lingo非常方便。

2 lingo求解举例

甲乙两人用“石头, 剪刀, 布”游戏决定胜负, 双方规定:石头胜剪子, 剪子胜布, 布胜石头。问他们两人如何做, 才能使自己获胜的可能性更大。

分析:该问题是日常生活中常见的游戏, 通常在客观条件无法定胜负的时候采用。游戏中甲的支付函数如表1。

容易看出, 该问题是一个二人零和对策问题, 没有纯最优策略, 只能求相应的混合策略。

甲的支付矩阵, 依照上述模型, 求甲的最优策略的LINGO程序如下:

结果表明, 甲以1/3的概率出石头、剪刀、布中每种策略的一种, 其赢得值为0, 用同样的方法求乙的最优策略可以得出同样的结论。这个结果说明, 在“石头、剪刀、布”游戏中, 如果不考虑参与者的习惯、互相了解程度等其他因素, 游戏是绝对公平的。

3 结束语

运用lingo求解矩阵对策中混合对策问题非常方便。不同的矩阵对策问题只是支付矩阵不同, 只改变支付矩阵即可求解。另外, 无论矩阵对策有无鞍点, 都可以用线性规划的方法, 运用lingo软件求解。

参考文献

[1]曾庆红, 杨桥艳.基于LINGO软件的数学规划模型求解[J].保山学院学报, 2010 (02) .

[2]钱业洪.矩阵对策混合策略解法概述[J].数学学习与研究, 20113 (5) .

上一篇:高职院校思政课下一篇:普通车床安全保护系统