Netlogo: изменить цвет черепахи из набора списка с условием

У меня есть этот набор кодов. Агент является «потребителем», где он имеет переменную «тип значения». Я пытаюсь изменить белую черепаху на один из цветов в списке «тип значения». Но я продолжаю получать сообщение об ошибке «ожидается константа».

to develop-needs
  if ticks mod 5 = 0 [
    ask consumers [set type-of-value  (list blue red green)] 
    let a count consumers with [color = white]
    if any? consumers with [color = white]
      [ set color one-of type-of-value ]
        ask turtles with [ color = one-of type-of-value ]
      ]]
end

Любая помощь будет оценена по достоинству.

Спасибо


person dya    schedule 14.12.2015    source источник
comment
Отступ здесь сбивает с толку — ask consumers находится внутри if ticks или нет? let a внутри ask consumers или нет? Было бы намного легче читать и оставлять отзывы о вашем коде, если бы в нем был правильный отступ. (NetLogo сделает это за вас — выберите код и нажмите клавишу Tab.)   -  person Seth Tisue    schedule 14.12.2015
comment
Отредактированный отступ. И да, потребители внутри, если тикает.   -  person dya    schedule 15.12.2015


Ответы (2)


Этот код, наконец, работает. Благодаря JenB я заметил свою ошибку.

to develop-needs
  if ticks mod 5 = 0 [
    ask consumers [set type-of-value  (list blue red green)] 
    let a count consumers with [color = white]
    if any? consumers with [color = white]
      [ ask n-of (random a ) consumers with [color = white]
        [set color one-of type-of-value
         set value? true]
         ]]
end
person dya    schedule 15.12.2015

Вы не сказали, сколько выбрать. То есть ask n-of a должен сказать (например) ask n-of 5 a, если вы хотите выбрать 5 потребителей из набора агентов с именем a.

Кстати, у вас тоже есть логическая ошибка в коде:

[ set color one-of type-of-value ]
  ask turtles with [ color = one-of type-of-value ]

Если тип значения представляет собой список из 3 элементов (например, [синий, зеленый, красный], как в вашем коде), то set color one-of в первой строке выберет один из этих цветов, а во второй строке one-of ... будет выбран новый случайный выбор. Я не уверен, чего вы пытаетесь достичь, поэтому я не могу предоставить код, но вы, вероятно, захотите выбрать цвет и назначить его переменной, а затем провести сравнение с этой переменной вместо дальнейшего выбора.

person JenB    schedule 14.12.2015
comment
Да, ты прав. Я пытаюсь изменить случайное число белых черепах (если есть) на один из цветов в списке и назначить его переменной. Я отредактировал код. Но все равно вернулся с сообщением об ошибке - person dya; 15.12.2015
comment
Я повторно редактирую код с вашими подсказками. Оно работает. Спасибо. - person dya; 15.12.2015