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

When the British decided to define the outer limits of their Indian empire, they fudged the question. After two disastrous wars in Afghanistan, they sent the Foreign Secretary of India, Sir Mortimer Durand, to Kabul in 1893 to agree the limits of British and Afghan influence. The result was the Durand Line which Pakistan considers today as its border and Afghanistan refuses to recognise. . . . Read More

Gardez , Daniel Balland

Gardez is the capital of the province of Paktia and serves as the summer residence of the provincial governor, who resides in Khost during the winter. This practice of alternating headquarters is one of the last vestiges in Afghanistan of the once common seasonal migration of administrative authorities, directly moulded on nomadic traditions. . . . Read More

Muslim authors agree that the Khalaj are one of the earliest tribes to have crossed the Oxus. In addition to I. Khurdadhbih whom we have quoted above, Istakhri (circa AD 930) says: "The Khalaj are a class of Turks who in the days of the old (fi qadim al-ayyam) came to the country stretching between India and the districts of Sijistan, behind Ghur. . . . Read More

Ghaznavids , Edmund Bosworth

Ghaznavids, an Islamic Dynasty of Turkish slave origin (366-582/977-1186), which in its heyday ruled in the eastern Iranian lands, briefly as far west as Ray and Jabal . . . 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);
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.

"quantity runiform(int rng?)",
"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 {
int count;
double connectedness; // 0.0 submodules:
node[count]: Node {
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)