我正在编写一个 C# 应用程序,它将使用粒子群算法解决单字母替换密码。
基本上我了解这个过程,并找到了更新向量等所需的所有算法。我无法解决的是如何计算 26 字符解决方案在问题空间中的位置/坐标,以便我可以在此处找到的算法中使用它:http: //www.codeproject.com/Articles/42258/Particle-swarm -优化功能优化
该位置是否只是与字母表中字符位置相关的整数数组?
任何帮助将不胜感激。
我正在编写一个 C# 应用程序,它将使用粒子群算法解决单字母替换密码。
基本上我了解这个过程,并找到了更新向量等所需的所有算法。我无法解决的是如何计算 26 字符解决方案在问题空间中的位置/坐标,以便我可以在此处找到的算法中使用它:http: //www.codeproject.com/Articles/42258/Particle-swarm -优化功能优化
该位置是否只是与字母表中字符位置相关的整数数组?
任何帮助将不胜感激。
PSO 基本上是在连续空间中工作的。当然,离散问题也有版本,看来这个问题是离散的。
您已经定义了一个空间。使其与边界 (0, 26) 连续。现在可以使用粒子位置作为统计分布的平均值,或者只是获得该值的下限。如果你有一些记忆会很棒,因为会有很多重复的调用。
接下来是约束。没有任何字母可以替代相同的字母。您可以通过多种方式解决它,最简单的方法是修复功能:如果您的算法遇到一个已经设置的值(因为多个值具有相同的下限),请留下它,稍后在您找出哪些字母时返回仍然可用。
顺便说一句,您还可以使用 PSO 来训练一个使用语言中字母出现的统计信息来解决问题的 ANN。
希望有帮助。干杯!