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

محسود ، منشي احمد جان

دا قام د وزيرستان په مينځومان کښ اوسېږي. دوئ قطب، سهيل او نمر پريواتۀ ته وزير خلق دي او نمر خاتۀ ته بيټني خلق. د دوئ درې قامونه دي. علي زئي، بهلول زي، او شمن خيل. او يو نيم زر ملاتړ ويستې شي. دا درې واړه قامونه ګډ ګاډيره اوسېږي ځکه ئې خپلو کښ تل بدي او دښمني وي. . . . نور


Modern Pashto poem took many shapes in the last century. Progressive poet's emphasis on poem rather on ghazal mainly brought about a remarkable change in the structure, Form and subject matter of the poem. They made it a vehicle for expressing their lofty, revolutionary and creative ideas. The poets affiliated with Khudai Khidmatgar Tehrik, Fazal Mehmood Makhfee, Ghani Khan, Abdul Akbar khan Akbar and the progressive poets, Qalandar Moomand, Ajmal Khattak, Saif-u Rehman Saleem, Ashraf Maftoon Yousaf Khan, Abd-ur-Rahim Majzoob with a slight change in their approaches towards, social problems and political issues, gave Pashto poem, a new spirit, and new artistic vision. . . . Read More

So Culturally Rich , Sher Alam Shinwari

ACCORDING to linguists, many languages of the world are on the verge of extinction due to a lack of government support for their development and increasing globalization, which causes a loss of ethnic identity . . . Read More

خليل ، منشي احمد جان

د دوئي د علاقې زمکې د کابل د سيند او د باړې په اوبو اوبۀ کېږي. د دې قوم معتبر خلق د مټا خيلو د قام دي چه اربابان ورته وائي. دا خطاب ورته شاهجهان بادشاه ورکړې وۀ. د دې قام خلق په وجود کښ ښۀ توانا دي. او پنځوسؤو کسانو پورې په فوځ . . . نور


Get to Know Pashtun Tribes
Updated: Now contains 135 153 tribes

. . . نور


A collection of Paintings compiled from various sources on the internet and books. . . . 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)