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

اسلام و تصوف ، حشمت رومان

داسې عقيده موجوده ده چې دصوفى نسبت صوف ته شويدے ځکه چې په عربى ژبه کښې صوف وړ يو ته وائى او څنګه چې دغو خلقو وړينې . . . نور


It was in 1953 that my path, that of a first year college student, crossed with that of Mr. H. M. Close, the English professor at Islamia College. As I write these words to celebrate the gift of his life to the people of our province, I realise that for over 46 years I have been the recipient of his kindness and his grace. . . . Read More

Who are the Kochis , Haroon Rasheed

The border areas between Pakistan and Afghanistan is always under the spotlight when the issue of Taleban and Al Qaeda flow across the border crops up. But there are certain people who have been crossing these borders for centuries without the need of any paper work. . . . Read More

Marwato Kasroona , Abdul Rahim Majzoob Advocate


'Marwato Kasroona' provides insight into that phase in our history when most Pakhtoon tribes were at war with one another or amongst themselves. . . . Read More


کومو خلقو چې مولاناعبدالحق په خپلو سترګو نۀ وى ليدلے هغوئ ته څنګه ووايو چې مرحوم د ايمان اؤ اسقامت، علم اؤ عمل، تواضع اؤ تقدس، شفقت اؤ مرحمت، زيبائى اؤ رعنائى اؤ نور اؤ رڼا څومره زړۀ راښکونکے تصوير ؤ. حق خبره داده چې د ژبې اؤ بيان کوم اسلوب د مولانا غوندې متاع يوسفى صحيح تصوير کشى نۀ شى کؤلے. آه! قائد شريعت شيخ الحديث . . . نور

Shilmani , F S Shilmani

Shalmani's predominantly live in Shalman Valley in Khyber Agency near Peshawar where they share their land with the Afridi's, Shinwari's and Malagori's. Their sub-tribes are the Alim Zai, Tarak Zai, and Kam Shalman. These people have strong relationships with Mohmand's. . . . 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)