在TCL中转换此算法

时间:2016-04-17 08:34:03

标签: tcl

我需要帮助将这个算法转换成tcl用于我的工作,我在tcl语言方面不太好。

Inputs: STA−1, STA−2, STA−3, ..., STA−n
//requests from various stations for channel access
Shared Variables:
  for every i, 1 ≤ i ≤ n
    counter[i] ∈ { / 0, 1, 2,..., N}, initially 0, updated by stations
  Sequence Number, K ∈ { / 0, 1, 2,..., N}, initially 0, will be set to a positive integer
Procedure:
  //Initialization
  Set sequence number K = m; //based on the action selected
  for (i = 1 to n)
    counter[i] = 0;
  for (i = 1 to n)
  {
    while (channel access[i])
      if (counter[i]! = K)
      {
        if (channel == idle)
        {
          if (counter[i]<min(counter[i+1], counter[i+2], ..., counter[i + n]))
            access channel;
          else
            defer access;
        }
        counter[i]+ +;
      }
      else 
        defer access;
  }

这是为了让CPS设备在两者之间使用WSN访问互联网。基本网络已经完成但需要帮助才能将此算法添加到其中。 有人可以帮我在tcl编写算法代码吗?

2 个答案:

答案 0 :(得分:0)

你的问题不够明确。 对于语法,我建议参考TCL在线帮助。

一些快速摘录:

/customer/login

答案 1 :(得分:0)

假设counter转换为(关联)数组,并且通道标识符存储在channel数组中,

将转换为此方法的核心:

variable K 0

for {set i 1} {$i <= $n} {incr i} {
    set counter($i) 0
}

for {set i 1} {$i <= $n} {incr i} {
    while {[channelAccess $channel($i)]} {
        if {$counter($i) != $K} {
            if {[channelIdle $channel($i)]} {
                set minimum [getMinimum [expr {$i + 1}] [expr {$i + $n}]]
                if {$counter($i) < $minimum} {
                    accessChannel $channel($i)
                } else {
                    deferAccess $channel($i)
                }
            }
            incr counter($i)
        } else {
            deferAccess $channel($i)
        }
    }
}

您还需要此程序:

proc getMinimum {from to} {
    upvar 1 counter counter
    set minVal $counter($from)
    for {set i $from} {$i <= $to} {incr i} {
        set minVal [expr {min($minVal, $counter($i))}]
    }
    return $minVal
}

您需要定义channelAccesschannelIdleaccessChanneldeferAccess;它们是你的算法没有指定的东西。还没有什么可以说明各种变量实际更新的内容。但那是算法已转换。

请注意使用for的模式;对于这类事情,这些都是惯用的Tcl。还要注意支撑定位;如果你使用那种风格,你的生活在Tcl中最容易。