技术领域:
本发明提供了一种关于进化算法的练习方法,属于人工智能教学培训领域。
背景技术:
:
人工智能是现今一个最热门的科学技术领域,既是国家的一项重大科技发展战略方向,也是企业机构争相研发应用的技术,社会上也出现了学习人工智能技术的学习热潮。许多大学除了在传统专业院系开设的专业课级别的人工智能课程外,还面向全校所有专业的学生开设全校通识性人工智能选修课;社会上的商业培训机构也开始大量开设各种形式的人工智能培训课程。进化算法是一项重要的人工智能技术,一般是大学所开设的人工智能专业课和选修课都必须包括的内容。学习进化算法,除了理论知识技术的学习外,通常还需要学生练习使用进化算法,以便能够更好地理解和掌握所学习的理论知识技术。目前,进化算法的练习主要是以实验教学为主,通常可以分为两大类。一类是让学生上机自己编写一个进化算法的小程序,另一类是让学生使用一些现有的进化算法软件包解决一个小问题,例如,专利申请“一种关于进化算法的实验教学方法和系统”(申请号201910966399.1)就是用于多人同时参与同一个进化算法实验。这些方法通常都需要使用计算机、智能手机、平板电脑这些电子产品,而且对学生的编程能力和软件使用能力也有一定的要求。另外,在编程实验中,存在学生上网搜索拷贝他人代码的可能;在运行现有软件的绝大多数实验中,学生只能被动地观察抄录软件的输出数据,无法深入参与到软件运行的计算过程中。因此,通过这些实验方法进行进化算法的练习后,许多学生可能仍然搞不清楚进化算法内部的计算过程是怎样的,从而达不到预期的练习效果。
本发明提出一种关于进化算法的练习方法,可以让练习摆脱对计算机等电子产品的依赖,同时让学生深度参与到进化算法运行过程的中间步骤的计算和决策细节当中,从而适用于各种专业背景的学生学习进化算法,加深学生对进化算法工作机理的体会和理解。
技术实现要素:
:
本发明的目的是要提供一种关于进化算法的练习方法,以实现在没有计算机等电子产品的情况下也能让学生开展进行关于进化算法的深度练习的目的。
众所周知,进化算法是模仿各种生物界群体进化行为的多智体自组织随机搜索算法,利用计算机技术模拟智体群中智体基于特定自组织机理的彼此交互行为并不断进化智体群,从而找到待求解问题的高质量解。本发明的练习方法需要学生人工分析推导每一代智体群中的每一个智体是怎样产生的以及如何进化的,从而通过练习加深学生对进化算法工作机理的体会和理解。
按本发明的方法进行练习时,学生需要通过人工计算手动填写表格的方式理解进化算法的运行过程和操作细节。所以,本发明的方法首先需要基于所要练习的进化算法原理设计一套表格模板。这里先介绍一下本发明方法的最基本的表格模板的设计。假设老师要求在一次进化算法练习中对智体群总共进化ng代,则基本表格模板含有ng个子表,每个子表对应进化算法的一代智体群。又假设老师要求每代智体群具有na个智体以及每个智体包含ne个元素,那么基本表格模板的每个子表至少有(ne+3)行(na+1)列,其中需要学生填写的部分至少为(ne+2)行na列,即,每个子表中需要学生填写的部分至少为(ne+2)×na个表格。每个子表中需要预先填入一些信息,以便帮助学生理解和使用表格。需要预先填入的信息如下:每个子表的第1行的第2个表格到第(na+1)个表格分别预先填好第1个智体到第na个的名称;每个子表的第1列的第2个表格到第(ne+1)个表格分别预先填好一个智体所包含的ne个元素的名称,每个子表的第1列的第(ne+2)个表格预先填好智体适应度值的名称;每个子表的第1列的第(ne+3)个表格预先填好恰当文字信息以提示学生需要填写对各个智体采取的进化操作;每个子表的第2行到第(ne+3)行的第2列到第(na+1)列为需要学生填写的(ne+2)×na个表格。子表中需要学生填写的(ne+2)×na个表格为子表中第2行到第(ne+3)行的第2列到第(na+1)列的(ne+2)×na个表格。从第2列开始向右,每列的第2行到第(ne+1)行对应组成一个智体所需的ne个元素,第(ne+2)行对应该智体的适应度值,第(ne+3)行对应该智体将采取的进化操作。
进化算法的主要运行步骤一般包括:随机生成第一代智体群;计算当前智体群中每个智体的适应度值;主要基于智体的适应度值再根据特定的进化原理在当前智体群的基础上进化生成新一代智体群,并更新为当前智体群;如果还没有进化到所规定的最大代数,则重复前面两步;如果已经进化到了所规定的最大代数,则把当前智体群中适应度值最大的智体所代表的解作为最优解输出,从而进化算法结束。
参照进化算法的主要运行步骤,本发明方法中学生使用上述基本表格模板开展进化算法练习的步骤如下:
(步骤一)设计生成表格模板后,先在第一个子表中按给定的智体元素的取值范围随机填写子表的第2行到第(ne+1)行的第2列到第(na+1)列的所有ne×na个表格作为第一代智体群,其中第2列的第2个表格到第(ne+1)个表格总共ne个表格中所填的智体元素值一起构成第一代智体群中的第一个智体,……,第(na+1)列的第2个表格到第(ne+1)个表格总共ne个表格中所填的智体元素值一起构成第一代智体群中的第na个智体;
(步骤二)基于所填写好的每个智体的元素值,根据所练习的进化算法给定的智体适应度值计算公式计算出每个智体的适应度值,并填入子表第(ne+2)行中与各个智体所对应的表格中,即,第一个智体的适应度值填入子表的第2列的第(ne+2)个表格,……,第na个智体的适应度值填入子表的第(na+1)列的第(ne+2)个表格;
(步骤三)根据所练习的进化算法的相关原理,由学生自己决定各个智体将采取何种进化操作,并在子表第(ne+3)行中与各个智体所对应的表格中填写各个智体将采取的进化操作信息,即,第一个智体将采取的进化操作信息填入子表的第2列的第(ne+3)个表格,……,第na个智体将采取的进化操作信息填入子表的第(na+1)列的第(ne+3)个表格,从而完成第一个子表的填写,即,生成了第一代智体群;
(步骤四)基于刚完成的一个子表,即,基于当前一代智体群,学生进一步填写下一个子表,即,当前填写子表,以生成新一代智体群,首先,根据刚完成子表中各个智体的元素数据和各个智体所采取的进化操作,学生需要推导得出新一代智体群中na个智体的元素数据,并相应填入到当前填写子表的第2行到第(ne+1)行的第2列到第(na+1)列的所有ne×na个表格中;
(步骤五)新一代智体群中na个智体的元素数据填写完毕后,学生再计算新一代智体群中每个智体的适应度值并相应填入当前填写子表的第(ne+2)行的第2列到第(na+1)列的表格中;
(步骤六)如果当前填写子表不是第ng个子表,即,新一代智体群不是最后一代智体群,那么进入步骤七,否则,进入步骤八;
(步骤七)学生自己决定新一代智体群中各个智体将采取的何种进化操作并相应填入当前填写子表的第(ne+3)行的第2列到第(na+1)列的表格,从而完成当前子表的填写,然后,以新一代智体群作为当前一代智体群,返回步骤四;
(步骤八)学生选出新一代智体群中适应度值最大的智体,在当前填写子表的第(ne+3)行中与适应度值最大的智体所对应的那个表格中填入恰当信息以表示该智体所代表的解将被输出作为本次进化算法练习所求解问题的最优解,从而本次练习结束。
关于本发明方法所使用的表格模板的子表的设计,除了最基本的(ne+3)行(na+1)列的表格外,还可以再添加一些额外的行和列以便可以填入一些与进化算法练习相关的额外信息,有利于学生更好开展练习。例如,每个子表除了最基本的(ne+3)行(na+1)列的表格外,还可以再添加一行进行扩展,从而扩展子表具有(ne+4)行(na+1)列的表格;扩展子表的第1行的所有(na+1)个表格可以合并成一个表格,在该表格中预先填入该扩展子表所代表的智体群的名称,即,该扩展子表代表第几代智体群;扩展子表中的第2行到第(ne+4)行的第1列到第(na+1)列的(ne+3)×(na+1)个表格则与基本表格模板的子表完全一样。又例如,每个子表除了最基本的(ne+3)行(na+1)列的表格外,还可以再添加一列进行扩展,从而扩展子表具有(ne+3)行(na+2)列的表格;扩展子表的第1列的所有(ne+3)个表格可以合并成一个表格,在该表格中预先填入该扩展子表所代表的智体群的名称,即,该扩展子表代表第几代智体群;扩展子表中的第1行到第(ne+3)行的第2列到第(na+2)列的(ne+3)×(na+1)个表格则与基本表格模板的子表完全一样。
根据具体需要进行关于哪种进化算法的练习,在表格模板中所填写的内容会有所区别。
如果进化算法练习是关于遗传算法的,即关于geneticalgorithm,那么以最基本的表格模板中具有(ne+3)行(na+1)列的子表为例,则每个子表的第1行的第2个表格到第(na+1)个表格可以分别预先填好“第1条染色体”到“第na条染色体”,每个子表的第1列的第2个表格到第(ne+1)个表格可以分别预先填好“第1个基因”到“第ne个基因”,每个子表的第1列的第(ne+2)个表格可以预先填好“染色体适应度值”,每个子表的第1列的第(ne+3)个表格可以预先填好“对染色体怎样开展哪种遗传操作”,学生在练习时,需要自己决定子表中哪个染色体将和哪个染色体如何进行交叉,哪个染色体将在哪个基因发生怎样的变异,哪个染色体需要被淘汰而完全随机重新生成一条新染色体,以及哪个染色体将被直接拷贝到下一代染色体中,并将各个染色体要采取的进化操作信息填写到子表第(ne+3)行中与各个染色体所对应的表格中。
如果进化算法练习是关于蚁群算法的,即关于antcolonyoptimization,那么以最基本的表格模板中具有(ne+3)行(na+1)列的子表为例,则每个子表的第1行的第2个表格到第(na+1)个表格可以分别预先填好“第1只蚂蚁”到“第na只蚂蚁”,每个子表的第1列的第2个表格到第(ne+1)个表格可以分别预先填好“蚂蚁所走路径中的第1步”到“蚂蚁所走路径中的第ne步”,每个子表的第1列的第(ne+2)个表格可以预先填好“蚂蚁所走路径的成本”,每个子表的第1列的第(ne+3)个表格可以预先填好“如何为下一代的蚂蚁生成路径”,学生在练习时,需要自己决定子表中哪只蚂蚁所走的路径将直接拷贝给下一代蚂蚁,下一代哪只蚂蚁所走的路径将完全随机生成,下一代哪只蚂蚁所走的路径将参考所有路径可选步骤上现有的荷尔蒙信息素浓度而生成,并将下一代各只蚂蚁的路径生成方法信息填写到子表第(ne+3)行中与各只蚂蚁所对应的表格中;用于生成下一代大多数蚂蚁路径的所有可选步骤上的现有荷尔蒙信息素浓度需要学生根据当前子表中各只蚂蚁所走的路径以及成本数据,按照蚁群算法的荷尔蒙信息素浓度更新公式而进行计算。
如果进化算法练习是关于粒子群算法的,即关于particleswarmoptimization,那么以最基本的表格模板中具有(ne+3)行(na+1)列的子表为例,则每个子表的第1行的第2个表格到第(na+1)个表格可以分别预先填好“第1个粒子智体”到“第na个粒子智体”,每个子表的第1列的第2个表格到第(ne+1)个表格可以分别预先填好“粒子智体解的第1个组分”到“粒子智体解的第ne个组分”,每个子表的第1列的第(ne+2)个表格可以预先填好“粒子智体解的质量”,每个子表的第1列的第(ne+3)个表格可以预先填好“如何生成下一代粒子智体的解”,学生在练习时,需要自己决定子表中哪个粒子智体的解将直接拷贝给下一代粒子智体,下一代哪个粒子智体的解将完全随机生成,下一代哪个粒子智体的解将按哪种学习方式而生成,并将下一代各个粒子智体的解的生成方法信息填写到子表第(ne+3)行中与各个粒子智体所对应的表格中。
关于本发明方法中表格模板,除了学生根据练习要求自行设计绘制外,还可以采用以下几种方式。可以将练习要用的表格模板印刷成适用于特定进化算法练习的标准化练习册,练习时,学生直接在练习册上填写;也可以根据老师选定的进化算法相关参数,主要包括每个智体所具有的元素个数、每代智体群所具有的智体个数、以及智体群需要进化的总代数,而定制化设计,然后用纸张打印出来供学生练习使用;在具有计算机的情况下,可以用相关的电脑软件生成可编辑的电脑表格模板文件,比如excel表格模板文件,学生可以通过直接在电脑上填写表格模板文件而进行练习,相较于进化算法软件以及编程,学生一般更加熟悉这些计算机上的表格编辑软件,因此适用于各种专业背景的学生使用。
本发明的一种关于进化算法的练习方法具有以下有益效果:本发明的方法可以在没有计算机的学习条件下让学生开展关于进化算法的练习;本发明的方法不需要学生具有计算机编程和相关软件使用能力,适用于任何专业背景,包括文科专业的学生练习进化算法;而且本发明的方法能使学生深入练习进化算法的细节步骤,从而加深学生对进化算法的印象和理解。
附图说明:
附图给出本发明的一种关于进化算法的练习方法的示意图:
图1:本发明的一种关于进化算法的练习方法的步骤流程图。
图2:本发明的一种关于进化算法的练习方法的表格模板中的一个子表的设计示例一。
图3:本发明的一种关于进化算法的练习方法的表格模板中的一个子表的设计示例二。
图4:本发明的一种关于进化算法的练习方法的表格模板中的一个子表的设计示例三。
具体实施方式:
下面结合附图,对本发明的一种关于进化算法的练习方法做进一步说明。
图1给出了本发明的一种关于进化算法的练习方法的步骤流程图。练习方法主要包括7个步骤,其中(步骤一)是设计生成表格模板,并填写第一个子表以随机生成第一代智体群;(步骤二)是计算填写第一代智体群中各个智体的适应度值;(步骤三)是决定并填写第一代智体群中各个智体将采用什么进化操作;(步骤四)是基于刚完成的一个子表填写下一个子表中新一代智体群的智体元素数据;(步骤五)是计算填写新一代智体群中各个智体的适应度值;(步骤六)判断新一代智体群是否是最后一代智体群,如果不是,则执行(步骤七),否则执行(步骤八);(步骤七)是决定并填写新一代智体群中各个智体将采用什么进化操作,然后返回(步骤四);(步骤八)选出新一代智体群中适应度值最大的智体作为最优解输出。
图2给出了本发明的一种关于进化算法的练习方法的表格模板中的一个子表的设计示例一。图2示例的子表用于练习遗传算法。子表含有(ne+3)行(na+1)列,表明每一代智体群有na条染色体,每个染色体由最多ne个基因组成。子表的第1行的第2个表格到第(na+1)个表格可以分别预先填好“第1条染色体”到“第na条染色体”;子表的第1列的第2个表格到第(ne+1)个表格可以分别预先填好“第1个基因”到“第ne个基因”;子表的第1列的第(ne+2)个表格可以预先填好“染色体适应度值”;子表的第1列的第(ne+3)个表格可以预先填好“对染色体怎样开展哪种遗传操作”。在练习时,学生需要根据遗传算法的原理按照本发明方法的相关步骤填写子表的第2行到第(ne+3)行的第2列到第(na+1)列的(ne+2)×na个表格。
图3给出了本发明的一种关于进化算法的练习方法的表格模板中的一个子表的设计示例二。图3示例的子表用于练习蚁群算法的第一代蚂蚁。首先,图3的子表比图2的子表多了一行,即图3子表中的第一行,该行所有(na+1)个表格合并成一个表格,在该表格中预先填入了“第一代蚁群”以表明该子表用于练习哪一代蚂蚁。图3的子表从第二行起向下的剩余部分与图2示例子表的结构完全一样,也是(ne+3)行(na+1)列,表明每一代智体群有na只蚂蚁,每只蚂蚁所走路径最多包含ne个步骤。因为用于练习蚁群算法,所以图3子表的第2行的第2个表格到第(na+1)个表格可以分别预先填好“第1只蚂蚁”到“第na只蚂蚁”;子表的第1列的第3个表格到第(ne+2)个表格可以分别预先填好“蚂蚁所走路径中的第1步”到“蚂蚁所走路径中的第ne步”;子表的第1列的第(ne+3)个表格可以预先填好“蚂蚁所走路径的成本”;子表的第1列的第(ne+4)个表格可以预先填好“如何为下一代的蚂蚁生成路径”。在练习时,学生需要根据蚁群算法的原理按照本发明方法的相关步骤填写子表的第3行到第(ne+4)行的第2列到第(na+1)列的(ne+2)×na个表格。
图4给出了本发明的一种关于进化算法的练习方法的表格模板中的一个子表的设计示例三。图4示例的子表用于练习粒子群算法的第ng代粒子智体群。首先,图4的子表比图2的子表多了一列,即图4子表中的第一列,该列所有(ne+3)个表格合并成一个表格,在该表格中预先填入了“第ng代粒子智体群”以表明该子表用于练习哪一代粒子智体。图4的子表从第二列起向右的剩余部分与图2示例子表的结构完全一样,也是(ne+3)行(na+1)列,表明每一代智体群有na个粒子智体,每个粒子智体所代表的解最多包含ne个组分。因为用于练习粒子群算法,所以图4子表的第一行的第3个表格到第(na+2)个表格可以分别预先填好“第1个粒子智体”到“第na个粒子智体”;子表的第2列的第2个表格到第(ne+1)个表格可以分别预先填好“粒子智体解的第1个组分”到“粒子智体解的第ne个组分”;子表的第2列的第(ne+2)个表格可以预先填好“粒子智体解的质量”;子表的第1列的第(ne+3)个表格可以预先填好“如何生成下一代粒子智体的解”。在练习时,学生需要根据粒子群算法的原理按照本发明方法的相关步骤填写子表的第2行到第(ne+3)行的第3列到第(na+2)列的(ne+2)×na个表格。