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 is said that all the credit of the beautification of the Hujrah goes to the Chillum, i.e., without it the Hujrah will be incomplete and dull. Men get together for their evening discussions, prepare a chillum or two, and pass it around as the night lingers on. . . . Read More


The Anti Kidnapping Force (AKF) had injured one of the six alleged kidnappers and arrested another after they went after the criminals in the case. Sai Khan, one of the six alleged kidnappers, escaped in wounded condition while Saidak who surrendered to the political authorities managed his flee from the lock up. . . . Read More



Their association with the Gomal, reinforced by the presence of those who settled here created a name for them. They are known and refer to themselves as د ګومل خلق (the people of Gomal) . . . 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)