勾引 av Python舆图四色旨趣的遗传算法着色已毕
率先勾引 av,咱们来明确一下本文所需已毕的需求。
现存一个由多个小图斑构成的矢量图层,如下图所示;咱们需要找到一种由4种情绪构成的配色决策,对该矢量图层各图斑进行着色,使得各相邻小图斑间的情绪不一致,如下下图所示。
在这里,咱们用到了四色定理(Four Color Theorem),又称四色舆图定理(Four Color Map Theorem):如若在平面上存在一些不息的有限区域,则至多仅用四种情绪来给这些不同的区域染色,就不错使得每两个不息区域染的情绪王人不通常。
2 代码已毕明确了需求,咱们就不错运行具体的代码编写。当今国内各大博客中,有好多对于Python已毕舆图四色旨趣着色的代码,其中大精深是基于回溯法来已毕的;而在一个英文博客网页中,看到了基于遗传算法的舆图四色旨趣着色已毕。那么就以该代码为例,进行操作。在这里,由于我本东说念主对于遗传算法的理会还并不深入,因此在代码先容方面或多或少还存在着一定不及,但愿人人多多品评指正。
2.1 基本念念路遗传算法是一种用于照应最好化问题的搜索算法,属于进化算法界限。伙同前述需求,率先不错将每一个区域的情绪行动一个基因,个体基因型则为沿路地区(前述矢量图层共有78个小图斑,即78个区域)情绪基因的汇总;通过构建Rule类,将空间意念念上的“相邻”调度为不错被遗传算法识别(即不错对个体基因转换加以敛迹)的信息;随后,伙同子代的更迭,找到闲散条件的基因组;最终将取得的基因组再调度为空间意念念上的情绪信息,并输出限度。
在线数独具体分智力念念路如下:
界说“顺序”。“顺序”用以将区域之间的空间集会情况调度为遗传算法不错识别的信息;被“顺序”集会的两个区域在空间中是相邻的。界说区域空间集会情况检查所需函数。这些函数用于检查两两区域之间的集会性是否闲散逻辑;举例,若在“顺序”中露出区域A与区域B集会,那么区域B也必须在“顺序”中露出与区域A集会。界说个体基因型。其中,各个体具有78个基因,每一个基因暗意一个区域的情绪。个体更迭与最优基因聘用。通过个体的不停更迭,聘用出闲散“顺序”条件的个体基因型。基因型评释。将取得的个体基因型进行评释,尽头于第一步的反经由,行将基因信息调度为空间集会情况。限度检查。检查所取得的情绪与最优个体基因组中的各个基因是否一致。 2.2 代码莳植
接下来,将完满代码进行先容。其中,shapefile_path即为矢量图层的保存旅途;"POLY_ID_OG"则为矢量图层的属性表中的一个字段,其代表每一个小图斑的编号。
2.3 限度展示施行上述代码,即可取得限度。在这里值得一提的是:这个代码不知说念是其自己原因,还是我电脑的问题,施行起来尽头慢——单次运行技艺可能在5 ~ 6个小时足下,委果太慢了;人人如若感兴致,不错尝试着能不可将代码的效果进步一下。
代码施行完结后取得的限度是翰墨神色的,具体如下图所示。
不错看到,通过203次迭代,找到了闲散条件的舆图配色决策,用时06小时06分钟;代码施行限度除露出出具体个体的举座基因型除外,还将分袂露出78个小区域(小图斑)各自的具体情绪称呼(我上头那幅图莫得截全,内容上是78个小区域的情绪王人会输出的)。
虽然,人人也不错发现,这种翰墨抒发的代码施行限度昭着不如平直来一幅如下所示的限度图直不雅。然而,由于代码单次施行技艺委果是太真切,我也没再腾出技艺(其实是偷懒)对限度的可视化加以修改。人人如若感兴致的话,不错尝试对代码最终的限度呈现部分加以修改——举例,不错通过Matplotlib库的拓展——Basemap库将78个小区域的配色决策进行可视化。
精良到此这篇对于Python舆图四色旨趣的遗传算法着色已毕的著述就先容到这了勾引 av,更多关联Python舆图四色旨趣内容请搜索剧本之家昔时的著述或连续浏览底下的关联著述但愿人人以后多多撑抓剧本之家!
您可能感兴致的著述: python遗传算法之geatpy的深入理会 python遗传算法之单/多方针不息问题 python已毕使用遗传算法进行图片拟合 python已毕高效的遗传算法 Python遗传算法Geatpy用具箱使用先容