掌桥专利:专业的专利平台
掌桥专利
首页

一种基于位运算的优化进化编码方法

文献发布时间:2023-06-19 09:32:16


一种基于位运算的优化进化编码方法

技术领域

本发明涉及一种基于位运算的优化进化编码方法,可以应用于经济学、神经网络、运筹学、机器人、人工生命和人工智能等多个技术领域。

背景技术

传统的进化算法计算效率低,编码精度不够,空间利用率不高。目前,有很多进化算法编码方法,如二进制编码、实数编码、矩阵编码、树型编码、量子比特编码等。这些编码方法的有其突出的优势,但是也存在一些不足。因此,针对不同的数据、不同的应用问题,应设计科学的编码方法。因此,提出一种既满足最优解的计算精度,同时也极大提高计算速度的编码方法。

某企业花巨资建立一条生产线,维护该生产线需要成本,由于生产设备的折旧损坏等原因而生产效率降低,导致从该生产线获得的收入也会降低。生产费用逐年在增加,而所得收入在逐年减少,发展下去必有某一时刻,费用大于收入,再生产就亏本了,故应停止生产。因此,本发明提出一种基于位运算的优化进化编码方法,帮助决策者预测最佳停产时间及最大利润值。

发明内容

针对上述不足,本发明提供一种基于位运算的优化进化编码方法,该编码方法既确保最优解的计算精度,又提高了程序运行速度。

为实现上述目的,本发明的基于位运算的优化进化编码方法,步骤如下:

步骤1:定义科学的适应度函数,设置参数。

步骤2:通过不等式2

步骤3:基于求解的适应度函数计算初始种群的个体适应度。

步骤4:判断是否满足以下优化准则:种群中个体的适应度方差小于预先设定值,即方差小于1.0×10

步骤5:若满足优化准则,则进行解码,得到最好的个体及其代表的全局最优解;其中,解码方法是通过公式x=a+(b-a)×x

(1)设B=b

(2)用线性变换将x

步骤6:若不满足优化准则,通过轮盘选择法随机选择参与交叉的个体。具体步骤如下:

(1)计算种群中每个个体x

(2)计算x

(3)重复以下两步N次(N为种群规模):①产生[0,1]中产生一个随机数r;②若r≤q

步骤7:随机选择2个个体,基于快速的位运算对该对个体进行交叉操作,产生两个后代,若子代的适应度值大于父代,则用子代代替父代,否则,保留父代,该步骤重复进行N/2次,产生包含N个个体的交叉后代种群。

步骤8:变异操作通过随机变量函数对交叉后代集中的每个后代选择发生变异的基因位,即对个体的变异基因位进行按位取反,产生子代。若子代的适应度值大于父代,则用子代代替父代,否则,保留父代,该步骤重复进行N次,产生包含N个个体的变异后代种群。其中,变异操作也是基于快速的位运算;依据个体编码表示方法的不同,变异方法包括:实值变异和二进制变异。变异后代种群进入下一次进化,即返回步骤2,进化计算的进化过程一直进行,直到种群中各个个体的适应度的分布相对集中到一点上,即搜索到全局最优解。

本发明的有益效果为,本发明提出的编码方法加快了程序的运行速度,使内存空间利用率达到100%,确保经过编码和解码后的实数保证计算精度。通过随机选择、交叉—选择、变异—选择等多重随机选择的遗传操作,加快了进化算法搜索到最优解的速度。传统的进化算法的遗传操作使用的都是算术运算,其时间复杂度较大。本发明利用位运算进行遗传操作,通过位运算的与、或、非,包括左移、右移可以迅速地取位和置位,相对算术运算,时间复杂度减小了2个数量级,大大加快了程序的运行速度。

附图说明

图1为本发明的工作流程图。

图2为实施例的收敛图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式做进一步详细描述。

实施例详细阐述了本发明一种基于位运算的优化进化编码方法,在实现与应用的情况下具体实施时的算法流程,应用在经济学领域的生产线管理问题。

某企业花费2000万元建立一条生产线,已知该生产线最多可使用15年,在生产时间x时的追加成本和追加收入分别为

步骤1构建模型的数学表达式:生产费用逐年在增加,而所得收入在逐年减少,发展下去必有某一时刻,费用大于收入,再生产就亏本了,故应停止生产。第x年的利润

由于该生产线最多可使用15年,因此,自变量x的定义域:[0,15]由于本实施例为求解最大值问题,且在区间[0,15]内其利润值均大于零,因此,可以直接选择

步骤2输入利润值函数,并设置算法参数。

利润函数为

步骤3编码产生生产时间初始种群,具体包括:

首先,通过不等式2

步骤4根据函数

表1生产时间的初始种群及其利润值

表2初始种群的统计量

步骤5判断当前生产时间的利润值方差是否小于1×10

步骤6:通过轮盘选择法随机选择32个参与交叉的生产时间,轮盘选择法实现如下:将生产时间的利润值与所有生产时间的利润值之和的比值作为生产时间被选中的概率,对所有生产时间被选中的概率进行序列化,计算所有生产时间的累计概率,即每个生产时间与之前所有生产时间被选中概率的和,然后,采用随机函数生成0~1之间的随机数,与第一个累计概率依次向后比较,当第一次小于或等于某累计概率时,则将此累计概率对应的生产时间选出进入下一代,随机函数的实现如下:本发明结合srand()函数和rand()函数配合使用生成伪随机数序列,rand()函数在产生随机数前,需要系统提供的产生伪随机数序列的种子,rand()根据这个种子的值生成一系列随机数,首先,通过随机数发生器的初始化函数srand()基于系统时间生成不同种子值,然后rand()函数根据不同的种子值生成随机数序列。

