darvin / genetic-algorithm
受查尔斯·达尔文理论启发的PHP库
v1.0.3
2020-03-21 02:08 UTC
This package is auto-updated.
Last update: 2024-09-07 23:14:12 UTC
README
遗传算法
此包允许您在项目中使用 遗传算法。它将通过依赖生物启发操作(如变异、交叉和选择)来帮助解决优化和搜索问题,从而找到高质量的解决方案。
最简单的算法将每个染色体表示为一个位串。尽管可以使用任何PHP数据类型(浮点数、字符串、布尔值、数组、对象)。
安装
您可以通过composer安装此包
composer require darvin/genetic-algorithm
用法
设置
算法需要设置才能运行,所以让我们从默认设置开始
$config = new \Darvin\GeneticAlgorithm\Settings\DefaultSettings(); $algorithm = new Algorithm($config);
个体生成
一个个体由一组称为基因的参数(变量)组成。假设我们将基因编码在染色体中。
$algorithm->setPart("individual:gene", function (Gene $gene) { $characters = str_split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-+,. '); $gene->value($characters[rand(0, count($characters)-1)]); });
适应度函数
适应度函数决定了个体的适应度(个体与其他个体竞争的能力)。它为每个个体给出一个适应度分数。个体被选为繁殖的概率基于其适应度分数。
$algorithm->setPart("fitness", function (Individual $individual) use ($solution) { $fitness = 0; for ($i=0; $i < $individual->genomeSize() && $i < count($solution); $i++) { $char_diff=abs(ord($individual->getGene($i)->value) - ord($solution[$i])); $fitness+=$char_diff; } return $fitness; });
事件
您可以设置事件来监听和控制算法。
算法开始
$algorithm->setPart("event:listen:algorithmStart", function (Algorithm $algorithm) { echo "Algorithm start.\n"; });
新解决方案
$algorithm->setPart("event:listen:newSolutionFound", function (Algorithm $algorithm) { echo "New solution found!"; });
贡献
请参阅CONTRIBUTING以获取更多信息。
安全
如果您发现任何安全问题,请通过电子邮件edeminteractive@gmail.com联系,而不是使用问题跟踪器。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。