欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2017108673751
申请人: 郑州航空工业管理学院
专利类型:发明专利
专利状态:已下证
专利领域: 控制;调节
更新日期:2024-02-23
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种改良的帝国竞争算法解决柔性作业车间调度问题的方法,其特征在于,包括以下步骤:步骤1:参数设置,设置帝国竞争算法求解柔性作业车间调度问题的相关参数,包括:国家数量Npop、帝国主义国家数量Nimp、殖民地国家数量Ncol、迭代次数Niter,帝国内部同化概率Pcimp,帝国内部革命概率Pmimp,殖民地国家影响因子α,帝国竞争算法的终止条件为:若在还未达到迭代次数Niter就只剩一个帝国时,算法终止,否则,运行到迭代次数为止;

步骤2:初始化国家个体,每一个国家代表一组柔性作业车间调度问题的可行方案,传统帝国竞争算法解决连续型优化问题,编码方式不适合离散型柔性作业车间调度问题,结合柔性作业车间调度问题特点设计两段式实数编码方式进行国家个体的编辑,总长度为

2L,L为所有工件的所有工序和,Ji表示工件i的工序数,左侧一段为加工机器,多个工件按照工件1、工件2、工件3……工件n的工序顺序进行排列,每个数字表示对应工序加工机器集中的顺序号,而不是机器号;右侧一段为加工工序,每个数字代表工件号,出现的次数等于该工件的工序数,在转换为工序的顺序时,从左到右依次读取每个数字,同一个数字的出现顺序即为该工序的加工顺序;

并分别提出全领域搜索、局部领域搜索和随机搜索的初始化方法来产生Npop个国家,具体是,1)全领域搜索:在所有工件的工序的加工机器选择中,保证最短加工机器先被选到而且保证加工机器上的工作负荷平衡,具体执行步骤为:a)设置一个长度为机器总台数的向量,向量上的每个位置记录对应机器上的总负荷初始值为0,称为负荷向量;

b)随机选择某个工件的第一道工序;

c)将该工序可选机器集中每个机器的加工时间和负荷向量中记录的对应机器的加工时间相加,从中选择最小的那台机器作为该工序的加工机器,并将当前机器的加工时间记录到负荷向量中;

d)选择当前工件的下一道工序,执行步骤c),直到当前工件的所有工序的加工机器选择完毕;

e)从工件集中删除该工件,然后执行步骤b)到d),直到全部工件被执行完毕;

2)局部领域搜索:保证一个工件的工序中优先加工时间最短或者说选择机器负荷最小的加工机器进行加工,具体执行步骤为:a)设置一个长度为机器总台数的向量,向量上的每个位置记录对应机器上的总负荷初始值为0,称为负荷向量;

b)随机选择某个工件的第一道工序;

c)将该工序可选机器集中每个机器的加工时间和负荷向量中记录的对应机器的加工时间相加,从中选择最小的那台机器作为该工序的加工机器,并将当前机器的加工时间记录到负荷向量中;

d)选择当前工件的下一道工序,执行步骤c),直到当前工件的所有工序的加工机器选择完毕;

g)将负荷向量中的所有值重置为0;

h)从工件集中删除该工件,然后执行步骤b)到g),直到全部工件被执行完毕;

3)随机搜索:为保证初始种群的多样性,使初始种群分散于解空间,一部分国家个体中的工序加工机器在工序可选机器集中随机选择,具体执行步骤如下:a)随机选择一个工件的第一道工序,从该工序的加工机器集中随机选择一个机器;

b)在当前工件下一道工序的加工机器集中随机选择一台;

c)重复执行b),直到所有工序执行完毕;

d)从工件集中删除当前工件,然后重复执行a)到c),直到所有工件执行完毕;

步骤3:通过成本函数,计算每个国家的成本值;

步骤4:产生帝国主义国家和殖民地国家,按照每个国家的成本值计算每个国家的势力大小,依据之前设定的帝国主义国家数量,将殖民地国家随机分配给帝国主义国家,形成Nimp个帝国;

步骤5:帝国内部进行同化操作,帝国内部的殖民地国家与帝国主义国家之间进行同化操作,使得殖民地国家不断向帝国主义国家移动;

步骤6:帝国内部进行革命操作,帝国内部的殖民地国家为防止同化作用造成过早收敛,需要进行革命操作;

步骤7:帝国内部判断是否更换帝国主义国家,对各个帝国内部的国家进行成本计算,将成本最小的殖民地与其所属的帝国主义国家进行比较,如果比帝国的成本还低,就替换该帝国主义国家,而成为统治者;

步骤8:帝国之间的竞争操作,势力最强的帝国占有势力最弱的帝国中的殖民地,使得强大的帝国更加强大,弱小的帝国更加弱小;

步骤9:弱势帝国的灭亡,删除掉没有殖民地的帝国,该帝国灭亡;

步骤10:计算每个国家成本;

步骤11:判断算法是否终止,依据参数中对算法停止条件的设定,判断算法是否终止,若算法终止,则输出运行结果;反之,算法还没有终止,则回到步骤5继续执行。