Продолжение модели, которую я описал ранее, это для моей диссертации и основано на литературе по доверительным играм.Относительно новичок в Netlogo, и я уверен, что мне здесь не хватает чего-то существенного.
В моем мире есть два вида агентов, секс-работников и офицеров.Каждый из них обладает определенными свойствами:
sexworkers-own
[ assault? ;; is assaulted?
trust? ;; trusts/avoids police to report assault?
protection? ;; was protected/arrested by police after report?
prob-report ] ;; overall probability to report based on the
three factors before
officers-own
[ arrest? ] ;; arrests or protects assault victims?
В начале симуляции секс-работники случайным образом распределяются среди жертв нападения [нападение?= верно] или нет с вероятностью 0,1% (подвергается преследованию).Офицеры случайным образом распределяются как арестующие секс-работников [арест?= true] с вероятностью 90% ареста.
Во время симуляции секс-работники, подвергшиеся нападению, сталкиваются с возможностью подачи отчета.Они либо решают сотрудничать, либо избегают этого с вероятностью 50%.Если они решают сотрудничать, их атрибут [доверие?] Является истинным, если они избегают, это ложно.
Как только секс-работник решит сотрудничать, полицейские следят за отчетом.В зависимости от [ареста?] Они либо арестовывают, либо обеспечивают защиту.Это приводит к атрибуту секс-работника [защита?].
Каждый из этих вариантов приводит к разнице общей вероятности сообщения (вероятного отчета), которая будет важна позже.
Моя проблема: Я хочу, чтобы секс-работники, которые подверглись нападению, вышли из цикла и перестали выполнять решение сотрудничать или избегать, когда они сделали выбородин раз.Я не могу понять, как изменить свой код, чтобы исключить секс-работников, которые либо уклонялись, либо отказывались от общей процедуры подачи заявок на нападавших секс-работников.
Процесс подачи отчетов, сотрудничества / уклонения, а также защиты сотрудников/ арест работает хорошо.Мне просто нужен способ сделать так, чтобы секс-работники, подвергшиеся нападению, выбрали вариант исключения, поэтому только недавно подвергшиеся нападению секс-работники сталкиваются с выбором.
Большое вам спасибо!
Вот мой код:
to go
;; asks sex workers to act depending on whether they have been assaulted
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;PROBLEM: THIS SHOULD NOT BE LOOPED;;;;;;;;;;;;;;;;;;
;IF ASSAULT? THE ACTION SHOULD BE CARRIED OUT ONLY ONCE;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ask sexworkers with [ not assault? ] [victimize ]
ask sexworkers with [ assault? ] [ file ]
end
; determines probability of sex workers being assaulted (1%)
; sets the probability value to file reports to 0.5
; if sex workers haven't previously been assaulted
to victimize
ifelse random-float 100 <= 0.1
[ set assault? true ]
[ set assault? false ]
if assault? = false [ set prob-report 0.5 ]
end
; determines probability of sex workers reporting violence (50%)
to file
ifelse random-float 1 <= 0.5
[ set trust? true ]
[ set trust? false ]
if assault? = true and trust? = false
[ avoid ]
if assault? = true and trust? = true
[ cooperate ]
end
; if assaulted sex workers report, the follow-up procedure is started
to cooperate
follow-up
end
; this sets the probability value to file reports to 0
; if sex workers have been assaulted, but didn't report
to avoid
if assault? = true and trust? = false
[ set prob-report 0 ]
end
; asks officers who arrest to arrest and the others to protect
to follow-up
ask officers with [ arrest? = false] [ protect ]
ask officers with [ arrest? = true ] [ arrest ]
end
; if officers protect, reporting sex workers' protection? attribute is true
; sets the probability value to file reports to 1
; if sex workers have been assaulted, reported, and protected
; and officers' arrest? attribute is false
to protect
ask sexworkers-here with [ trust? = true ] [ set protection? true ]
ask sexworkers [
if assault? = true and trust? = true and protection? = true
[ set prob-report 1 ]
]
end
; if officers arrest, reporting sex workers' protection? attribute is false
; sets the probability value to file reports to -1
; if sex workers have been assaulted, reported, and arrested
; and officers' arrest? attribute is true
to arrest
ask sexworkers-here with [ trust? = true ] [ set protection? false ]
ask sexworkers [
if assault? = true and trust? = true and protection? = false
[ set prob-report -1 ]
]
end