[問題]exponential distribution in packet size

作者: bcza245682 (阿弘)   2014-04-07 23:21:15
大家好
想請問有關將封包大小設為exponential distribution
我的第一個方法是在TCLscript中,使用一個Expontial Variable
code如下
set exp [new Agent/Traffic/Exponential]
...
set rng [new RNG]
set rng seed 101
set size [new RandomVariable/Exponential]
$size set avg_ 123
$size use_rng $rng
$exp set packetSize_ [expr 1.0*[$size value]]
...
結果當我去看trace files時
每個封包都是一樣的大小都是416
但若是我直接把size(Exponentila Varialbe)的值印出來確認,似乎又是對的
是不能直接把這個參數丟給packetSize嗎?
想另外請教我之前的另一個作法
我是修改expoo.cc,藉由加入一個ExponentialRandomVariable
已下是我的另一個作法中expoo.cc的片段
class EXPOO_Traffic : public TrafficGenerator {
...
protected:
...
ExponentialRandomVariable expSize_;
...
}
int EXPOO_Traffic::command(int argc, const char*const* argv){
if(argc==3){
if (strcmp(argv[1], "use-rng") == 0) {
burstlen_.seed((char *)argv[2]);
Offtime_.seed((char *)argv[2]);
return (TCL_OK);
}
if (strcmp(argv[1], "use-rng-size") == 0){
expSize_.seed((char *)argv[2]);
return (TCL_OK);
}
}
return Application::command(argc,argv);
}
其實我google不到.seed的用法..
只是依樣畫葫蘆的試試看,但每次都跑出錯誤msg= =
想請問.seed中該傳入的參數是否是rng型態的變數
還有其它像是.setavg_(123.0)是可以指定指數型分配的平均值在123
但是我卻又不知道該如何修改再expoo.cc中
讓每次的封包大小都呈現指數型分配
另外像bind的用處也很讓我困惑
我曾經想說不讓程式bind到packetsize
就把bind("packetSize_",&size_)這行註解掉
然後重新make clean 、make ns2
最後跑出來的結果還是沒改變 冏
問題很多也很雜.. 真的很對不起QQ
希望能有大大為新手解答,如果我問了愚蠢的問題請見諒QQ..

Links booklink

Contact Us: admin [ a t ] ucptt.com