Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/17:13/16
2024/05/16:22/24

2024/03/18より397/1407
人気モジュール
No.1: フォーラム 99
No.2: QualNet概要 3
No.3: ニュース 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット79
No.2:Unknown OS1
No.3:Windows XP1

No.1:どっかの巡回ロボット70
No.2:Majestic-12巡回ロボット6
No.3:Google巡回ロボット3

日曜日からの合計
メイン
   Node Placement & Mobility Settings
     pause timeについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Nobuhiko
投稿日時: 2005/11/2 10:55
新米
登録日: 2005/9/26
居住地:
投稿: 10
pause timeについて
pause timeを数字で与えることはできるんですが、random設定にする方法がわかりません。randomに設定することはできないのですか?
よろしくお願いします。
forum_support
投稿日時: 2005/11/2 19:44
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: pause timeについて
ご質問はMobility modelのrandom waypointモデルの
パラメータである pause time についてと思いますが
あってますか?

この値をランダムにすることはデフォルト設定では行えません
ソースコードを修正していただくことになります。

QUALNET_HOME/mobility/mobility_waypoint.cpp 中の
MOBILITY_WaypointInit関数内の
130行目 : simClock += mobilityPause;
となっている箇所を変更します

mobilityPause はシナリオ設定時にしていされた
pause time ですが、ここに乱数値を入れてください。

また、mobilityPause の型は clocktype となっています。
mobilityPause = 1 ;
とすると 時間の単位は nsec です。秒にしたい場合は
mobilityPause = 1 * SECOND;
としてください。msec や、そのたの単位を使いたい
場合には
QUALNET_HOME/include/clock.h の マクロを参照してください

ということで答えになったでしょうか?
Nobuhiko
投稿日時: 2005/11/6 2:55
新米
登録日: 2005/9/26
居住地:
投稿: 10
Re: pause timeについて
ご返答ありがとうございます。わからないことがあれば質問させていただくかもしれませんが、その時はよろしくお願いします。
Nobuhiko
投稿日時: 2005/11/8 0:44
新米
登録日: 2005/9/26
居住地:
投稿: 10
Re: pause timeについて
色々考えた結果、以下のような設定にしなければならないことがわかりました。設定したいのはそれぞれのnodeにおいてpause timeをランダムにしたいということです。例えばnodeAは30秒、nodeBは20秒。このようなことはできるのでしょうか?教えていただいたのは、全てのnodeにおいてpause timeが20秒または30秒といったランダム性ではないでしょうか?書き方が不適切ですいませんでした。よろしくおねがいします。
forum_support
投稿日時: 2005/11/8 12:32
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: pause timeについて
できると思います。

$QUALNET_HOME/mobility/mobility_waypoint.cpp 内の
MOBILITY_WaypointInit 関数で、乱数のパラメータと
乱数タイプを読み込むように変更する必要があります。

以下、一様乱数でpause time を設定したい場合の例です。

まず、config ファイル中にPuaseパターンを
設定したいノード x(xはノードID)について、

[x] MOBILITY-RANDOM-WAYPOINT-POUSETYPE UNIFORM
のように定義します。MOBILITY-RANDOM-WAYPOINT-POUSETYPEは
ユーザー定義のタグですのでNobuhikoさんがご自由に定義してください。

これをMOBILITY_WaypointInit 関数内で
IO_ReadString(nodeid,ANY_ADDRESS,nodeInput,"MOBILITY-RANDOM-WAYPOINT-PAUSETYPE",
&wasFound,buf);
を呼び出して取得します。

UNIFORM の場合、乱数の下限、上限が必要となると思いますので、
同様に
[x] MOBILITY-RANDOM-WAYPOINT-UNIFORM-LOWER-LIMIT 10S,
[x] MOBILITY-RANDOM-WAYPOINT-UNIFORM-UPPER-LIMIT 20S,
といったものをconfigファイルに設定します。
これをIO_ReadString で 読み込みます。ただしパラメータの単位は
時間ですので、読み込んだ値は String->時間(clocktype型)に
変更する必要があるのでTime_ConvertToClock でclocktype型に治します。

