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


Ghazal master Ustad Khyal Muhammad has attained the status of a living legend. With his heavy and melancholious voice, he has perfected the art of singing Ghazals. We present a few of his popular ghazals and songs. . . . Read More

Ghaurid Dynasty , Edmund Bosworth

Ghurids (or Aal-e Sansab) is a medieval Islamic dynasty of the eastern Iranian lands. They began as local chiefs in Ghor in the heartland of . . . Read More


Dawar is the second largest tribe in North Waziristan. It is located along the both sides of River Tochi in Plane area from Ghalmi to Darra Shinki. The area in which they are living is beautiful fully cultivatable. Its territory (Land) is fertile & beatiful. Dawar's tribe does not migrate in summer like Wazir's tribe. . . . Read More

Unravelling the Mystery , Review by Dr. Ali Jan

Since the time of Alexander the Great to the collapse of the Soviet Union, the Pathans have inhabited a land stretching from southern Afghanistan to the North West Frontier Province of Pakistan. This territory became the graveyard for empires and invaders for the past several centuries. This proud race makes up one of the world's largest tribal societies, where each clan guards its own territory and honour. . . . Read More

Matter of Identity , Dr. Sher Zaman Taizai

The NWFP assembly at long last, passed the historic resolution on November 13, calling for naming this nameless province of Pakistan as Pakhtunkhwa. This day and event will be included as a golden chapter in the long and turbulent history of Pakhtuns, for which the provincial assembly deserves gratitude. The North West Frontier Province is not a name but identification of a geographical locality. . . . Read More

Ghorband , M. Jamil Hanifi

Ghorband, a major valley of Kohestan/Kohistan and a sub-province (woloswali) of Parvan province in the southern foothills of the Hindu Kush massif, located approximately 50 miles north of Kabul. The term Ghorband probably derives from Ghor/Ghaur, the name of the mountainous region northwest of Ghorband, and the Persian word band (barrier, dam), i.e., the mountainous barrier to Ghur. This picturesque valley contains some dazzling vistas near the subsidiary valleys and villages of Bag-e Awgan, Dara-e Ashawa, Deh Rangar, Dara-e Ju-ye, Dara-ye Sayyedan, and Siahgerd. . . . 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)