Я пытаюсь создать Netlogo для моделирования игры 2048 года. Я реализовал три эвристические функции, определяемые параметрами веса, и хочу использовать пространство поведения для запуска моделирования и проверить, какая стратегия является лучшей для победы в этой игре.NetLogo: 2048 bot optimization
Процедура поиск использует примитивы export/import-world для поиска возможных ходов и выбирает ход, для которого эвристическая функция имеет наибольшее значение.
Проблема в том, что эта процедура выполняется очень медленно (из-за функции import-world, которая называется четыре раза за каждый ход). Есть ли у вас какие-либо идеи, как реализовать это без экспорта и импорта мира так часто?
Это проект для моего введения в класс AI. Это происходит через пару дней, и я не могу найти никаких решений.
Соответствующая часть кода приведена ниже. Процедуры move- (direction) все исправно и изменено подвижное? истинно, если квадрат может двигаться в указанном направлении и false в противном случае. Он проверяется в процедуре подвижный чек по телефону переезд- (направление).
Я был бы очень признателен за вашу помощь. :)
to search
let x 0
let direction "down"
export-world "state.csv"
move-up
ifelse not any? squares with [moveable?]
[set h-value -5000]
[set x h-value
set direction "up"
import-world "state.csv"]
export-world "state.csv"
move-down
ifelse not any? squares with [moveable?]
[set h-value -5000]
[if h-value > x
[set x h-value
set direction "down"]
import-world "state.csv"]
export-world "state.csv"
move-left
ifelse not any? squares with [moveable?]
[set h-value -5000]
[if h-value > x
[set x h-value
set direction "left"]
import-world "state.csv"]
export-world "state.csv"
move-right
ifelse not any? squares with [moveable?]
[set h-value -5000]
[if h-value > x
[set x h-value
set direction "right"]
import-world "state.csv"]
ifelse direction = "up"
[move-up
print "up"]
[ifelse direction = "down"
[move-down
print "down"]
[ifelse direction = "right"
[move-right
print "right"]
[move-left
print "left"]]]
if not any? squares with [moveable?]
[
ask squares [set heading heading + 90]
moveable-check
if not any? squares with [moveable?]
[ask squares [set heading heading + 90]
moveable-check
if not any? squares with [moveable?]
[ask squares [set heading heading + 90]
moveable-check
if not any? squares with [moveable?]
[stop]]]
]
end