停止代理走出网格(RL的网格世界示例)

时间:2014-12-19 14:25:56

标签: java agent gridworld

我的问题是当我的经纪人到达0,0,0,9等我试图阻止它去9,0或9,9等 在这个例子中像这样

   (0,0) N -1.0 (9,0)
   (9,0) N -1.0 (8,0)
   (8,0) W -1.0 (8,9)

我希望它能够在网格之间移动,而不是通过回到网格中来做空。例如,而不是goind形式(0,0)到(9,0)转到(0,1)0r(1,0)等。

我尝试了类似这段代码的简单方法,检查x和y值是否大于行数和列数的x和y值,或者x和y是否小于0

  public boolean Notvalid(int x, int y) {

    return (x > cr.NUM_ROWS || y > cr.NUM_COLUMNS || x < 0 || y < 0);

     }

并在设置x和y坐标时调用此方法

 public GridState(int xpos, int ypos) {

    if (!Notvalid(x, y)) {

        x = xpos;
        y = ypos;

    } else {
        x = cr.START_ROW;
        y = cr.START_COL;
    }
}

有人知道更简单的方法来处理这样的规则吗?

1 个答案:

答案 0 :(得分:0)

您的代码似乎有三个问题:

  • 假设行索引为09cr.NUM_ROWS10,则应使用x >= cr.NUM_ROWSx > cr.NUM_ROWS - 1代替{{} 1}}。 (列相同)
  • 您正在检查当前 x / y位置是否有效(x > cr.NUM_ROWSx),而不是代理将要去的位置({{ 1}},y)。
  • 通过设置xpos,您似乎正在做您不想做的事情,即将代理设置为yposx = cr.START_ROW

试试这个:

0