Tcl 无效的命令名";“试剂/浸出剂”;

Tcl 无效的命令名";“试剂/浸出剂”;,tcl,ns2,Tcl,Ns2,我尝试为LEACH协议实现一个简单的场景,但出现以下错误: Creating Sensors ... invalid command name "Agent/LeachAgent" while executing "Agent/LeachAgent create _o2340 " invoked from within "catch "$className create $o $args" msg" invoked fr

我尝试为LEACH协议实现一个简单的场景,但出现以下错误:

 Creating Sensors ... 
    invalid command name "Agent/LeachAgent"
        while executing
    "Agent/LeachAgent create _o2340 "
        invoked from within
    "catch "$className create $o $args" msg"
        invoked from within
    "if [catch "$className create $o $args" msg] {
    if [string match "__FAILED_SHADOW_OBJECT_" $msg] {
    delete $o
    return ""
    }
    global errorInfo
    error "class $..."
        (procedure "new" line 3)
        invoked from within
    "new Agent/LeachAgent"
        ("for" body line 3)
        invoked from within
    "for {set i 1} {$i <= $val(nsn)} {incr i} {

        set agent($i) [new Agent/LeachAgent]
        $ns attach-agent $node_($i) $agent($i)
        $agent($i) set packetSize_..."
        (file "newleach3.tcl" line 187)
正在创建传感器。。。
无效的命令名“Agent/LeachAgent”
执行时
“代理/沥滤剂创建\u o2340”
从内部调用
捕获“$className创建$o$args”消息
从内部调用
“if[catch”$className create$o$args”msg]{
如果[string match”\uuuu失败\u SHADOW\u OBJECT\uuuu“$msg]{
删除$o
返回“”
}
全局错误信息
错误“类$…”
(程序“新建”第3行)
从内部调用
“新试剂/浸出剂”
(“适用于”车身第3行)
从内部调用

“对于{set i 1}{$i更改脚本以使用
Agent/RCAgent/LeachAgent
作为类名:

set agent($i) [new Agent/RCAgent/LeachAgent]

据我所见,在
ns-allinone-2.35
中没有
Agent/LeachAgent
,我没有成功地在我的场景中编写正确的附加Leach协议的代码,但我发现mannasim有一个mannasim脚本生成器(MSG)。它是
TCL
模拟脚本轻松创建的前端。

该类是如何创建的?@glenn jackman,我不明白你的意思。
new
create
提示OTcl类将被实例化。命令名
Agent/LeachAgent
也是类名。因此,glenn的想法是正确的ion.结果是,
Agent/LeachAgent
不存在。请看我的答案。是的,你是对的。LEACH协议不受ns-allinone-2.35支持,但我添加了它,我的方案工作正常。我最近遇到了这个错误。我测试了你的解决方案,但它不起作用。好吧,除非你披露你是如何将LEACH贡献给ns的,否则没有人能够为了帮助您。最好的猜测是,用
interp
注册
TclClass
在某种程度上被破坏了。为什么不使用已经修补过的ns 2.35,包括LEACH,例如:?MIT LEACH没有类似
LeachAgent
(或类似)的定义……Mannasim使用
set代理[新代理/RCAgent/LeachAgent]
。我指的是Mannasim,是的。