недопустимое имя команды Agent/LeachAgent

Я пытаюсь реализовать простой сценарий для протокола 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)

Я использую ubuntu 16.04 и ns-allinone-2.35 . когда я впервые запустил свой файл tcl, я не получил эту ошибку.


person Somayeh Razaghi    schedule 30.07.2018    source источник
comment
Как создается этот класс?   -  person glenn jackman    schedule 30.07.2018
comment
@glenn jackman, я не понимаю, что ты имеешь в виду.   -  person Somayeh Razaghi    schedule 30.07.2018
comment
new и create указывают на создание экземпляра класса OTcl. Имя команды Agent/LeachAgent также является именем класса. Отсюда правильный вопрос Гленна. Оказывается, Agent/LeachAgent не существует. Смотрите мой ответ.   -  person mrcalvin    schedule 31.07.2018


Ответы (2)


Измените свой скрипт, чтобы использовать Agent/RCAgent/LeachAgent в качестве имени класса:

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

Насколько я вижу, Agent/LeachAgent в ns-allinone-2.35 нет.

person mrcalvin    schedule 31.07.2018
comment
да, вы правы. Протокол .LEACH не поддерживается ns-allinone-2.35, но я добавил его, и мой сценарий работал правильно. Я получил эту ошибку недавно. Я проверил ваше решение, но оно не сработало. - person Somayeh Razaghi; 31.07.2018
comment
ну, если вы не расскажете, как вы предоставили LEACH для ns, никто не сможет вам помочь. Лучше всего предположить, что регистрация TclClass с interp каким-то образом нарушена. Почему бы не использовать уже исправленную версию ns 2.35, включая LEACH, например: "nofollow noreferrer">github.com/paultsr/ns-allinone-2.35/tree/? - person mrcalvin; 01.08.2018
comment
В MIT Leach нет такого определения, как LeachAgent. (Или подобное.) ... Маннасим использует set agent [new Agent/RCAgent/LeachAgent]. - person Knud Larsen; 01.08.2018
comment
Да, я имею в виду маннасим. - person mrcalvin; 01.08.2018

Мне не удалось написать правильный код для подключения протокола Leach к моему сценарию, но я обнаружил, что у mannasim есть генератор сценариев Mannasim (MSG). Это интерфейс для простого создания TCL сценариев моделирования.

person Somayeh Razaghi    schedule 08.08.2018