我一直想要实施一种遗传算法来设计跳伞机器人问题的策略。
基本上两个机器人落在无限一维世界的随机位置上,划分为离散的方块。每个机器人都会降落伞降落。
目标是编写一种算法,如果两个机器人都遵循其保证使其满足。
可能的行动。 向左移动,向右移动,等待转弯。 可能的状态:站在降落伞上,而不是站在降落伞上。
根据我对编码策略的理解,我可以做类似的事情。
0 move left
1 move right
3 wait
对于州,第一个指数不是降落伞,第二个指标是降落伞,所以
03 - move left if you are not on a parachute and wait if you are.
该问题的实际解决方案包括以下策略:向左移动并在循环中等待,除非您看到降落伞然后停止等待(赶上其他机器人)如何将这样的策略编码为染色体?感谢。
答案 0 :(得分:0)
如果您想使用遗传算法来解决问题,我相信您最好的方法是使用2位数的列表作为染色体。 每个数字代表一个州采取的行动。所以,如果我们说:
0表示向左移动
1表示向右移动
3表示等待
然后01意味着
if(state == noParachute){
moveLeft();
}else{
moveright();
}
你可以让染色体的长度随着时间的推移而增加,以获得更复杂的解决方案。
另一种方法是使用神经网络并使用NEAT进行训练。