あとはこれらのパラメータを用いて一様乱数を発生させ、
その値を関数内ローカル変数の mobilityPause に代入してあげれば
よいと思いますよ。

また、pause time を一定時間とする通常のrandom-waypointモデル
も使用したい場合には、

IO_ReadString(nodeid,ANY_ADDRESS,nodeInput,"MOBILITY-RANDOM-WAYPOINT-PAUSETYPE",
&wasFound,buf);

if (wasFound == TRUE)
{
乱数パラメータの読み込み
}
else
{
通常のrandom-waypoint のデータ読み込み
}

としてあげればよいと思います。

GUIでパラメータ設定を行いたい場合には下記を参照してください。
http://simweb.kke.co.jp/qualnet/forum/modules/newbb/viewtopic.php?topic_id=12&forum=2




Nobuhiko
投稿日時: 2005/11/8 13:02
新米
登録日: 2005/9/26
居住地:
投稿: 10
Re: pause timeについて
ご返答ありがとうございます。非常に参考になりました。どのような乱数を使用するか検討してみます。わからないことがあれば質問させていただくかもしれませんが、その時はよろしくお願いします。
Nobuhiko
投稿日時: 2005/11/8 13:54
新米
登録日: 2005/9/26
居住地:
投稿: 10
Re: pause timeについて
$QUALNET_HOME/mobility/mobility_waypoint.cpp を書き直そうと思っているんですけど、ライセンスが1つで学生で共有して使っています。そのときに$QUALNET_HOME/mobility/mobility_waypoint.cpp を書き直してしまうと、ほかの学生がmobility_waypointを使用するとデフォルトのmobility_waypointでなく改良したmobility_waypointとなってしまいますか?そのようなことが起こらないような書き換え方はありますか?よろしくおねがいします。
forum_support
投稿日時: 2005/11/9 11:21
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: pause timeについて
以前の投稿にも書きましたが、以下のようにすれば、MOBILITY-RANDOM-WAYPOINT-PAUSETYPEを設定していない場合には 通常の Random-waypoint として実行できると思いますよ。また、データ読み込み部だけでなく、simClock += mobilityPause としている箇所にも判定文が必要になると思います。

引用:

IO_ReadString(nodeid,ANY_ADDRESS,nodeInput,"MOBILITY-RANDOM-WAYPOINT-PAUSETYPE",
&wasFound,buf);

if (wasFound == TRUE)
{
乱数パラメータの読み込み
}
else
{
通常のrandom-waypoint のデータ読み込み
}


また、開発環境はライセンスサーバーを用いないノードロックライセンスでしょうか? それともライセンスサーバーを用いたフローティングライセンスでしょうか?

後者の場合、一般論ですが通常、ユーザー毎にQNを別々のマシンにインストールしさえすれば問題は解消できると思います。

ノードロック形式、あるいはフローティングライセンス形式にかかわらず
ご使用するマシンが一台しか無い場合には、ユーザー毎にQNをインストールしていただければ問題ないと思います。

ユーザーアカウント毎にインストールする場合には、Unix系の環境であれば
/home/user 以下にそれぞれQNをインストールすることをお勧めします。こうすれ
ば、各ユーザー毎にソースコードを保持しますから、ご自分の環境が他のユーザー
に影響することはあり得ませんよね。

Windows系であれば、同一マシン上の別々のユーザーアカウントでそれぞれ
個別にインストールすることも可能ですが、コントロールパネル->プログラム
の追加と削除でアンインストールすると、最後にインストールしたQNしか
正しくアンインストールされないため、あまりお勧めできません。
 対処策としては、インストーラでインストール後、ユーザー毎に$QUALNET_HOME
以下を別ディレクトリにコピーし、環境変数 PATH,LIB,QUALNET_HOMEを
コピーしたディレクトリにあわせて毎回変更していただくことになるかと
思います。

これらのライセンス形式や、インストール環境に対して更にご質問がありましたら、"インストール"フォーラムへ投稿していただけるとたすかります。
Nobuhiko
投稿日時: 2005/11/18 13:10
新米
登録日: 2005/9/26
居住地:
投稿: 10
Re: pause timeについて
ライセンスサーバーを用いたフローティングライセンスです。Linux環境にインストールしています。とても参考になりました。ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT