第五章 分布式遗传算法研究
§5.1 分布式遗传算法简介
遗传算法的基本结构及特征决定了它特别适合大规模并行。一些研究表明,在并行或分布式系统上进行演化计算,不仅可以提高解题的速度和解的质量,甚至可以获得超线性的加速比。因而,近年来,关于遗传算法并行实现的研究受到了人们的广泛重视。
分布式遗传算法一般实行粗粒度及群体级并行,各子群体间的相互作用较弱,主要依靠一些几乎串行的遗传算法来加速搜索过程。群体级的并行即是将一个大群体按照硬件的结构划分为一些子群体,这些子群体一般独立地演化,即它们在自身内部进行选择及遗传操作,只是经过一定的代数才在子群体间交流一些信息,即所谓的迁移模型。
在迁移模型中,群体的组织方式通常是一个大群体划分为一些子群体,每个子群体自成为一个单位,只是在子群体之间实行个体的迁移,即个体从一个子群体迁移到另外一个子群体,迁移量的多少通常由两个参数来确定:迁移代频和迁移率。这两个参数的大小以及实行迁移的方式决定了迁移模型之间的差别。若个体的迁移是完全随机的,即从子群体中均匀随机地进行抽样,然后再随机地迁移到另一个群体中,这时可以认为这些子群体是完全独立的,个体的选择和迁移对这些子群体都是对等的,即相当于将这些子群体看成是一些独立的岛屿,个体从一个岛屿到另外一个岛屿的机会是均等的,这种迁移模式称为“岛屿”模式,是研究的比较多的一种模型。在实现并行时,子群体的互连方式既可以是总线形,也可以是环形,或二维阵列,超立方体等。可以根据互连方式的区别来确定子群体间的相邻关系,从而使个体迁移到相邻子群体具有较大的概率,这样进行迁移的方式称为“脚踏石“模型。
§5.2 分布式遗传算法的实现和算法研究
目前随着以高主频Pentium II﹑Pentium III ﹑AMD K-7为代表的高性能微机的逐渐应用,微机的性能已经得到了很大的提高,运算速度已经和以前小型机﹑中型机相当,而网络速度的提高和价格的降低也使得10M﹑100M甚至千兆以太网逐渐普及。进行分布式计算的硬件条件比较容易得到满足。另一方面,高性能并行计算机价格居高不下,大多数人对其软硬件也很不熟悉。所以作者的研究重点自然地放在分布式遗传算法在微机环境下实现的研究上。
从微机操作系统来看,目前最普及的是微软的Windows操作系统(包括Windows 9X系列和NT系列,以及最新的2000系列),以及Linux操作系统,由于作者可以得到的研究环境为高性能的Windows工作站,所以将研究在Windows环境下分布式遗传算法的实现。
如何在Windows环境下进行分布式运算,有较多的方法,以下为其中最常用的几种:
(1)采用微软的DCOM标准;
(2)采用分布式对象CORBA标准;
(3)采用Windows Socket编程;
DCOM技术是微软推荐使用的,比较成熟,开发工具较多。CORBA技术可以跨平台,即可以在Windows和Unix系统下进行通讯,但是开发工具较少,一般都采用Borland公司的Builder系列产品进行开发。目前DCOM和CORBA的技术资料较少,另外DCOM和CORBA的底层实际上也是采用TCP/IP协议实现的,Windows Socket就是在Windows环境下对TCP/IP协议的编程接口,可以认为Windows Socket技术比DCOM和CORBA技术更加底层,同时DCOM和CORBA还有许多面向对象的实现,即可以在网络环境下实现对象的透明访问。这三种技术中,作者最为熟悉的是采用Windows Socket编程。由于本研究的重点不在于建立一个十分完善的分布式环境,所以本章均采用Windows Socket编程。
TCP/IP协议中的传输协议有面向连接的TCP协议和面向无连接的UDP协议,由于作者的实验环境为100M高速局域网,而且传输的数据量也不是太大,所以就选择了效率稍低﹑但编程相对较简单的TCP协议作为传输协议。
分布式实现采用客户服务器方式,即数据的传输只是发生在客户和服务器之间,客户之间无直接的通讯,客户的数据由服务器集中处理。服务器的功能相对比较简单,主要作用是为各个客户传来的数据进行缓冲,等待客户之间的同步,按照一定的策略交换对应于各客户的数据并且将交换后的数据发回给客户。基于客户服务器方式的通讯需要遵循一定的协议,作者采用如下思路建立相应的通讯协议,并将其命名为分布式遗传算法协议DGAP(Distributed Genetic Algorithmic Protocol)。
在分布式遗传规划的计算过程中,各个子群体不允许中途退出,由于遗传规划本身的计算量很大,一般来说一个客户就对应着一台计算机,所以在此与一般的客户服务器程序不同的是,在开始阶段就必须明确知道参与计算的客户(计算工作站)的数量,服务器在所有的客户均与之连接上并经过验证后,给客户下达开始计算的命令,各个客户机开始进行计算,当客户机演化到指定的代数后,计算暂停,各客户分别与服务器进行通讯,上传用于进行交换的个体基因数据,然后等待服务器再次与自己联系,得到服务器经过处理后的基因数据,将这些基因数据转化为相应的个体加入到当前的群体中,继续迭代过程。重复以上过程,直到各个客户端求解结束,输出结果。
在以上过程中,如果发生任何的网络错误,整个的分布式计算即宣告失败。以上模型是基于传统的分布式计算的,在网络环境良好时是可行的,由于实验的背景为高速局域网,该条件可以实现。如果在网络条件不好,比如在广域网上实现时,该模型是不适合的,必须进行适当的修改。
下面是客户和服务器的运行流程:
对于客户:
(1)连接服务器;
(2)输入基本参数并得到验证;
(3)开始计算;
(4)到设定的代数,向服务器发送进行交换个体的基因数据,并等待服务器发回数据;
(5)得到服务器发回的数据,将数据转换为对应的个体,随机替换掉当前群体的个体,继续运算;
对于服务器:
(1)等待客户的连接请求;
(2)接受客户;
(3)验证客户参数,验证失败则给客户发送错误码,成功则继续;
(4)等待客户上传基因数据,如果只得到部分客户的数据,令已发送数据的客户等待;
(5)得到所有客户的数据,交换基因数据,并将数据传回;
通讯协议的实现最有力的工具是采用有限状态机来表示,图5.1是服务器端与客户进行交互的有限状态机,值得强调的是有限状态机对于不同的客户是不同的。
UNCHECKED STATE |
PARA STATE |
CHECKED STATE |
DATA STATE |
READY STATE |
图5.1
有限状态机各个状态转移的条件如下:
(1)如果当前状态为UNCHECKED_STATE,当客户送来命令字串“PARA”时转到状态PARA_STATE;
(2)如果当前状态为PARA_STATE,当客户送来正确的数据串“ID GeneNumber ExchangeMember ExchangeFrequency ”(该数据串的意为,求解问题的代码,此数据相同表示各个客户求解的是同一问题,第二个参数意为交换的个体数,第三个参数意为每个个体的基因数,第四个参数意为交换代频)时转到状态CHECKED_STATE,如果此时是第1个客户在进行通讯,即将其参数作为进行分布式计算的参数,如果不是第1个客户,则要求其参数和已有的参数一致否则服务器发送错误码给客户,并且不做状态转移;
(3)如果当前状态为CHECKED_STATE,当客户送来命令字串“DATA”时转到状态DATA_STATE;
(4)如果当前状态为DATA_STATE,接受客户送来的基因数据,如果数据全了,即各个客户都已将数据送到,则按照一定的策略交换数据,并将数据传回到客户,状态转移到CHECKED_STATE,如果数据未全,进入READY_STAT
E,此时远端客户处于等待数据阶段;
注意这里的状态机之间的转换都是发生在服务器上的,即与客户端实际交互的插口(Socket)相关。
分布式遗传算法程序客户的退出有两种情况:
(1)异常退出(客户端计算出现问题,这时客户给服务器发送命令“ABORT
”,出现这种情况的原因在于客户端发生了错误或是在调试阶段,需要提前中断计算);
(2)正常退出(客户计算结束,这时客户给服务器发送“SUCCESS”;
采用典型的客户服务器,服务器的各个插口是在同一线程中的。所以有效的通讯形式是尽量快地对客户传入的信息进行处理,一般来讲互传的数据不宜过大。单线程的优点是不需考虑同步的问题。当然,采用多线程就会更加灵活,不过编程较复杂,需要考虑线程之间的同步。由于本章的研究重点在于分布式遗传算法本身,所以就没有在多线程方面进行深入的研究。本分布式计算的服务器采用单线程方式。
在本章分布式遗传算法的实现中,选择用于交换个体的方式是常用的轮盘赌,所以在子群体中适应度越高的的个体越容易被选中用于交换。
在服务器端对各个客户个体基因信息的处理采用顺序交换的方式。首先随机地将多个客户排序,然后顺序交换个体的基因信息。以三个客户为例,假设
当前随机的顺序为客户1﹑客户2﹑客户3,那么首先将客户3的个体数据暂存,然后将用客户2的数据替代客户3,客户1的数据替代客户2,最后将暂存的数据替代客户1的数据。即如下图所示:
客户1 |
客户2 |
客户3 |
图5.2
显然本算法采用的是“岛屿”模型。
§5.3 算例
首先求解的算例是 十杆最轻重量设计,图见第三章,设定每隔50代交换一次。遗传算法的复制概率为0.2,变异概率为0.01,群体规模为100,基因长100,不进行摄动。在保留每一代最优个体之后,进行交换,所以,最优个体有可能不被保留。进行交换的个体数取为10。
采用两个客户,分布在两台机器上进行计算,随机运行十次得到表5.1结果:
(表中单位为 )
客户(1) | 客户(2) | 客户最好解 | 不加摄动单客户,随机运行十次 |
1772.094299 | 1764.151498 | 1772.094299 | 1794.260703 |
1779.837576 | 1769.668159 | 1769.668159 | 2090.602323 |
1621.497349 | 1621.497349 | 1621.497349 | 1981.622290 |
1948.023518 | 1949.427623 | 1948.023518 | 1914.366377 |
1860.511557 | 1851.945769 | 1851.945769 | 1870.663998 |
1649.238782 | 1655.195882 | 1649.238782 | 1952.102121 |
1858.924903 | 1858.924903 | 1858.924903 | 1819.534603 |
1747.285256 | 1741.668833 | 1741.668833 | 1969.807850 |
1678.143404 | 1678.143404 | 1678.143404 | 1836.965464 |
1956.165842 | 1913.278532 | 1913.278532 | 1927.660266 |
均值1787.2 | 均值1780.4 | 均值1780.4 | 均值1915.7586 |
最优1621.497349 | 最优1621.497349 | 最优1621.497349 | 最优1794.260703 |
表5.1
表5.1中的客户最优解是指客户(1)﹑客户(2)中最好解。可以明显看出交换的效果,无论是均值还是最优解,均有了明显的改善。另外一个明显的结果就是各个客户求得的最优解相差很小,这也是各个客户之间相互传递基因数据导致的直接后果。表5.1中不加摄动的单客户的计算结果选自论文的第三章。
如果在交换之后保留当前客户群体的最优个体,即借鉴单客户遗传稳态算法的构想。遗传参数不变,个体在客户机之间的传递方式不变,随机运行十次,计算结果如下表表5.2所示:
客户(1) | 客户(2) | 客户最好解 | 不加摄动单客户,随机运行十次 |
1791.311337 | 1834.738848 | 1791.311337 | 1794.260703 |
1788.344995 | 1779.779207 | 1779.779207 | 2090.602323 |
1828.117367 | 1818.288628 | 1818.288628 | 1981.622290 |
1652.387671 | 1652.387671 | 1652.387671 | 1914.366377 |
1882.371234 | 1880.385534 | 1880.385534 | 1870.663998 |
1768.064530 | 1799.295530 | 1768.064530 | 1952.102121 |
1737.074445 | 1741.286762 | 1737.074445 | 1819.534603 |
1735.969625 | 1730.253441 | 1730.253441 | 1969.807850 |
1835.736465 | 1850.840948 | 1835.736465 | 1836.965464 |
1731.217107 | 1743.754295 | 1731.217107 | 1927.660266 |
均值1775.05948 | 均值1783.10109 | 均值1772.44984 | 均值1915.7586 |
最优1652.387671 | 最优1652.387671 | 最优1652.387671 | 最优1794.260703 |
表5.2
计算的结果与不保留相差不多。可见由于每个子个体均以较大的概率选择适应度高的个体进行交换,这样子群体可以在某种程度上确保整个分布式计算体现出“稳态”。下面考虑在交换前和交换后均保留最优个体,可以期望得到相似的结果。
保持遗传参数不变,个体在客户机之间的传递方式不变,交换前和交换后均保留最优个体,随机运行十次,计算结果如表5.3所示:
客户(1) | 客户(2) | 客户最好解 | 不加摄动单客户,随机运行十次 |
1878.823298 | 1876.015087 | 1876.015087 | 1794.260703 |
1964.614892 | 1962.047598 | 1962.047598 | 2090.602323 |
1729.613478 | 1729.613478 | 1729.613478 | 1981.622290 |
1675.393562 | 1675.393562 | 1675.393562 | 1914.366377 |
1750.774823 | 1750.774823 | 1750.774823 | 1870.663998 |
1732.521451 | 1728.550050 | 1728.550050 | 1952.102121 |
1871.520460 | 1871.520460 | 1871.520460 | 1819.534603 |
1885.079683 | 1885.079683 | 1885.079683 | 1969.807850 |
1636.701594 | 1636.701594 | 1636.701594 | 1836.965464 |
1656.018393 | 1656.018393 | 1656.018393 | 1927.660266 |
均值1778.10616 | 均值1777.17147 | 均值1777.17147 | 均值1915.7586 |
最优1636.701594 | 最优1636.701594 | 最优1636.701594 | 最优1794.260703 |
表5.3
如果单目标遗传规划采用论文第三章提出的摄动算法,遗传参数不变,个体在客户机之间的传递方式不变,随机运行十次,计算结果如表5.4所示:
客户(1) | 客户(2) | 客户最好解 | 摄动单客户,随机运行十次 |
1598.931898 | 1598.931898 | 1598.931898 | 1724.977697 |
1656.259310 | 1661.152983 | 1656.259310 | 1665.747371 |
1752.378452 | 1768.986802 | 1752.378452 | 1665.024621 |
1753.200963 | 1753.200963 | 1753.200963 | 1760.338228 |
1761.384680 | 1756.931447 | 1756.931447 | 1612.150443 |
1847.052096 | 1847.052096 | 1847.052096 | 1798.614174 |
1598.931898 | 1598.931898 | 1598.931898 | 1746.421352 |
1625.128071 | 1625.128071 | 1625.128071 | 1744.676568 |
1632.929717 | 1632.929717 | 1632.929717 | 1849.743569 |
1833.268932 | 1833.268932 | 1833.268932 | 1668.414427 |
均值1705.9466 | 均值1707.65148 | 均值1705.50128 | 均值1723.61085 |
最优1598.931898 | 最优1598.931898 | 最优1598.931898 | 最优1612.150443 |
表5.4
求解的效果相当令人满意,分别有两次求到了我们根据连续最优解估计的离散极小值。摄动单客户,随机运行十次的结果选自论文的第三章。
以上算例说明了采用分布式遗传算法是成功的。
下面讨论不同代频和不同的迁移个体数目的影响,将代频取为25,迁移个体数为5,其他参数不变,且不采用摄动,随机运行十次,计算结果如表5.5所示:
客户(1) | 客户(2) | 客户最好解 | 不加摄动单客户,随机运行十次 |
1622.801693 | 1622.801693 | 1622.801693 | 1794.260703 |
1845.008027 | 1845.008027 | 1845.008027 | 2090.602323 |
1752.178929 | 1750.774823 | 1750.774823 | 1981.622290 |
1670.499889 | 1670.499889 | 1670.499889 | 1914.366377 |
1693.688327 | 1671.663078 | 1671.663078 | 1870.663998 |
1948.388613 | 1922.450332 | 1922.450332 | 1952.102121 |
1677.379262 | 1677.379262 | 1677.379262 | 1819.534603 |
1680.287235 | 1680.287235 | 1680.287235 | 1969.807850 |
1845.730776 | 1845.730776 | 1845.730776 | 1836.965464 |
1640.913910 | 1640.913910 | 1640.913910 | 1927.660266 |
均值1737.68767 | 均值1732.7509 | 均值1732.7509 | 均值1915.7586 |
最优1622.801693 | 最优1622.801693 | 最优1622.801693 | 最优1794.260703 |
表5.5
由上表可以看出减小代频和迁移的个体后,计算性能有所下降。
将分布的计算机增加到3台,将代频取为50,迁移个体数为10,随机运行十次,不采用摄动,计算结果如表5.6所示:
客户(1) | 客户(2) | 客户(3) | 客户最好解 | 不加摄动单客户,随机运行十次 |
1628.758793 | 1628.758793 | 1628.758793 | 1628.758793 | 1794.260703 |
1625.128071 | 1625.128071 | 1689.617165 | 1625.128071 | 2090.602323 |
1610.264504 | 1610.264504 | 1610.264504 | 1610.264504 | 1981.622290 |
1636.360915 | 1635.779321 | 1636.360915 | 1635.779321 | 1914.366377 |
1746.379959 | 1724.678412 | 1726.082517 | 1724.678412 | 1870.663998 |
1611.327932 | 1646.671487 | 1611.327932 | 1611.327932 | 1952.102121 |
1688.271429 | 1680.910223 | 1688.271429 | 1680.910223 | 1819.534603 |
1692.525138 | 1700.368177 | 1690.398283 | 1690.398283 | 1969.807850 |
1614.958654 | 1614.958654 | 1615.781165 | 1614.958654 | 1836.965464 |
1632.148599 | 1632.148599 | 1632.148599 | 1632.148599 | 1927.660266 |
均值1648.6124 | 均值1649.96662 | 均值1652.90113 | 均值1645.43528 | 均值1915.7586 |
最优1610.264504 | 最优1610.264504 | 最优1610.264504 | 最优1610.264504 | 最优1794.260703 |
表5.6
求解的总体性能得到进一步的提高。
在上面的算例中各个子群体采用的群体数均为100,现降低为50,其他的参数不变,不采用摄动,随机运行十次,计算结果如表5.7所示:
客户(1) | 客户(2) | 客户(3) | 客户最好解 | 不加摄动单客户,随机运行十次 |
1614.717737 | 1614.717737 | 1614.717737 | 1614.717737 | 1794.260703 |
1636.360915 | 1634.375215 | 1634.375215 | 1634.375215 | 2090.602323 |
1730.535750 | 1730.535750 | 1730.535750 | 1730.535750 | 1981.622290 |
1847.392774 | 1847.392774 | 1847.392774 | 1847.392774 | 1914.366377 |
1737.855563 | 1737.855563 | 1737.855563 | 1737.855563 | 1870.663998 |
1623.964882 | 1623.964882 | 1623.964882 | 1623.964882 | 1952.102121 |
1806.033749 | 1806.033749 | 1806.033749 | 1806.033749 | 1819.534603 |
1667.309607 | 1667.309607 | 1667.309607 | 1667.309607 | 1969.807850 |
1776.182436 | 1776.182436 | 1776.182436 | 1776.182436 | 1836.965464 |
1717.176051 | 1717.176051 | 1717.176051 | 1717.176051 | 1927.660266 |
均值1715.75295 | 均值1715.55438 | 均值1715.55438 | 均值1715.55438 | 均值1915.7586 |
最优1614.717737 | 最优1614.717737 | 最优1614.717737 | 最优1614.717737 | 最优1794.260703 |
表5.7
由上表可以看出,进行分布式之后,可以在保持计算性能基本不变的前提下减小群体的规模。
参考文献【37】指出,如果不交换个体即不进行迁移的话,各个客户之中的最优解一般略优于进行迁移后各个客户的最优解,但是进行迁移的分布式遗传算法的平均性能强于不进行迁移的各个客户的平均性能。该文献所依据的遗传算法是传统的遗传算法。
本文作者在计算中也发现了上述现象,同时还发现,进行迁移的分布式遗传算法的最优解,解的发散程度较不进行迁移的遗传算法大为减低,具体表现就是最优解和均值相差不大。所以采用分布式遗传算法是有效的。
下面再计算两个常用的优化算例:
二十五杆最轻重量设计,结构拓扑见图5.3,各杆材料数据相同, , ,元件尺寸下限为 ,约束为位移和应力约束,位移约束为各个节点的 ﹑ ﹑ 向最大允许位移为 ,采用变量链接法将变量数减为8组,各组允许的应力值如下:
变量组 | 拉应力 | 压应力 |
1 | 40000 | -35092 |
2-5 | 40000 | -11590 |
6-9 | 40000 | -17305 |
10,11 | 40000 | -35092 |
12,13 | 40000 | -35092 |
14-17 | 40000 | -6759 |
18-21 | 40000 | -6759 |
22-25 | 40000 | -11082 |
表5.8
工况如下:
工况 | 载荷节点 | x | y | z |
1 | 1 | 1000 | 10000 | -5000 |
2 | 0 | 10000 | -5000 | |
3 | 500 | 0 | 0 | |
6 | 500 | 0 | 0 | |
2 | 1 | 0 | 20000 | -5000 |
2 | 0 | -20000 | -5000 |
表5.9
图5.3
各个客户的群体变量用10位二进制表示,下限为0.01 ,上限为10.0 ,客户的群体取为50,遗传代数为500,每隔50代进行一次个体基因数据的互换,
各个子群体的遗传参数相同,复制概率为0.2,变异概率为0.01。采用三个客户随机运行十次得到的结果如下(单位均为 ):
客户(1) | 客户(2) | 客户(3) | 客户最好解 |
571.245043 | 571.245043 | 571.245043 | 571.245043 |
553.787599 | 553.787599 | 553.787599 | 553.787599 |
557.366130 | 557.366130 | 557.366130 | 557.366130 |
553.335176 | 553.335176 | 553.335176 | 553.335176 |
549.329981 | 549.329981 | 549.329981 | 549.329981 |
554.391384 | 554.391384 | 554.079417 | 554.079417 |
550.694287 | 550.798439 | 551.319769 | 550.694287 |
567.190836 | 567.190836 | 567.190836 | 567.190836 |
559.226085 | 559.226085 | 559.226085 | 559.226085 |
553.134723 | 553.134723 | 553.134723 | 553.134723 |
均值556.97012 | 均值556.98054 | 均值557.00148 | 均值556.93893 |
最优549.329981 | 最优549.329981 | 最优549.329981 | 最优549.329981 |
表5.10
对于该问题采用规划法中的约束变尺度法可以求得结果为 ,杆面积如下分布:
杆元组 | 初始值 | 最优解 |
1 | 6.0 | 0.010000 |
2 | 6.0 | 1.874632 |
3 | 6.0 | 3.074175 |
4 | 6.0 | 0.010000 |
5 | 6.0 | 0.010000 |
6 | 6.0 | 0.697805 |
7 | 6.0 | 1.744224 |
8 | 6.0 | 2.606997 |
表5.11
可以看出采用分布式遗传算法求解的结果相当满意。而且各个客户的结果相差很小。
72杆结构最轻重量设计,结构拓扑图见图5.4, , ,元件尺寸下限为 。拉压应力极限分别为 。位移约束为所有非约束节点的 ﹑ ﹑ 方向的位移小于 ,变量进行了链接:
1 | 1-4 |
2 | 5-12 |
3 | 13-16 |
4 | 17-18 |
5 | 19-22 |
6 | 23-30 |
7 | 31-34 |
8 | 35-36 |
9 | 37-40 |
10 | 41-48 |
11 | 49-52 |
12 | 53-54 |
13 | 55-58 |
14 | 59-66 |
15 | 67-70 |
16 | 71-72 |
表5.11
工况如下:
工况 | 加载节点 | x | y | z |
1 | 1 | 5000 | 5000 | -5000 |
2 | 1 | 0 | 0 | -5000 |
2 | 0 | 0 | -5000 | |
3 | 0 | 0 | -5000 | |
4 | 0 | 0 | -5000 |
表5.12
图5.4
各个客户的群体变量用10位二进制表示,下限为0.1 ,上限为10.0 ,由于问题的变量较多,所以群体规模需要相应取得较大,本算例取为100,遗传代数为500,每隔50代进行一次个体基因数据的互换,各个子群体的遗传参数相同,复制概率为0.2,变异概率为0.01。采用三个客户随机运行十次得到的结果如下(单位均为 ):
客户(1) | 客户(2) | 客户(3) | 客户最好解 |
391.620056 | 392.930853 | 395.879890 | 391.620056 |
408.732546 | 407.156988 | 417.091071 | 407.156988 |
402.305167 | 393.633959 | 389.778723 | 389.778723 |
397.268130 | 399.885940 | 398.837360 | 397.268130 |
398.660375 | 397.240431 | 397.240431 | 397.240431 |
394.086546 | 395.851459 | 397.682618 | 394.086546 |
423.421803 | 413.607778 | 413.607778 | 413.607778 |
400.270988 | 392.477760 | 403.180176 | 392.477760 |
421.313826 | 421.778342 | 421.698643 | 421.313826 |
391.300180 | 393.477327 | 394.422355 | 391.300180 |
400.223504 | 403.183229 | 402.144539 | 400.223504 |
395.417922 | 395.417922 | 406.276166 | 395.417922 |
均值402.05175 | 均值400.5535 | 均值403.15331 | 均值399.29099 |
最优391.300180 | 最优392.930853 | 最优389.778723 | 最优389.778723 |
表5.13
对于该问题采用规划法中的约束变尺度法可以求得结果为 ,杆面积如下分布:
杆元组 | 初始值 | 最优解 |
1 | 6.0 | 0.156615 |
2 | 6.0 | 0.545346 |
3 | 6.0 | 0.413460 |
4 | 6.0 | 0.565005 |
5 | 6.0 | 0.513471 |
6 | 6.0 | 0.516821 |
7 | 6.0 | 0.100000 |
8 | 6.0 | 0.100000 |
9 | 6.0 | 1.268083 |
10 | 6.0 | 0.512752 |
11 | 6.0 | 0.100000 |
12 | 6.0 | 0.100000 |
13 | 6.0 | 1.892414 |
14 | 6.0 | 0.512741 |
15 | 6.0 | 0.100000 |
16 | 6.0 | 0.100000 |
表5.14
计算结果令人满意。
从以上的算例可以看出,采用作者提出的分布式遗传算法是有效的,计算的结果令人满意,作者认为采用基于二进制编码的分布式遗传算法是求解中小规模优化问题的一个很好的方法,如果问题的规模不大,可以考虑在客户遗传规划程序中采用本文提出的摄动策略。
§5.4 结论及进一步的工作
本章提出了分布式遗传算法在局域网微机环境下的一种实现,建立一种适用于分布式遗传算法的通讯协议—“DGAP”,个体之间进行迁徙采用的是“岛屿”模型,客户群体中选择进行迁徙的个体采用的是根据适应度进行“轮盘赌”的方式。多个算例表明算法计算性能令人满意。各个群体之间共同维持着一种“稳态”,同时各个子群体的规模可以相应降低。
由于时间的关系,同时也由于分布式遗传算法的内容较多,所以作者认为在分布式遗传算法上还需要做较多的工作。
工作重点之一是研究新的交换方式,比如可以考虑对子群体进行评估,即进行排名,在进行交换时将依据排名的不同而有所区别。比如采用第一名群体与第二名群体交换个体,第二名群体与第三名群体交换个体。这样做的好处是可以防止出现相差过大的群体之间交换个体(即可能出现最差群体与最优群体之间交换数据 ),从而导致分布式遗传算法最优性能的降低。另外可以考虑对不同的客户采用不同的遗传参数(复制概率﹑变异概率等),从而可以在一定程度上增加客户的多样性。
对于问题规模较大﹑模型分析本身就很费时间的优化问题,可以将群体分布到网络环境下进行计算,当然这和一般的分布式遗传算法本质上不同。在此考虑的实际上只是一个群体。可以认为是单个群体的分布式计算。
最后,作者认为,建立一个功能比较完整和自主版权的分布式计算编程环境是很有必要的。最好的方式是基于UDP的Socket编程,这样效率﹑跨平台等方面都有足够的保证,缺点就是编程的难度较大。 当然也可以采用成熟的分布式计算标准DCOM和CORBA。
另外由于教研室计算机数量所限,没有讨论大规模分布式遗传算法需要注意的问题。随着硬件条件的成熟,该方面的研究必然将成为一个重点,实际上美国现在的一些大学和研究机构已经将数千台采用高速局域网(一般为光纤网)互连的高性能计算工作站作为计算集群来求解工程问题。