Netlo go: перемещайте черепах в разные наборы агентов - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь смоделировать завод по производству автомобилей и пытаюсь вести отдельные списки черепах, которые работают, а кто нет.

У меня есть собственная переменная черепах: is-on-job?

Я хочу, чтобы набор черепах агента не был на рабочих местах not-working-turtles

Я хочу, чтобы набор черепах агента был на рабочих местах working-turtles

Всякий раз, когда черепаха на работе, есть ли способ удалить указанную c черепаху из not-working-turtles agentset и добавить ее в working-turtles agentset?

Также в другой топи c, есть ли способ сортировки черепах по расстоянию до определенного c участка, а затем, если ближайшая черепаха находится на работе, go для второй черепахи и т. д.

1 Ответ

1 голос
/ 01 мая 2020

Вы можете создать свои два набора агентов следующим образом:

let not-working-turtles turtles with [not is-on-job?]
let working-turtles turtles with [is-on-job?]

Чтобы переместить черепаху из одной в другую, вам понадобится код в виде:

to make-me-work
  let free one-of not-working-turtles
  ask free
  [ set is-on-job? true
    set not-working-turtles other not-working-turtles
  ]
  set working-turtles (turtle-set working-turtles free)
end

Здесь я использовал очень удобный other примитив для удаления черепахи, делающей запрос. Вы, скорее всего, захотите сделать это как процедуру, которая принимает аргументы и передает черепаху процедуре, а не случайным образом выбирает одну из них в процедуре, но код будет аналогичным.

По вашему вопросу о выборе ближе всего, вам не нужно сортировать. Вместо этого посмотрите на min-one-of в словаре NetLo go. Если вы не можете решить эту проблему, задайте новый вопрос (StackOverflow должен содержать только один вопрос на вопрос) с соответствующим кодом.

...