步骤7随机选择2个生产时间编码,基于高快速的位运算对该对生产时间进行交叉操作,产生两个生产时间子代,若当前生产时间的利润值大于上一代生产时间的利润值,则当前生产时间代替上一代生产时间,否则,保留当前生产时间,该步骤重复进行16次,产生包含32个生产时间编码的交叉后代种群。

步骤8执行变异操作,通过随机变量函数对交叉后代种群中的每个生产时间编码选择发生变异的基因位,即对生产时间编码的变异基因位进行按位取反,产生生产时间子代。若当前生产时间的利润值大于上一代生产时间的利润值,则当前生产时间代替上一代生产时间,否则,保留当前生产时间,该步骤重复进行32次,产生包含32个生产时间编码的变异后代种群。

步骤9替换后的种群进入下一次进化,进化过程一直进行到搜索到利润最大值,最终生产时间种群及其利润值如表3所示:

表3最终生产时间种群及其利润值

本发明的收敛图如图2所示。平均迭代次数为688,可知最大利润值为38.400138百万元,此时生产时间为第8年,即第8年停产可获得最高利润,则最大净利润为18.400138百万元(减去生产线建设成本)。至此,通过本发明提出的一种基于位运算的优化进化编码方法解决了生产线利润最大化问题,帮助分析师进行生产线管理决策。

为了更好地说明本发明提出方法的高效性,测试不同目标函数程序30次的运行时间平均值,结果如下表4所示。

表4为实施例与其他测试函数的30次测试结果的平均运行时间(单位:s)

可见看到,本发明程序运行时间可达到微秒级。

对比例1编码方法对比

编码方法对比如下图所示,传统的二进制编码方法需要通过辗转相除法把十进制数据转换成二进制数据。本发明则利用数据在计算机内存中以二进制形式存储的特点,提出的编码方法不需要进行十进制到二进制的转换操作,加快了程序的运行速度。而是把变量值x的取值区间[a,b]中的等分点直接规划到[0,1]区间中的等分点,然后把[0,1]区间中的等分点映射到[0,2

传统编码方案:

传统编码方案:

int类型在内存中占用了4个字节,即32位。int类型是有符号的,因此,32位并不会全部用来存储数据,使用最高位来存储符号,最高位是0,提示数据是正数,最高位是1,表示数据是负数,使用其他的31位来存储数据。

unsigned int是计算机编程语言中一种表示大于等于0的整数类型,unsignedint类型在内存中占用了4个字节,即32位。int类型是无符号的,因此,32位可以全部用来存储数据。

传统的进化算法采用1个int整型量存储1位二进制编码,其空间利用率只有1/32,这是计算专业程序设计当中所不能容忍。本发明将自变量区间[a,b]等分规划到[0,1]区间中的等分点后,所有的等分点都大于或等于0,因此,本发明采用一个无符号整型量来存储32位编码值,使内存空间利用率达到100%。

unsigned long int和double两种数据类型的描述如下表所示:

本发明采用32位unsigned long int无符号长整型数进行编码。因为32位二进制数能表示的十进制有效位数是9位,而采用8421BCD编码的十进制有效位数只有8位,编码后的二进制数所能表示的实数精度大于8421BCD编码的双精度浮点型数的精度,确保经过编码和解码后的实数能保证计算计算精度。

综上所述,本发明的编码方法的优点包括:加快了程序的运行速度,使内存空间利用率达到100%,确保经过编码和解码后的实数保证计算精度。

对比例2遗传操作对比

传统的遗传操作:选择-交叉-变异-选择最好的N个个体;

本发明的遗传操作:选择-交叉-选择-变异-选择。

传统进化算法的遗传操作是,记录下随机选择、交叉、变异后的结果,然后从当代种群和子代中选择出适应度最好的N个个体,最后的选择方案把结果归结为不随机,即过程随机,而结果却不随机。

本发明的遗传操作是:随机选择参与交叉的个体;交叉完之后只要子代的适应度大于父代的适应度,就替换;接着进行变异操作,变异完之后只要子代的适应度大于父代的适应度,同样替换。本发明将选择融合在整个进化过程当中,保证选择是随机的,过程是随机的,结果也是随机的。

从信息论的角度看,熵是衡量随机性的标准,随机性越大,信息熵越大,传输给系统的信息量越大,收敛到最优点的速度越快。

定义一个矩阵,选择一个定点,再选择一个动点,反复做实验,每次实验是3000次。经过3000次实验以后,其相遇的机会基本上是1次;同样的,如果选择2个动点,经过3000次实验以后,其相遇的机会基本上是9次,速度快了将近1个数量级。

两个动点相遇的概率远远大于一个定点一个动点相遇的概率。这也说明为什么随机性越好,收敛到最优解的速度越快。

对比例3遗传操作位运算对比

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。

传统的进化算法的遗传操作使用的都是算术运算,其时间复杂度较大。本发明通过位运算进行遗传操作,通过位运算的的与、或、非,包括左移、右移可以迅速地取位和置位,相对算术运算,时间复杂度减小了2个数量级,大大加快了程序的运行速度。

S

S

交叉后变成:

S’

S’

变异后变成:

S’

S’

利用位运算的左移、右移、与、或、非等实现交叉、变异等遗传操作。

相关技术
  • 一种基于位运算的优化进化编码方法
  • 一种基于协同进化的多偏好高维目标优化方法
技术分类

06120112199657