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


NWFP has a genuine right to claim major portion of royalty from the Ghazi Barotha Hydel Project (GBHP) as its major components consisting of Tarbela reservoir. Ghazi barrage, its 7 mile long pond on the upstream and about 20 km of power channel are all located in NWFP. These vital components form the Head Works Complex of the project to produce hydropower. . . . Read More


په نيدرلند کې افغاني کلتوري ټولنې د ۲۰۱۱ کال د اکتوبر د میاشتې په اتمه نیټه د (لس کلنه امريکايي ډيموکراسي او افغاني سياسي بې وسي) تر عنوان لاندې یوه غونډه جوړه کړه. . . . نور

Shuja ul Mulk , Syed Bokhar Shah

Bearing simple countenance and eliciting approbation on first look, the young bearded MNA, Shuja ul Mulk in his long overcoat, Chitrali cap and a woolen Chadar, was receiving warmly each and every guest, who was coming to congratulate him on the second day of Eid ul Fitr. . . . Read More

Ghulam Nabi Khan , Rahimullah Yusufzai

A personal tragedy often changes the life of a person. Ghulam Nabi Khan also became a kind hearted philanthropist when he experienced the kind of suffering that is the fate of so many human beings. . . . Read More


Throughout NWFP, the marriages are generally held or performed within one's own Beradari or tribe, but there are no restrictions on marriages out of the tribe or cast or Beradari. The trend to marry a girl outside tribes is increasing day by day due to increase in education in the rural areas and higher education in the urban areas. Usually the parents of the boy and girl . . . Read More



An overview of the Lodhi emperor's; Bahlol Khan Lodhi, Sikandar Khan Lodhi, and Ibrahim Khan Lodhi . . . 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)