탈세 모델링입니다. 내 모델에는 고정 거래자 (거북이 한 마리)와 고객 (다른 종)이 있습니다.거북이가 목표물을 지나치며 무한 운동 루프에 걸렸습니다.
상인은 주변에서 가장 저렴한 상인을 찾습니다.
내 모델의 트레이더가 10 명 미만인 경우이 문제가 발생하지 않았습니다. 그러나 20 번 이상으로 올라갈 때, 상인 중 한 명은 우연히 모든 고객이 1만큼 앞으로 움직이는 무한한 움직임 루프에 갇히게되는 일련의 좌표에있는 것처럼 보입니다. 그러나 목표를 초과하여 돌리면 주위 및 오버 슈트 등.
전진 동작을 줄여서 1 대신 0.001로 줄임으로써 문제를 줄일 수 있지만 문제는 결국 발생합니다.
이 문제의 빠른 해결 방법이 있습니까? 나는 ifelse가 범위 1 또는 무언가 내에서 거래자 좌표로 직접 점프하는 솔루션을 상상할 수 있지만 더 쉬운 방법이 있습니까?
: 나는 위의 제안,하지만 지금은 고객이 상인 여기없이 임의의 위치에서 그룹 콩가 라인에 박히 코드가 운동에 관한입니다 - 내가 가장 가까운 상인 주어진 거리쪽으로 이동 구현 시도하는
대신 한 상인을 찾아, 당신은 항상 가까이에 상인 하나의 확인
을 : 다른 문제의 코드에서
to find_food
ifelse (num-traders-close < 2)
[nearest_food]
[choose-cheapest]
end
to nearest_food
let nearest-food min-one-of (traders)[distance myself]
let cf-dist distance min-one-of traders [distance myself]
ifelse closest-trader > 1
[face nearest-food
fd 1]
[face nearest-food
fd cf-dist]
end
to choose-cheapest
let cheapest-food min-one-of traders [price]
let cf-dist distance min-one-of traders [distance myself]
ifelse closest-trader > 1
[face cheapest-food
fd 1]
[face cheapest-food
fd cf-dist ]
end
문제의 원인이되는 코드를 게시하십시오. –
일부 코드가 포함되도록 게시물을 편집했습니다. 문제가 각 상인이 같은 장소로 옮기려고 할 때 관련이 있을지 궁금해하십니까? 어쩌면 문제가 동시에 모두 움직이면 해결 될 수 있을까요? – Ullsokk
코드가 괜찮습니다. 어쩌면 고객이 상인에 도달하여 움직이지 않을 때를 알기 위해 일종의 충돌 감지가 필요할 수 있습니다. 컴퓨터의 정밀도가 제한되어 있기 때문에 고객과 상인이 정확히 같은 지점을 차지할 가능성은 거의 없습니다. 그래서 그것은 항상 작은 양으로 움직일 것입니다. 그러나 방향을 바꾸어야하므로 그 자리에서 흔들 리게됩니다. 무슨 일 이니? –