Отладка кода для n-й команды в NetLogo - PullRequest
0 голосов
/ 25 апреля 2019

Я создал фирмы (черепахи) в отрасли (мире), которые либо производят дома (собственные фирмы: reshored? false), либо офшорили свое производство (собственные фирмы: offshored? true).Кроме того, я дал им maximum-level-of-automation и их текущие level-of-automation.

У меня есть интерфейс на моем интерфейсе, который определяет долю уже автоматизированных производственных задач, которая должна быть меньше или равна их maximum-level-of-automation:

breed [ firms firm ]

firms-own [
  offshored?   ;; true or false
  level-of-automation   ;; tbd
  max-level-of-automation   ;; randomly defined between 0 and 1
]

global [ 
  share-of-automated-firms   ;; in % in a slider on interface 
]

to go
  ask firms [ 
    set max-level-of-automation 0 + random-float 1 
    ifelse ( offshored? = false ) [
      ask n-of ( count firms * ( share-of-automated-firms / 100 ) ) firms [   
        set level-of-automation random-between ( 0.01 ) max-level-of-automation ] ] [  
      set level-of-automation 0 ] ]
end

to-report random-between [ min-num max-num ]
   report random-float (max-num - min-num) + min-num
end

Я не получаю сообщение об ошибке, но черепахи также не сообщают об этом так, как я этого хочу.Я хочу, чтобы только конкретный share-of-automated-firms изменил их level-of-automation на число от нуля до max-level-of-automation.Остальные должны сообщить ноль.Я не могу найти ошибку здесь.Предложения кого-нибудь?

1 Ответ

0 голосов
/ 26 апреля 2019

Ваш код здесь может быть проблемой:

ask firms [ 
    set max-level-of-automation 0 + random-float 1 
    ifelse ( offshored? = false ) [
      ask n-of ( count firms * ( share-of-automated-firms / 100 ) ) firms [   
        set level-of-automation random-between ( 0.01 ) max-level-of-automation ] ] [  
      set level-of-automation 0 ] ]

Вы вложили ask n-of ... firms в командный блок ask firms. В переводе это говорит: «Все фирмы, я хочу, чтобы вы установили максимальную автоматизацию на что-то. Затем, если вы не находитесь в оффшоре, я хочу, чтобы вы попросили какое-то количество фирм сделать что-то или . собственный уровень автоматизации до нуля. " Таким образом, каждая фирма собирается запустить этот код и, возможно, попросить некоторое количество существующих фирм изменить свой уровень автоматизации.

...