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

خوشحال خان خټک ، احمد جان

خوشحال خان په پښتنو کښ د تکړه قام يعني د خټکو مشهور تورزن، جنګيالي او شاعر وۀ. په 1022 هجري (1613ء) کښ پيدا شوي وۀ. د دۀ پلار شهباز خان چه د پښتنو زورور قام يوسفزو سره جنګيدۀ هغي کښ زخمي شۀ او څو ورځې پس هم هغه پرهار نه مړ شۀ. د دۀ له مرګ پس خوشحال خان چه هغه هم دغه (د 1050هجري يا 1645ء په) جنګ کښ په سر او زنګون . . . نور


An innate sense of the essence of their culture sustained Afghans through 24 years of conflict and displacement. Although they continue to cherish the diversity of regional differences, individuals cling tenaciously to their national identity, upholding traditional values and customs that distinguish them from their neighbours. . . . 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)