2015-07-19 18 views
0

Я пытаюсь разработать способ или алгоритм, чтобы мои агенты путешествовали по дороге, избегая при этом перемещения по «зданиям» с целью достижения района для еды и возвращения домой. Я закодировал здания и дороги, однако движение по дорогам оказалось трудным. Программа показывает город в сетке 8 x 8, дороги - это линии, здания - квадраты сетки. Я закодировал здания как барьеры. Я требую, чтобы агенты двигались по оптимальному пути к месту назначения. Это мой код:Путь к агентам в netlogo

to get-aid 
    ask humans 
    [ 
    ifelse (energy >= 500) 
    [ 
     ifelse (patch-here = origin) 
     [ 
     set energy energy - 10 
     stop 
     ] 
     [ 
     face origin 
     avoid-barrier 
     forward 1 
     set energy energy - 20 
     ] 
    ] 
    [ 
     face min-one-of centres with [aid > 0] 
     [distance myself] 
     avoid-barrier 
     forward 1 
     set energy energy - 20 
    ] 
    ] 
end 

to avoid-barrier 
    if (nobody != patch-ahead 1) and ([barrier?] of patch-ahead 1) 
    [ 
     right 90 + random 180 
     right random 40 
    ] 
end 
+1

Что вы хотите сказать? –

+1

andrew, расширяющийся на комментарий Сета: «Движение по дорогам оказывается трудным»: каким образом? Разве агенты не двигаются вообще? Они застревают в определенных точках? Они двигаются с дороги? Пройдя через здания? Происходит ли ошибка в конкретной строке? Постарайтесь предоставить достаточно информации, чтобы другие могли выяснить, с чем вам нужна помощь. (Имейте в виду, что у нас нет остальной части программы.) Это также помогло бы, если бы вы показали нам код, который не содержит ничего, что явно не имеет значения (энергия?), Что может даже помочь вам решить проблему самостоятельно. – Mars

+0

Я установил белые пятна, чтобы быть дорогими, которые могут двигаться. Коричневые пятна - это здания, которые они не могут пройти, и действуют как барьеры. Моя проблема заключается в том, что я хочу, чтобы агенты достигли места назначения, используя оптимальный маршрут, следуя по дорогам, но не проходя через здания. Есть ли более простой способ кодировать движение по дорогам, избегая барьеров? Поскольку мой код видит, что агенты попадают в барьер, поверните направление в другом направлении, чтобы найти цель. – andrew

ответ

0

Я не уверен, что это будет работать, и я не имею код работал, но я предлагаю это так кто-то более знающий, чем я могу заставить его работать. Вы могли бы подумать о создании черепах (скрытых) на различных перекрестках со ссылками (также скрытыми) для разрешенных дорог. Затем вы можете использовать расширение nw (network), чтобы сделать что-то вроде path-to, чтобы найти кратчайшее расстояние вдоль дорог.

 Смежные вопросы

  • Нет связанных вопросов^_^