拍卖实施类似于餐饮哲学家

时间:2015-04-14 03:09:39

标签: netlogo dining-philosopher

我正在尝试在netlogo中实现拍卖概念 - 它类似于dining philosophers problem程序。

我的程序涉及与餐饮哲学家计划中的哲学家和分叉相对应的计算机和处理器。在哲学家计划中,用户需要吃2把叉子但是在计算机和处理器中,一台计算机需要一个处理器才能工作。

我的计划中定义的状态为IDLENEEDUSING,对应于哲学家中的THINKINGHUNGRYEATING程序

目前,我的程序已经到了所有计算机都将更改发送到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

1 个答案:

答案 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