我正在尝试在netlogo中实现拍卖概念 - 它类似于dining philosophers problem程序。
我的程序涉及与餐饮哲学家计划中的哲学家和分叉相对应的计算机和处理器。在哲学家计划中,用户需要吃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
答案 0 :(得分:0)
首先,您需要将用于测试状态的https://api.com/api/locations/34934/1/1
[HttpGet, Route("locations/{id:int:min(1)}/{start:long}/{end:long}")]
public async Task<IHttpActionResult> GetLocations(int id, long start, long end)
{
return Ok();
}
更改为if
并删除ifelse
命令。这样,计算机将找到其正确的状态并执行相关程序,然后不查看其他状态。
其次,acquire-servers过程当前将所有服务器分配给需要一台服务器的第一台计算机。您可能想要一个看起来更像的程序:
stop