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


دجنګي کلاپه منځکوړکابل کې دپښتوژبې اوخلکوپه برخويا حقوقوباندې ديوه بل تېري زيرى درکوم،داهغه وزارت دى چې په درباري افغانستان کې يې دپښتو، پښتونپالنې، پښتونخوا . . . نور


کله چې موږپه افغانستان کې دعلوموداکاډمۍپه هڅو اوهلوځلوخبرې کووبيانوزموږپه هيوادکې دژبودودې،غوړېدنې اوپرمختګ په اړوندحکومتي اودغټانوهڅې هم بايدملګرې،همغاړې اويوځاى ورسره يادې کړو،ياکه دغه خبره په بله خواشيندلې ياده کړله شي نوعلوم به . . . نور


I would not be quite honest if I claimed to have understood Iftikhar Gillani after interviewing him. It is not that simple. Iftikhar is a very private person whose emotions, reactions and responses are all under tight control. He seemed aware of every word he uttered, giving away only what he wanted to. . . . Read More

دحمزه غزل او پښتون تصوف ، ډاکټر يار محمد مغموم

دپير روښان تحريک ديادولو وړ دے چې دمرزا خان انصارى غوندې شاعر ئې پيدا کړو دادبى پنګې بنياد ددغې تحريک نه لګيدلے دے او دغه نۀ ختميدونکې ادبى سلسله چې تر کاظم خان شيدا راورسيده نو غزل څه نا څه ځوان شوے ؤ ځکه چې شيدا دغزل په روايتى انداز کښې نوې تجربې وکړې او تر ډيره حده کامياب شو دغه نوې تجربې زۀ دغزل دځوانۍ ابتداء ګڼم، چې دحمزه په غزل کښې انتها ته رسى ليکن ددې مطلب دا هر ګز نۀ دے چې ګنې شيدا دخپلو هم عصرو شاعرانو په مقابله کښې دټولو نه ښه غزل ګو شاعر ؤ خو دغزل دجديد انداز سهره ضرور دشيدا په سره ده . . . نور


A guide on how to enable and add new Pashto layouts, and to make them work with major software. . . . Read More


By and large the Pukhtoons are deeply religious. The land of these highlanders has experienced the influence of religious leaders for a long time, who, after making their way into the mountains aroused the religious sentiments of the local people and rallied them under the banner of Islam against the enemies of their religion. Besides less . . . 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)