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


Kurram Agency has an area of 1,305 square miles with its headquarters at parachinar. It was occupied in 1892 by the British at the invitation of the turi shia tribe who feared aggression by the neighbouring sunni tribes. Half the agency was called the administered area, mainly along the Kurram river valley , and the other half the frontier regions. . . . Read More

 ديوکرائن غله ، سعدالله جان برق

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

Kheshki , Anas Parvez Kheshki

Kheshki is the name of a tribe which has brotherly relations with Muhammad Zee. Like other tribals, this tribe has also migrated from Ghwara Marghai (Afghanistan) and started living in the present locality in 1515. One big portion . . . Read More

ميرو خان د مرګ قيصه ، امين خان مروت


امين خان مروت په آواز کښې د ميرو خان د مرګ قيصه . . . نور


د امريکا د بیوګرافیو څېړنيز انستيتوت چې د امريکا په (North Caroline)ايالت کې موقعيت لري، د څېړنو پر بنسټ یې يو افغان ډاکټر د يوويشتمې پېړۍ غوره مفکر شخصيت ټاکلی دی او د نړيوال سفير لقب يې ور کړی. دغه افغان ډاکټر چې سيدنصيراحمد نومېږي . . . نور


د وړوکی اختر ( شوال ) د مياشتې ٨ نېټه په اسلامی تاريخ کښې هغه توره ورځ ده چې په همدې نېټه د ١٣٤٥ هجری قمری کال ( د ١٩٢٥ عيسوی کال د اپرېل ٢١ نېټه ) په سعودی باندې واکمن د هغه وخت د آل سعود وهابی او سلفی . . . نور

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)