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


نه خودسخن فهمۍ څه دعوه لرم او نه دغالب دطرفدارۍ نيت مې دے ځکه چې څه مې په زړۀ دى هم هغه مې په خله دى او واقعاتى حقيقت هم دادے چې د کچه ماذيګرى په ابتدائى لمحو کښې کله هم چې زۀ دځوانى مرګ دوست جاويد خيبر کيفۍ ته ورننوځم او دخپل ښى لاس دقطار خپل اشنا اخرى ميز ته ځان رسوم نو دګس لاس دقطار اخرى ميز دګوټ کرسۍ مې سترګې ځان پله لکه دمقناطيس راکاږى چې يو درويش پرې ځان له مراقبه . . . نور

Israr Shinwari , Rahimullah Yusufzai

The end came peacefully for Israr Mohammad Khan Shinwari as most accounts of his final hours said he died in his sleep. Having helped everyone and anyone who knocked his doors throughout his life, so many people must have prayed for him that his death was quick and painless and his funeral was huge. . . . Read More

خټک ، منشي احمد جان

روايت دې چه خټک د لقمان حکيم صاحب اولاد دې. د لقمان درې نور ورونړه هم وو. لقمان په کښ مشر وۀ. يوه ورځ دا څلور واړه ورونړه باهر تللي وو ښکار ئې کاوۀ. په دې کښ يو څلور ښځې پړوني په سر په لاره تېرېږي. دې درې ورونړو خو وو چه راځئ چه په دې ښځو باندې پچه واچوو او د هر چا چه کومه ورسيده هغه د واخلي. . . . نور


Darra Khyber has remained an important trade & military route between the Subcontinent and Central Asia. This is the land where Buddhists had lived whose relics are found scattered throughout the land and it is through here that marauding armies passed while on their way to conquer the wealth of Hindustan. . . . Read More


Khan Qarabaghi was one of Afghanistan's most important contribution to Pashto music. All his songs depicted Afghan life, its culture and its history. One of his most important song that depicted such cultural artefacts was the Babulala. The Babulala is similar to the Kakari poetry but the subject matter only deals with weddings. . . . 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)