0
내 에이전트가 0,0, 0,9 등이되면 내 문제는 9,0이나 9,9 등으로 이동하는 것을 막으려 고합니다. 이 예그리드를 걷는 에이전트 중지 (RL의 그리드 월드 예제)
(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 및 x 및 y 좌표를 설정 한 경우, 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;
}
}
누구나 이런 규칙을 처리하는 더 쉬운 방법을 알고 있습니까? 세 가지 코드에 문제가있는 것처럼
는'cr.NUM_ROWS' 9 또는 10인가? 열 인덱스가 0에서 9까지이므로 'cr.NUM_ROWS'는 10이어야하지만'x> = cr.NUM_ROWS' 또는 'x> cr.NUM_ROWS - 1'을 사용해야합니다. –
또한 에이전트가 갈 위치 ('xpos','ypos')가 아닌 _current_x/y 위치가 유효한지 ('x'와'y') 여부를 확인하고 있습니다. 또한'x = cr.START_ROW'을 설정함으로써, 당신이 원하지 않는 일, 즉 '10'으로 갈 때 에이전트를 '0'으로 설정하지 않습니까? 그러나이 모든 것은 코드를 더 이상 보지 않고 추측하는 것입니다. –
안녕하세요 @ tobias_k 내가 잘못된 변수를 전달했다는 것을 지적 해 주셔서 감사합니다. 내가하고 싶은 것과 정반대로 행동했습니다. 나는 그것을 알아 채지 못했다. 이제 의도 한대로 작동합니다. 고맙습니다, – DugD