Random Generation of bi-directional Graphs in Omnet :: Khyber.ORG

پښتو :: پښتانه :: پښتونخواه :: پښتونوالی

Random Generation of bi-directional Graphs in Omnet, Omar Usman
Published in Khyber.ORG on Wednesday, July 4 2012 (http://www.khyber.org)


New Additions

[an error occurred while processing this directive]

From Archives

دسرو زرو خزانه ، سليم عابد پيمان


په يوه کلي کې يو سپين ږيری سړي ژوند کاوه هغه يو باغ درلود. دی ناروغ شو. له ځانه سره يې سوچ وکړ چه . . . نور

يويشتمه فروري او پښتو ژبه ، عبدالهادي حيران

ژبه د يو قام پېژندګلو او د قام د ژوند د ټولو اړخونو مهم بنسټ وي. د ژوندو قامونو ژبې تل ژوندۍ وي. ځکه چې د قامونو د تاريخي ژوند ثبوت د هغوئ د ژبو ادب، ثقافت او تعليم وي. د نړۍ د لويو تهذيبونو په لوئي والي کې د هغوئ ژبو ډېر مهم رول لوبولى دى. . . . نور

عبدل حميد غزل ، عبدل حميد

که مې اولې په سر کانړي سل منېزما خوښ دې د آشنا کبر ومنېکه خوبان د له خوبئ نه ليونې شوهسر و مال درنه زما شه سپيلنېله ښۀ مخ سره دوستي که څوک پوهېږيدۀ له ځان سره په قطع دښمنيافلاطون لکه هلک طپانچه خؤرکهچه له عشقه د په سر راشي ليونېچه بې ياره خوب خندا کاندې ناصحهعاشقان دا هسې نۀ دې خندنيچه د ښکلو مې ناصح بولې په حوروپه بانه د بدرګې کړي رهزنېمحبت شدني کار وه په ما وشونو به نۀ شي په هيچا دا شدنېڅوک د نۀ غندي شوخې د آهو چشمودا انځور د دې چمن دا چمنېد حميد د ساده شعر کمال ګورهچه شمله شه د تمام سرنبې . . . نور

پښتون په پښتو پښتون دے ، ليک: هويد نقاش داودزے

هسې نن سبا چې دپښتون حالت ته ګورم نو ډير خفه شم ځکه چې ډير لتاړ او سختو شپو ورځو کښې ګيردے، کله نا کله په دې خبره سوچ وکړم چې دغه کوم وجوهات دى چې دوى ئې دومره ناکړدو سره مخ کړيدى او دښه سوچ نه پس دې نتيجې ته ورسم چې ددې دټولو غټ دوه وجوهات دى ددۀ پښتون او مسلمانى او هم دغه وجوهات ددۀ دتباهۍ سوب جوړ شوى دى . . . نور


Chronological Events in the life of Mufakir e Islam, Mufti Mehmood RA . . . Read More


Orakzai Agency has an area of almost 700 square miles and has a general elevation of 5,500 to 5,600 feet above sea level. The important peaks are the Sangla (6325 ft) and the Chara Kandaco (5,643 ft). Its weather is characterized by intense cold in winter when the temperature falls below freezing and has mild summers. . . . Read More

Random Generation of bi-directional Graphs in Omnet

Omar Usman

Publishing Date: Wednesday, July 4 2012

The Omnet usman.html manual has code for generation of random topologies. The type of network generated can contain uni-directional, or bi-directional edges. Usually, people working with networks require generation of bi-directional graphs only. What you will see here is a small hack to the Omnet Engine, which can enable you to do that. (Note: I am not an expert on Omnet so most probably there is another simpler way of doing this. If you do, please leave a comment).

The files you need to modify are:

  1. src/sim/distrib.cc
  2. include/distrib.h
  3. src/sim/nedfunctions.cc

Modifications to distrib.cc

You need to create a new function (runiform). What this does is that it retains the random number generated from a previous call to uniform(). The random number is generated every 2-calls.

double runiform(int rng) {
static int r = 0;
static double l = 0;
if(r%2 == 0) l = uniform(0,1);
r++;
return l;
}

Modifications to distrib.h

Just one line to be modified here:

SIM_API double runiform(int rng=0);

Modifications to nedfunctions.cc

The current usman.html manual (July 4, 2012) shows a different way of doing this. The code in the manual is not consistent with what I found in the source (4.2.2). You need to add the following code to where the other continuous random variate generation code is present.

DEF(nedf_runiform,
"quantity runiform(int rng?)",
"random/continuous",
"Retains the value generated from a previous call to uniform()",
{
int rng = argc==2 ? (int)argv[1] : 0;
return cNEDValue(runiform(rng), argv[0].getUnit());
})

Compilation and Usage

If you have already compiled omnet once, you can simply run make and compile the engine again. When complete, fire up your editor and open your .NED file. You can now generate bi-directional graphs using the following code from the manual (which is adopted to this hack):

module RandomGraph {
parameters:
int count;
double connectedness; // 0.0 submodules:
node[count]: Node {
gates:
in[count];
out[count];
}
connections allowunconnected:
for i=0..count-1, for j=0..count-1 {
node[i].out[j] --> node[j].in[i]
if i<j && runiform() > connectedness;
node[j].out[i] --> node[i].in[j]
if i<j && runiform() > connectedness;
}
}

Comments powered by Disqus

Random Generation of bi-directional Graphs in Omnet, Omar Usman
Published in Khyber.ORG on Wednesday, July 4 2012 (http://www.khyber.org)