我正在尝试在 netlogo 中实现一个拍卖概念——它类似于哲学家就餐问题程序。
我的程序处理与哲学家就餐程序中的哲学家和叉子相对应的计算机和处理器。在哲学家程序中,用户需要 2 个叉子才能吃饭,但在计算机和处理器中,一台计算机需要一个处理器才能工作。
我的程序中定义的状态是IDLE
, NEED
, ,USING
对应于哲学家程序中的 , 。THINKING
HUNGRY
EATING
目前,我的程序到了所有计算机状态都更改为NEED
. 我在为计算机获取服务器时遇到问题。
代码片段是 -
// ... lines of code for declaration etc
.
.
.
to update
if state = "IDLE" [
if random-float 1.0 < hungry-chance [
set state "NEED"
]
stop
]
if state = "USING" [
set total-used (total-used + 1)
if random-float 1.0 < full-chance
[ release-servers ]
set state "IDLE"
stop
]
if state = "NEED"
[ acquire-servers ]
if we've got both forks, eat.
if got? servers
[ set state "USING" ]
stop
end
//lines of code in between
.
.
to acquire-servers ;; philosopher procedure
ask servers [
if [owner] of servers = nobody[
set owner myself
move-to owner
set heading [heading] of owner
]
]
end
// lines of code at end