我的问题是我希望我的代理人在目标B之前找到目标A.就像在这个例子中:为了完成一项特定的任务,代理人必须进入目标a然后转到目标B.代理人从起点直接进入B,没有成功完成游戏,需要在访问B之前访问A.
我将此示例应用于强化学习:
这是在Simulation.java类
中此时我的代理可以从其起始点转到目标状态:如果调用了isterminal方法并且尚未达到maxStepsPerTrial,则下面是停止代理的当前代码,然后它将打印出一系列步骤它花了
for (stepnum = 1; !currState.isTerminal()
&& (stepnum < maxStepsPerTrial); stepnum++) {
step(ep % printDivisor == 0);
}
这是在GirdState.java类中:
这是isTermial()所以cr是另一个名为Coloumns&amp; Row的类,它保存了目标行和目标颜色的值。
@Override
public boolean isTerminal() {
// TODO Auto-generated method stub
return (y == cr.GOAL_ROW && x == cr.GOAL_COL);
}
我想要它做的是在它可以调用isterminal()之前,它首先必须通过一个子目标E.g
public boolean isSubA() {
return (y == 3 && x == 3);
}
有没有人知道如何实现这一点。