我想实现编写程序的遗传算法,试图解决特定问题。
'程序'只是一个由健身功能评估的功能列表,所以我可以知道什么是最好的'程序'。这个序列不适合我,不会影响健康评估。
我想弄清楚的是 BIG CATCH ,所调用的函数列表应该是可变的,就像变量cromossomes number 一样。 我有需要调用的函数,带有可变参数,以及调用COULD(可选)的函数,以及可变参数。
我已经找到了那些优秀的GA框架,但我对遗传编程真的很陌生,我不知道用于解决这个问题的最佳框架是什么:
所以,想象一下这个问题:
为了更好地处理,如果我能将我的INPUT描述为JSON,它将是这样的:
{
"FixedFunctions":[
{"Name":"ChooseModel", "Parameters":[{"Name":"Type", "MinValue":1, "MaxValue":5,"Step":1}]},
{"Name":"FillUp", "Parameters":[{"Name":"Litters", "MinValue":1, "MaxValue":100,"Step":2}]}
]
"OptionalFunctions":[
{"Name":"GoFront", "Parameters":[{"Name":"Steps", "MinValue":1, "MaxValue":50,"Step":5}]},
{"Name":"GoBack", "Parameters":[{"Name":"Steps", "MinValue":1, "MaxValue":50,"Step":2}]},
{"Name":"GoRight", "Parameters":[{"Name":"Steps", "MinValue":1, "MaxValue":25,"Step":2}]},
{"Name":"GoLeft", "Parameters":[{"Name":"Steps", "MinValue":1, "MaxValue":25,"Step":2}]},
{"Name":"HyperTeleport", "Parameters":[
{"Name":"PointX", "MinValue":1, "MaxValue":100,"Step":2},
{"Name":"PointY", "MinValue":1, "MaxValue":100,"Step":2}]}
]
}
所以cromossome可能很简单,因为它很复杂:
- [ChooseModel(1), FillUp(30), HyperTeleport(3,5), GoBack(50)]
- [ChooseModel(3), FillUp(60), HyperTeleport(20,50), GoRight(2)]
- [ChooseModel(4), FillUp(40), GoFront(10), GoRight(2), GoLeft(30), GoBack(80), HyperTeleport(20,30), GoRight(5)]
...
所以我在这里寻求帮助。解决问题的最佳方法是什么? 我发现的所有例子都谈到了固定大小的cromossomes,但在我的问题中我有不同数量的选项。使用Heuristiclab会很棒,因为我可以停下来继续,看看操作是否正在发生。
非常感谢你,如果你读到这里!!!
对不起,很长的帖子。 'O'
答案 0 :(得分:0)
这是一个关于javascript中机器学习实现的非常好的教程,它引导火箭绕过障碍物。这正是您尝试使用项目https://www.youtube.com/watch?v=bGz7mv2vD6g
实现的目标它详细解释了如何基于适应度建立火箭路径的演变。该算法将值添加到阵列中,这是火箭队为避免障碍而采取的步骤。
每一轮,每枚火箭的路径阵列都会根据上一轮最成功的火箭进行更新。随着时间的推移,路径会有所改善。