akeranen / the-one Goto Github PK
View Code? Open in Web Editor NEWThe Opportunistic Network Environment simulator
License: Other
The Opportunistic Network Environment simulator
License: Other
Suggestion:
When running MaxPropRouter, there is a snippet of code frequently called (from routing.maxprop.MeetingProbability, which prints some information in output stream.
if (probs.size() >= maxSetSize) {
core.Debug.p("Probsize: " + probs.size() + " dropping " +
probs.remove(smallestEntry.getKey()));
}
}
It is frequently annoying and could lead to performance degradation.
Perhaps the best default option for debugging is not debugging, actually.
Actually, in my code I changed the snippet in order to workaround:
if (probs.size() >= maxSetSize) {
probs.remove(smallestEntry.getKey()));
//core.Debug.p("Probsize: " + probs.size() + " dropping " +
// probs.remove(smallestEntry.getKey()));
}
}
It would be nice a (not hardcoded) way to disable it (increase the debug level).
I could contribute with a pull request if the authors agree to reade the debug level from settings:
Debug.level = x
Hi guys, how are you?
We have an undersirable problem regarding to the TTL calculation:
public int getTtl() {
if (this.initTtl == INFINITE_TTL) {
return Integer.MAX_VALUE;
}
else {
return (int)( ((this.initTtl * 60) -
(SimClock.getTime()-this.timeCreated)) /60.0 );
}
}
When a user enter a value greater than Integer.MAX_VALUE/60 occurs an integer overflow which results in negative values for TTL.
A possible workaround is to limit ttl maximum value to 35,791,394 which works fine.
35,791,395 leads to a negative value.
When running the default simulation with assertions enabled (-ea
), two assertions fail:
java -ea -Xmx512M -cp target:lib/ECLA.jar:lib/DTNConsoleConnection.jar core.DTNSim $*
First this:
Running simulation 'default_scenario'
java.lang.AssertionError: No path from Nt2@(3253.28,2184.33) to Nt2@(1763.40,268.05). The simulation map isn't fully connected
at movement.ShortestPathMapBasedMovement.getPath(ShortestPathMapBasedMovement.java:56)
at core.DTNHost.setNextWaypoint(DTNHost.java:417)
at core.DTNHost.move(DTNHost.java:395)
at core.World.moveHosts(World.java:214)
at core.World.update(World.java:164)
at ui.DTNSimTextUI.runSim(DTNSimTextUI.java:29)
at ui.DTNSimUI.start(DTNSimUI.java:77)
at core.DTNSim.main(DTNSim.java:98)
If removed, then the second one is eventually fired:
Running simulation 'default_scenario'
java.lang.AssertionError: Already contained a connection of t121 and t120
at report.ContactTimesReport.addConnection(ContactTimesReport.java:74)
at report.ContactTimesReport.hostsConnected(ContactTimesReport.java:56)
at core.NetworkInterface.notifyConnectionListeners(NetworkInterface.java:413)
at core.NetworkInterface.connect(NetworkInterface.java:320)
at interfaces.SimpleBroadcastInterface.connect(SimpleBroadcastInterface.java:59)
at interfaces.SimpleBroadcastInterface.update(SimpleBroadcastInterface.java:93)
at core.DTNHost.update(DTNHost.java:343)
at core.World.updateHosts(World.java:198)
at core.World.update(World.java:167)
at ui.DTNSimTextUI.runSim(DTNSimTextUI.java:29)
at ui.DTNSimUI.start(DTNSimUI.java:77)
at core.DTNSim.main(DTNSim.java:85)
Not sure why this happens, but I didn't have time to debug this.
The use of named blocks ($data << EOD
) which is used in src/report/NodeDensityReport.java
requires Gnuplot version 5 (see FAQ 4.8).
I guess that should be documented somewhere.
I am unable to compile using sh compile.sh in my ubuntu 18.04
I am a beginner for the ONE, I want to know how to add selfish nodes and detect them ?
Hello,
Would it be helpful to move the project to an automated build tool?
I've started to look at the project for research purposes and I like to have well structured and semi-automated projects to ease my work. As I come from a scala-java background, I've forked the project and reworked it in order to add a dependency management tool. Here are the changes: https://github.com/vicaba/the-one/tree/sbt. See also: https://github.com/vicaba/the-one/blob/sbt/CHANGELOG.md.
I've you like it, I'll issue a pull request.
10 tests fail, but I've not changed almost any line of code. Can anyone confirm if these tests failed before the changes that I've applied?
Thank you,
Hi there
I when I try to run the ONE version 1.6.0 with dLife routing scheme I get this error and that happen for long time but now I really need that routing, though I did follow the readme file but I skip the Bubble RAP because I couldn't find it.
the error is shown before I even run the simulator and when I run it I get this in the console:
`Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method initialize(DTNHost, List) is undefined for the type MessageRouter
at core.DTNHost.setRouter(DTNHost.java:121)
at core.DTNHost.<init>(DTNHost.java:78)
at core.SimScenario.createHosts(SimScenario.java:425)
at core.SimScenario.<init>(SimScenario.java:171)
at core.SimScenario.getInstance(SimScenario.java:183)
at ui.DTNSimUI.initModel(DTNSimUI.java:93)
at ui.DTNSimUI.start(DTNSimUI.java:76)
at core.DTNSim.main(DTNSim.java:135)
`
When tiring to run the compile.bat (on the official release 1.6.0) I get:
error: option -extdirs not allowed with target 15
The master branch I get pretty much the same thing:
This problem seems similar to #74 but the proposed solution doesn't work or I'm doing something wrong.
What can I do about this? And BTW the last stable release is form 2015 and the master branch seems more or less active any updates coming?
Windows 10
JDK 15.0.1
Hi I'm using the latest version of the simulator and while I was trying to import NCCU trace data to the simulator, I kept getting the following error:
~\One>one.bat -b 1 nccu_setting.txt
one.bat -b 1 nccu_setting.txt
~\One>java -Xmx512M -cp target;lib/ECLA.jar;lib/DTNConsoleConnection.jar core.DTNSim -b 1 nccu_setting.txt
Run 1/1
Running simulation 'nccu_scenario'
core.SimError: No host for address 110. Address range of 0-14 is valid
at core.World.getNodeByAddress(World.java:256)
at input.MessageCreateEvent.processEvent(MessageCreateEvent.java:41)
at core.World.update(World.java:159)
at ui.DTNSimTextUI.runSim(DTNSimTextUI.java:29)
at ui.DTNSimUI.start(DTNSimUI.java:77)
at core.DTNSim.main(DTNSim.java:85)
---
All done in 0.49s`
And I took a look at the World
class and found this at line 255:
if (address < 0 || address >= hosts.size()) {
throw new SimError("No host for address " + address + ". Address " +
"range of 0-" + (hosts.size()-1) + " is valid");
}
Here, I got confused, because from what I understand, the hosts would be the "nodes" (the NCCU students) and comparing if the address, which I presume to be the coordinate values as integer, is greater than the total number of hosts does not make sense at all to me. Is this how this is supposed to be?
Thanks.
Currently buffer size of a node (defined at MessageRouter class) is a 32 bit integer. This might not be enough for some scenarios, so we could use long instead.
I leave a group http://facebook.com/groups/dtnrg Tip to be placed on the list of TheOne of user communities , it is a gurpo for those who use the social network and want to exchange knowledge and experiences with the use of TheOne in their research with DTN , I will be soon starting some studies and would like to have more people to exchange experiences in the use of RPC in NTDs.
I think that in order to help incoming users to get more updated and reliable information, it would be important redirect the old home page to the new one.
Since the top ranked result for popular queries like "theone simulator", "one simulator, and "opportunistic simulator" is still the old link, I think redirect it would be helpful to the new users.
I'm getting a weird error occurring when running the simulation with any of the Prophet or MaxProp routers. It appears to happen at random points in the simulation and I cannot spot any discernable pattern.
Full stack trace using ProphetV2Router:
Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeLo(TimSort.java:777)
at java.util.TimSort.mergeAt(TimSort.java:514)
at java.util.TimSort.mergeCollapse(TimSort.java:441)
at java.util.TimSort.sort(TimSort.java:245)
at java.util.Arrays.sort(Arrays.java:1512)
at java.util.ArrayList.sort(ArrayList.java:1454)
at java.util.Collections.sort(Collections.java:175)
at routing.ProphetV2Router.tryOtherMessages(ProphetV2Router.java:300)
at routing.ProphetV2Router.update(ProphetV2Router.java:259)
at core.DTNHost.update(DTNHost.java:346)
at core.World.updateHosts(World.java:186)
at core.World.update(World.java:167)
at gui.DTNSimGUI.runSim(DTNSimGUI.java:113)
at ui.DTNSimUI.start(DTNSimUI.java:77)
at core.DTNSim.main(DTNSim.java:92)
Despite the effort employed by @micdoug in #43 I am working in a decoupled solution for buffer management policies.
After an initial analysis, I think it is a very good idea to use the strategy pattern.
I started a scratch here: https://github.com/julianofischer/the-one/tree/buffermanagement and if anyone is interested, please, help me to review and test the code.
Is there a way to color nodes in the gui? I want to color sub-groups created by a router to check its correct implementation.
Alternatively, what is the recommended way to check whether an implementation is correct?
Unit tests seem a bit too complicated as I'd have to access a host's interfaces as well and don't really know where I would have to start with that.
Trying compile on windows 10, when I run the ./compile.bat
PS C:\Users\Faris\Desktop\lora\the-one> .\compile.bat
C:\Users\Faris\Desktop\lora\the-one>set targetdir=target
C:\Users\Faris\Desktop\lora\the-one>IF NOT EXIST "target" mkdir target
C:\Users\Faris\Desktop\lora\the-one>javac -sourcepath src -d target -extdirs lib/ src/core/*.java src/movement/*.java src/report/*.java src/routing/*.java src/gui/*.java src/input/*.java src/applications/*.java src/interfaces/*.java
error: option -extdirs not allowed with target 13
C:\Users\Faris\Desktop\lora\the-one>IF NOT EXIST "target\gui\buttonGraphics" (
mkdir target\gui\buttonGraphics
copy src\gui\buttonGraphics\* target\gui\buttonGraphics\
)
After referring the #74 , changed the compile.bat file line 5 -extdirs to -cp and after that getting more errors.
PS C:\Users\Faris\Desktop\lora\the-one> .\compile.bat
C:\Users\Faris\Desktop\lora\the-one>set targetdir=target
C:\Users\Faris\Desktop\lora\the-one>IF NOT EXIST "target" mkdir target
C:\Users\Faris\Desktop\lora\the-one>javac -sourcepath src -d target -cp lib/ src/core/*.java src/movement/*.java src/report/*.java src/routing/*.java src/gui/*.java src/input/*.java
src/applications/*.java src/interfaces/*.java
src\core\DTN2Manager.java:20: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.Bundle;
^
src\core\DTN2Manager.java:21: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.CLAParser;
^
src\core\DTN2Manager.java:32: error: cannot find symbol
private static Map<DTNHost, CLAParser> CLAs = null;
^
symbol: class CLAParser
location: class DTN2Manager
src\core\DTN2Manager.java:36: error: cannot find symbol
private static Map<String, Bundle> bundles = null;
^
symbol: class Bundle
location: class DTN2Manager
src\report\DTN2Reporter.java:12: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.CLAParser;
^
src\input\DTN2Events.java:8: error: package fi.tkk.netlab.dtn does not exist
import fi.tkk.netlab.dtn.DTNConsoleConnection;
^
src\input\DTN2Events.java:9: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.Bundle;
^
src\input\DTN2Events.java:10: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.CLAInterface;
^
src\input\DTN2Events.java:11: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.CLAParser;
^
src\core\DTN2Manager.java:189: error: cannot find symbol
public static CLAParser getParser(DTNHost host) {
^
symbol: class CLAParser
location: class DTN2Manager
src\core\DTN2Manager.java:212: error: cannot find symbol
public static void addBundle(String id, Bundle bundle) {
^
symbol: class Bundle
location: class DTN2Manager
src\core\DTN2Manager.java:221: error: cannot find symbol
public static Bundle getBundle(String id) {
^
symbol: class Bundle
location: class DTN2Manager
src\input\DTN2Events.java:44: error: cannot find symbol
private Map<String, Bundle> bundle_list;
^
symbol: class Bundle
location: class DTN2Events
src\input\DTN2Events.java:66: error: cannot find symbol
public class ParserHandler implements CLAInterface {
^
symbol: class CLAInterface
location: class DTN2Events
src\input\DTN2Events.java:230: error: cannot find symbol
private void enqueMsg(int from, int to, Bundle bundle) {
^
symbol: class Bundle
location: class DTN2Events
src\input\DTN2Events.java:243: error: cannot find symbol
private void regMsg(Bundle bundle) {
^
symbol: class Bundle
location: class DTN2Events
src\input\DTN2Events.java:251: error: cannot find symbol
private boolean isReg(Bundle bundle) {
^
symbol: class Bundle
location: class DTN2Events
src\input\DTN2Events.java:71: error: cannot find symbol
private DTNConsoleConnection console;
^
symbol: class DTNConsoleConnection
location: class DTN2Events.ParserHandler
src\input\DTN2Events.java:92: error: package CLAParser does not exist
CLAParser.BundleAttributes attributes) {
^
src\input\DTN2Events.java:91: error: cannot find symbol
public BundleTransferReceipt incomingBundle(String location,
^
symbol: class BundleTransferReceipt
location: class DTN2Events.ParserHandler
src\core\DTN2Manager.java:71: error: cannot find symbol
DTN2Manager.CLAs = new HashMap<DTNHost, CLAParser>();
^
symbol: class CLAParser
location: class DTN2Manager
src\core\DTN2Manager.java:73: error: cannot find symbol
DTN2Manager.bundles = new HashMap<String, Bundle>();
^
symbol: class Bundle
location: class DTN2Manager
src\core\DTN2Manager.java:129: error: cannot find symbol
CLAParser p;
^
symbol: class CLAParser
location: class DTN2Manager
src\core\DTN2Manager.java:130: error: cannot find symbol
p = new CLAParser(dtnd_host, dtnd_port, "ONE");
^
symbol: class CLAParser
location: class DTN2Manager
src\report\DTN2Reporter.java:74: error: cannot find symbol
CLAParser p = DTN2Manager.getParser(to);
^
symbol: class CLAParser
location: class DTN2Reporter
src\input\DTN2Events.java:52: error: cannot find symbol
this.bundle_list = new HashMap<String, Bundle>();
^
symbol: class Bundle
location: class DTN2Events
src\input\DTN2Events.java:95: error: package CLAInterface does not exist
CLAInterface.BundleTransferReceipt r =
^
src\input\DTN2Events.java:96: error: package CLAInterface does not exist
new CLAInterface.BundleTransferReceipt();
^
src\input\DTN2Events.java:129: error: cannot find symbol
Bundle bundle = new Bundle(new_f);
^
symbol: class Bundle
location: class DTN2Events.ParserHandler
Bundle bundle = new Bundle(new_f);
^
symbol: class Bundle
location: class DTN2Events.ParserHandler
src\input\DTN2Events.java:169: error: cannot find symbol
this.console = new DTNConsoleConnection(this.c_host, this.c_port);
^
symbol: class DTNConsoleConnection
location: class DTN2Events.ParserHandler
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: src\gui\InfoPanel.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
31 errors
C:\Users\Faris\Desktop\lora\the-one>IF NOT EXIST "target\gui\buttonGraphics" (
mkdir target\gui\buttonGraphics
copy src\gui\buttonGraphics\* target\gui\buttonGraphics\
)
Thanks 🙂
Is the ONE 1.6.0 include proactive and reactive fragmentation?
Got this error when executed sh compile.bat ob ubuntu
error: option -extdirs not allowed with target 11
Then i saw some issues where it was recommended to change -extdirs to -cp
then i got errors compiling.
Add support to kibibytes (1024 bytes), mebibyte (2^20 bytes), gibibyte (2^30 bytes) as information units.
The suffixes could be KiB, MiB, and GiB.
Another nice feature would be StandardEventsReader supporting the new and already existing units (k, M and G).
Examples:
10 C 1 4 6 1k
would create a message with 1000 bytes.
10 C 1 4 6 1kiB
would create a message with 1024 bytes.
MovementListener.initialLocation()
never gets called.
The reason seems to be that the listeners are invoked in the DTNHost
constructor, but at that time the report modules have not yet been created so there are no listeners to invoke (see DTNSimUI.initModel()
).
Report
subclass that implements MovementListener
.initialLocation()
.TNSim
Error: Could not find or load main class core.DTNSim
So, why does the counter for interfaces of the DTNHost getter getInterface(int interfaceNo)
start at 1?
This is super confusing and lead to quite a few errors for me already. Where was this used so far?
I have encountered an issue when running simulations for MaxPropRouter with 500 nodes in the simulator for 21600s or more. The simulation runs for a couple of seconds and then causes following error:
Simulator was able to run MaxPropRouter simulations with 100 nodes over 10800s (3h) , 21600s (6h) and 43200s (12h). I use MapBasedMovement and ShortesPathMapBasedMovement as moving models and MaxPropRouter.probSetMaxSize = 15 as only setting for this router model.
I have tried increasing the JVM memory to 1G in "java -Xmx1024M -cp target:lib/ECLA.jar:lib/DTNConsoleConnection.jar core.DTNSim $*", but the result was the same. Neither did affect anything changing the value of probSetMaxSize in range from 5 to 50.
Simulator works fine for the rest of the protocols (Epidemic, Prophet, etc.).
At this point I have no idea how to address this problem.
P.S. simulations executed on Mac OS and Linux.
Hello Sir,
When i am executing the ProphetV2Router file its show the Error :
D:\the-one-1.6.0>java -Xmx512M -cp .;lib/ECLA.jar;lib/DTNConsoleConnection.jar core.DTNSim
Can't start: error in configuration file(s)
Can't find setting 'ProphetV2Router.secondsInTimeUnit'
Please help me to resolve the error.
Hi, I want to find utility value for messages and also node. Do you know about how to do that?
We developed a new mobility model for large-scale natural disasters which was published in the ACM MSWiM 2017 conference. The code including a reference to our paper is available here:
Unless there is demand from the repository maintainers, I will not make the effort to create a pull request.
When i run natural-disaster-mobility, it shows
**
"found: java.lang.string"
"required: int"
"switch(role)"
**
Please solve the issue and guide me.
Thanks
Hello,
I downloaded the The ONE v1.6.0 on my win10 laptop. for some reason is it not able to unzip the files! also i have tried to download the old 1.4 version and there is issues with the compiling and when i doe compile. bat on the CLI, it just dissapears without starting the ONE platform! , it keep saying could not find the file ! i have followed all the steps for downloading. please need help with that. thanks
Would be useful to add Travis Continuous Integration (https://travis-ci.org/) support for the ONE repository. However, which build system should we use as default? Maven? Ant? Gradle?
the exception:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/local/java/jdk1.8.0_152/jre/lib/amd64/libawt_xawt.so: libXrender.so.1: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at java.awt.Toolkit$3.run(Toolkit.java:1636)
at java.awt.Toolkit$3.run(Toolkit.java:1634)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1633)
at java.awt.Toolkit.(Toolkit.java:1668)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1296)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348)
at gui.DTNSimGUI.startGUI(DTNSimGUI.java:38)
at gui.DTNSimGUI.runSim(DTNSimGUI.java:101)
at ui.DTNSimUI.start(DTNSimUI.java:77)
at core.DTNSim.main(DTNSim.java:92)
I want to adjust the scale of the map. Kindly tell me how it is done.
我正在用ONE实现路由协议,我使用的是带坐标位置的外部数据集,数据集中不包含up和down的信息,ONE支持吗?我看到ONE上是可以导入带有地理位置的数据集的,那么节点间什么时候相遇该怎么知道呢,如果是不含地理位置的数据集,里面是包含连接up和down,但是带有地理位置的数据集是不含这个信息的,那么怎么来判断相遇呢,是在什么类文件中有设置通信范围这样的设置吗? 我看到有个ExternalMovement.java和ExternalMovementReader.java,感觉ONE是支持这样的数据集的,但是这样的数据集还需要在节点间建立连接吗?怎么判断节点间相遇了呢?我的理解是我把数据集整理成输入格式的要求,然后是不是在配置文件里用一下就可以了呢,但是这样怎么建立连接呢?
我看到有个ExternalMovement.java和ExternalMovementReader.java,和这两个类也有关吧?ExternalMovement.java中有reader = new ExternalMovementReader(inputFileName);我把整理好的数据集放在根目录下然后把文件名字输入到inputFileName,然后ExternalMovement是在什么地方会被用到其中的方法呢?
I am a student and want to use the-one to implement a routing protocol. I want to use external data set with geographic coordinates.I find the-one support it.But I have some questions about it. So I am writing here to seek some help from you, and I will be appreciated if you could tell me some details of my questions.here are my questions:1)Do I need to establish a connection between nodes? and how to establish a connection or how to judge node meet the other? I am looking forward to your reply.thank you.
Hi! I will really appreciate your help in solving the following problem:
After downloading the ONE 1.6.0 , when I tried compile.bat and one.bat commands from the command prompt got the following error messages-(jdk10.0.1 and jre 10.0.1 are successfully installed and tested in the computer)
1.
H:\the-one-1.6.0>compile.bat
H:\the-one-1.6.0>javac -extdirs lib/ core/*.java
javac: option -extdirs not allowed with target 1.10
H:\the-one-1.6.0>javac -extdirs lib/ movement/*.java
javac: option -extdirs not allowed with target 1.10
............
2.
H:\the-one-1.6.0>one.bat
H:\the-one-1.6.0>java -Xmx512M -cp .;lib/ECLA.jar;lib/DTNConsoleConnection.jar core.DTNSim
Error: Could not find or load main class core.DTNSim
Caused by: java.lang.ClassNotFoundException: core.DTNSim
Thanks in advance.
-Anika
how to transfer GPS trace to the format The ONE can process? such as follows:
351;2014-02-01 00:00:04.487352+01;POINT(41.9100508227258 12.4966092132391)
thanks for answer
Hello Sir,
When I set three groups of nodes all use RandomWayPoint movement model, how can I set different area for nodes to move in for different group.
Please help me to solve the preblom.
I am going to simulate The One Simulator using data set. Where to insert data set in One Simulator.
The default config file has worldSize set to 4500 by 3400 (meters). However, the actual size of the corresponding street map of Helsinki, as specified in your ICST '09 paper (http://ai2-s2-pdfs.s3.amazonaws.com/904d/bf0173ad1ad4e718d77d142476cfd9430193.pdf), should be about 8300 by 7300 meters.
If I want to use the simulator, what is the correct setting/size of the simulated world?
Setting a different worldSize in config file will not resize the street map correspondingly -- the map (blue lines on white) still looks like 4500 by 3400 in GUI, and all nodes are on streets.
By the way, both the default setting and the paper says simulated cars run at 10-50 km/h, so I assume the unit used in the ONE is actually meter.
it's no clear which parameters i need to write in the config file to trigger an MessageDeleteEvent.
i have tried ::
Events2.class = MessageDeleteEvent
Events2.interval = 10
Events2.size = 500k
Events2.hosts = 2,3
Events2.id=*
but i'm geting :
Can't start: error in configuration file(s)
Class 'input.MessageDeleteEvent' doesn't have a suitable constructor
some HELP?
If the value of "probGoShoppingAfterWork" is low or "maxGroupSize" is high relative to "nrofHosts" in a group - we end up with nodes that do not return from shopping ;-)
Following is the suggest fix - please feel free to adapt as per your coding conventions.
Note updated the logic issue in my suggested fix on 20th April. Attaching the modified file as well. This may be a short term fix - actual fix may be needed from multiple other files.
--- a/src/movement/EveningActivityMovement.java
+++ b/src/movement/EveningActivityMovement.java
< import core.SimClock;
63d61
< private long nodeJoinFixTime =0; // ABHISHEK FIX
192d189
< nodeJoinFixTime = SimClock.getIntTime(); // ABHISHEK FIX
240,244d236
< long printCount =0;
< /* Abhishek - if the quorum is not being met - some times the evening
< * activity may block in non-ready mode
< * Because of randomization - on small group we may never have quorum
< /
249,264d240
< // ABHISHEK FIX - node join fix time
< if(ready)
< return true;
< double timeDelta = SimClock.getIntTime() - nodeJoinFixTime;
< if(timeDelta > 4 maxWaitTime){
< System.err.println("ABHISHEK FIX FINAL- too long a wait - aborting full list: full-check" + trip.isFull() +
< " allPresent:" + trip.allMembersPresent() + " last join time:" + nodeJoinFixTime);
< ready = true;
<
< } else if(timeDelta > maxWaitTime ){
< printCount++;
< if(printCount < 10 || printCount % 10000==0){
< System.err.println("ABHISHEK FIX AA- too long a wait - aborting full list: full-check" + trip.isFull() +
< " allPresent:" + trip.allMembersPresent() + " last join time:" + nodeJoinFixTime);
< }
< }
The simulation GUI crashes if a node has no interface specified.
Exception in thread "AWT-EventQueue-0" core.SimError: No such interface: 1 at x0
at core.DTNHost.getInterface(DTNHost.java:269)
at core.DTNHost.isRadioActive(DTNHost.java:122)
at gui.playfield.NodeGraphic.drawHost(NodeGraphic.java:71)
at gui.playfield.NodeGraphic.draw(NodeGraphic.java:47)
at gui.playfield.PlayField.paint(PlayField.java:195)
Scenario.name = MyScenario
Scenario.endTime = 600
Scenario.updateInterval = 0.1
Scenario.simulateConnections = false
MovementModel.worldSize = 1000,1000
Report.nrofReports = 0
Events.nrof = 0
Scenario.nrofHostGroups = 1
Group1.groupID = x
Group1.nrofHosts = 1
Group1.nrofInterfaces = 0
Group1.movementModel = RandomWalk
Group1.router = PassiveRouter
The node is drawn without a radio range, or exception is thrown before launching the simulation.
I know we are all consenting adults here, but I really think it would be easier to understand, particularly for beginners, the use of names to configure sendQueue.
Thus,
FIFO
fifo
FiFO
fIFO
...
would be mapped to 2
and Random (and variations) would be mapped to 1.
It is a cosmetic modification but I think it would improve the user experience.
i'm trying to run a simulation on your platform.
but i'm strangling to understand how to i determine the starting position of an host.
In Message.java
, the function void copyFrom(Message m)
copies propeties
as
if (m.properties != null) { Set<String> keys = m.properties.keySet(); for (String key : keys) { updateProperty(key, m.getProperty(key)); } }
which add a reference to propeties
of the original message instead of a clone of it when a property is such as List<Integer>
.
Dear community,
If I understand the code correctly, the tryMessagesToConnections() method in the ActiveRouter class returns once the first message has been transferred. The result is that only one message can be transferred in each simulation step for each node.
This leads to problems in my current simulations because I have a large network with many nodes communicating with one central node. Due to the behavior described above, the central node gets highly congested as the number of messages is in the order of magnitude of the simulation steps. I understand, that I could circumvent this issue by lowering the updateInterval, but this slows down the simulation considerably. Hence this is not a feasible solution for me.
Instead, my suggestion is to change the behavior of the tryMessagesToConnections() method to evaluate the updateInterval and the speed of the connection as well as the sizes of the messages sent. Then it could send as many messages in that interval as are theoretically possible to be sent within the respective simulation slot.
As this might change the simulation results rather severely in some cases, I would like to get some feedback to this before issuing a pull request. Does anyone share my opinion that the suggested behavior would be more realistic and thus suitable to be implemented in the ONE?
Cheers,
Keno
Why the PROPHETrouter GAMMA is static?
Why 0.98?
my opinion is that it is related to the speed of hosts.
I think GAMMA is a variable.
Hi,
send queueing and drop queueing are wide researched in DTNs.
IMO it would be helpful and promising, facilitate the development of new send and drop policies for ONE. I think the implementation would be similar to the implementation used in Reports. That is trough the use of reflections.
If you agree, I could dedicate myself to developing and the modifications could be released in a new major version.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.