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

ببرک شينوارى سره مرکه ، مرکه کوونکى: ميا فاروق فراق، عبدالهادى حيران

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


What is the relevance of tales of a legendary Pashtun king dating back five hundred years? Is it not a "Pidram Sultan Bod" (Persian quote means my father was a King) syndrome? Well it may be or it may not be depending on how one consumes the lessons of history. . . . Read More


Takhte Sulaiman, the highest peak of Sulaiman range, is shrouded in myth and mystery. Named after the wise Jewish prophet Solomon or Sulaiman, the peak possesses a strange healing quality. The legend has it that the prophet while on his floating carpet was wont to stay on top of the Takht. . . . Read More

پښتانه هنرمندان ، حاجی نصیر ستوری

په دغه کتاب کی د حاجی نصیر ستوری له خوا د یوشمیر پښتنو هنرمندانو ژوند ليکونه او په زړه پورى مالومات راټول شوى دی. داکتاب د پښتونخوا د پوهنې د دېرې لخوا خپور شوی او . . . نور


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


The tribal area comprising the territories lying between the administered districts of NWFP and the `Durand Line' is spread over an area of 10510 square miles. In this mountainous tract live 25,07,000 sturdy, well-built and self-reliant Pathans who prefer to be called Pukhtoons. . . . 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)