Changes Report

Release History

Version Date Description
3.03.09 2019-05-30 Extent calculation, InputParameters, distributions
3.03.08 2019-05-10 InputParameters checks for min/max repaired
3.03.07 2019-05-01 DEVSRealTimeClock animation 'jumps' repaired
3.03.06 2019-04-19 DelegateIntrospection, Map and Immutable introspection
3.03.05 2019-01-18 TabbedParameterDialog
3.03.04 2019-01-17 djutils version, copyright
3.03.03 2019-01-15 dsol-swing, dsol-web, dsol-demo
3.03.02 2019-01-03 Statistics, dsol-demo, manual
3.03.01 2018-12-08 CategoryLogger
3.03.00 2018-11-17 Major refactoring, dsol-web and dsol-animation
3.02.05 2018-09-30 Javadoc cleaned up
3.02.04 2018-09-29 Simulator events more logical; more non-final methods
3.02.03 2018-09-23 Added CategoryLogger and SimLogger
3.02.02 2018-09-15 Replaced log4j2 with tinylog
3.02.01 2018-09-09 Solved NPE in animation; documentation updated
3.02.00 2018-09-08 DJUNITS time units for the Simulator classes
3.01.06 2017-04-30 dsol-demo repaired and added to project
3.01.05 2017-04-17 Unique id of AbstractSimEvent repaired
3.01.04 2017-01-26 dsol-swing: Renderable2D, map layers
3.01.03 2017-01-14 Renderable2D
3.01.02 2016-12-11 Immutable collections, toggling of layers in AnimationPanel
3.01.01 2016-10-23 Throw class extended
3.01.00 2016-10-16 dsol-base project split, log4j instead of logger
3.00.21 2016-09-12 Simulators with and without firing certain events
3.00.20 2016-04-21 Animation classes updated, interface names simplified
3.00.19 2016-03-28 Extra method in DEVSSimulator, zooming and (x,y) in swing
3.00.18 2015-12-13 DEVSRealTimeClock improved thread-safety
3.00.17 2015-11-30 ESRI user-defined transformation
3.00.16 2015-11-30 Added dsol-akka project, javadoc cleanup
3.00.15 2015-09-27 Improved website for docs
3.00.14 2015-07-05 ClassUtil and Renderable2D repaired
3.00.13 2015-07-05 jdepend and javancss code metric tools added
3.00.12 2015-06-22 Context, Replication, and cleaning up memory
3.00.11 2015-06-18 DSOLPanel, GridPanel changed
3.00.10 2015-05-20 Cobertura added, runUpTo method, GridPanel changed
3.00.09 2015-05-01 ESDEVS package extended
3.00.08 2015-05-01 AtomicModel.initialize() method allows re-initialization
3.00.07 2015-04-29 DEVSRealTimeClock added
3.00.06 2015-04-26 Rollbackable random stream
3.00.05 2015-04-23 ESDEVS additions
3.00.04 2015-04-22 Easy access classes updated and extended
3.00.03 2014-09-14 Textual changes, small bugs, omissions
3.00.02 2014-09-05 valueOf() method replaces new Integer()
3.00.01 2014-08-12 SimTime and Animator classes
3.00.00 2014-08-09 New version 3.00 release of DSOL

Release 3.03.09 – 2019-05-30

Type Changes By
Fix The calculation of the extent of the animation assumed zero-based coordinates for the calculation of a small area around the total animation picture. This has been replaced by a relative area. averbraeck
Add InputParameters can be parsed from a text file or from program arguments (using key.sub=value). averbraeck
Add Added unit tests for language.d2 and inputparameters in dsol-base. averbraeck
Remove Removed the utility class DirectionalShape from language.d2 in dsol-base. The functionality is well taken care of by the standard Java classes. averbraeck
Update djunits version updated to 3.01.04 to allow for value-with-unit parsing of strings. averbraeck
Fix Repaired errors with null values in the CollectionRenderer in dsol-swing. toString() is not called anymore for null values; instead "null" is given as output. averbraeck
Add All distribution functions have getters for their parameters. averbraeck
Add The truncated Normal distribution function has been added. averbraeck
Update Uniform and Triangular distribution functions have been given more clear parameter names. averbraeck
Fix The triangular distribution now allows for min == mode, or max == mode but not both. averbraeck
Update dsol-web has been expanded with further functions. It is now possible to run and view multiple simulations in parallel by using a token in the web address that uniquely identifies the simulation session. See AbstractTestDemoServer as a first version in dsol-web. averbraeck
Add dsol-web allows for reading of the InputParameters from a web page. averbraeck

Release 3.03.08 – 2019-05-10

Type Changes By
Fix The InputParameterDouble and InputParameterFloat did not check for NaN. This has been repaired. The InputParameyterDoubleScalar and InputParameyterFloatScalar checked for the min/max values in the double/float rather than in the SI values including the unit. This has been repaired. averbraeck
Update DJUTILS has been updated to version 1.00.06. This resulted in several imports for the Cat class for logging to be changed. averbraeck

Release 3.03.07 – 2019-05-01

Type Changes By
Fix The 'jumps' that sometimes occurred in the animation of the DEVSRealTimeClock have been repaired. This was due to an accumulating error in the translation of short waits when no events were happening, which was corrected with a time jump when the next event was executed. The code that is responsible for handling this correctly is:
// make a small time step for the animation during wallclock waiting, but never beyond the next event
// time. Changed 2019-04-30: this is now recalculated based on latest system time after the 'sleep'.
synchronized (super.semaphore)
    A nextEventSimTime = nextEvent.getAbsoluteExecutionTime().get();
    R deltaToWall0inSimTime = simulatorTimeForWallClockMillis(
            (System.currentTimeMillis() - wallTime0) * currentSpeedFactor);
    A currentWallSimTime =;
    if (nextEventSimTime.compareTo(currentWallSimTime) < 0)
        wallMillisNextEventSinceBaseline = 0.0; // force breakout of the loop
Add The DEVSRealTimeClock got an extra setting: public void setAnimation(final boolean animation). This setting indicates whether the animation thread will be started or not. For Web-based applications, the simulation has to be scaled to the real-time clock, but the animation events do not come from the separate AnimationThread, but from a timer in the Web application. In tat case setAnimation(false) can be called on the DEVSRealTimeClock after constructing it. averbraeck
Fix A 'ConcurrentModificationException' on the visibilityMap in the AnimationPanel in dsol-swing has been repaired with a 'synchronized' block for its use. The main program thread was still setting the visibility of the classes, while the first animation was already iterating over the visibility to see which classes need to be drawn on the screen. averbraeck
Fix The AnimationThread corrects the time between animation updates for the time it takes to draw the animation. It thereby tries to stay as close as possible to the given update frequency. averbraeck

Release 3.03.06 – 2019-04-19

Type Changes By
Add Introspection for Map, ImmutableCollection, and ImmutableMap added. averbraeck
Add The DelegateIntrospection has been added to introspection. When an object implements the DelegateIntrospection interface, it delegates the introspection to it parent. The implementation has been set up that multiple delegations are handled correctly. The function is to provide intermediate animation objects the option to delegate the introspection to their parent object. averbraeck

Release 3.03.05 – 2019-01-18

Type Changes By
Update TabbedParameterDialog in ots-swing made better accessible for extensions with user-built fields, e.g. for radio buttons (see dsol manual - advanced topics). averbraeck

Release 3.03.04 – 2019-01-17

Type Changes By
Update djutils version updated to 1.00.02. averbraeck
Update Copyright notice updated to 2019. averbraeck

Release 3.03.03 – 2019-01-15

Type Changes By
Fix AnimationPanel.visibilityMap changed into a synchronized map to avoid ConcurrentModificationException on the call of isShowClass(). averbraeck
Update TabbedParameterDialog updated to be able to easily extend it with different renderings for the data types. averbraeck
Fix The recursive call of drawGrid() in dsol-swing's gridPanel has been replaced by a while-loop. The recursive version sometimes led to an infinite loop. averbraeck

Release 3.03.02 – 2019-01-03

Type Changes By
Remove The XML-parsing has been removed from the dsol-demo project. Instead, interactive applications and applications using the console or the Web have been created. averbraeck
Add The site contains a reference to the new DSOL manual at averbraeck
Update The SimCounter, SimTally and SimPersistent have easy access inner classes such as SimTally.TimeDoubleUnit to link them strongly typed to the right simulator. averbraeck
Update The SimPersistent class now handles SimTime objects for the timestamp. averbraeck
Update The Persistent class can now also handle Calendar objects for the timestamp. averbraeck
Update The simulator-aware versions of the Counter, Tally and Persistent have been renamed into SimCounter, SimTally and SimPersistent, to avoid having classes with exactly the same name within the dsol-core project, which has always been very confusing. averbraeck
Update The interface for the InputParameter now forces each parameter to return a getCalculatedValue() in addition to the getValue(). This is important, as for the typed selection functions using a map, the getValue() returns the map (the value of that parameter), whereas getCalculatedValue() returns the value that can be calculated from the map. This is particularly important for the distribution functions. To enable this and to make it type-safe, the InputParameter interface got one extra generic to denote the 'calculated' type. averbraeck
Update The Replication in dsol-core defines a default random stream using a MersenneTwister with the name "default" and a seed equal to the hashCode of the Replication's id. averbraeck
Update The Replication in dsol-core now has an id, and requests the id to be used in the constructor. The id can be of type String or of type int. averbraeck

Release 3.03.01 – 2018-12-08

Type Changes By
Update The DSOL categories for the CategoryLogger in DJUTILS have been added to dsol-base into the nl.tudelft.simulation.dsol.logger package. averbraeck

Release 3.03.00 – 2018-11-17

Type Changes By
Update Generic classes to multiple projects have been moved to the DJUTILS project. Examples are the immutable collections, the Throw class, URLResource, Primitive, ClassUtil, and the CategoryLogger for tinylog. See for more info. averbraeck
Add Distribution functions for scalars with units have been added. They wrap one of the existing (continuous) distributions. Example:
DistContinuousLength lengthDist = new DistContinuousLength(
    new DistUniform(stream, 1.0, 2.0), LengthUnit.METER);
  Length length = lengthDist.draw();
Update Because of the distribution functions with scalars, the existing distribution class DistContinuousTime has been renamed into DistContinuousSimulationTime. averbraeck
Update The ExperimentalFrame, Experiment, Replication and Treatment classes have been provided with generics to make them compatible with the type of time used, and the type of simulator used. Easy access classes for the 8 most common types of simulation time have been provided. averbraeck
Add Since version 3.03 of DSOL, models have specified input parameters. These can be shown on the screen for user input, set by reading them from a file, or set in the user code of the model itself. The input parameters are stored a SortedMap. Each input parameter has a key (a String without spaces and periods) and a value. Sorting of the input parameters is done based on a priority variable, currently implemented as a double (making it easy to insert a parameter between parameter #3 with a priority 3 and parameter #4 with a priority 4 by giving it a priority value of e.g., 3.5). averbraeck
Update The DSOLModel interface has convenience methods for the extension classes. So it is now possible to use e.g.:
    public SimulatorInterface.TimeDouble getSimulator()
Add A class AbstractDSOLModel to easily create a model has been added, together with easy access inner classes. The AbstractDSOLModel contains fields and access methods for the simulator, input parameters, and output statistics. It extends EventProducer to provide statistics to the statistics classes. averbraeck
Update The DSOLModel interface has been moved to the nl.tudelft.simulation.dsol.model package. averbraeck
Update The ExperimentParser has been moved to the dsol-demo project as it is only used there. Potentially a dsol-experiment project could be created at some point in time with an improved version of the xml parsing classes. averbraeck
Update The double entries of the classes 'BoxAndWhiskerChart', 'Histogram' and 'XYChart' have been removed. The classes have been combined into one new class, as they only differed in terms of the constructors. averbraeck
Update The package names of the swing implementation of the UI have been renamed to contain the word 'swing'. averbraeck
Add In order to accommodate the dsol-web implementation, the dsol-swing project has been split into a dsol-animation project with the implementation-independent animation classes and a dsol-swing package with the swing-dependent implementation of the user interface and animation. dol-web contains the Web-specific implementation of the animation and user interface. averbraeck
Add The ParamComments utility class has been added to the dsol-build-tools project. It adds or updates the type for each parameter in the javadoc of all java files in /src/main/java in all or in selected projects in the workspace. After running the utility, do a refresh on all projects, followed by a Source - Format. averbraeck
Fix The .classpath files have a classpathentry for /src/main/resources after a Maven Update with an entry 'excluding="**" kind="src"'. The exclusion means that the export of a Runnable jar in Eclipse does not work. Therefore this update on svn ensures that the export of a jar file works. Ensure that after each Maven Update in Eclipse, the "Excludes:" entry for /src/main/resources in each project's Properties - Build path - Source is set to (None) before committing the sources! averbraeck
Add A small program called CleanClassfileFiles has been added to dsol-build-tools to help in setting the exclusions correctly in the build path. After running this program, do a Project - Clean - All. averbraeck
Update Several experiments with server-side events (SSE), WebSockets, Ajax/jQuery in dsol-web to see what the best implementation is for the web-based interaction with DSOL models. averbraeck

Release 3.02.05 – 2018-09-30

Type Changes By
Update dsol-naming, dsol-event, dsol-interpreter, dsol-introspection were updated with the correct copyright notice and files for each of the packages. averbraeck
Update The references to in dsol-interpreter have been updated to the SE8 JVM Specification at averbraeck

Release 3.02.04 – 2018-09-29

Type Changes By
Fix The END_REPLICATION_EVENT was fired twice. Therefore, a special endReplication() method has been implemented that just takes care of the end of the replication. averbraeck
Fix The TIME_CHANGED_EVENT of the DEVSSimulator fired at each event, and acted more as a state changed event. Now, the TIME_CHANGED_EVENT only fires when the time did actually change. averbraeck
Update Deleted the dsol-fx project; animation with be done with dsol-swing and dsol-web. averbraeck
Update dsol-base and dsol-core were updated with the correct copyright notice and files for each of the packages. averbraeck
Add The SimTime classes got two extra methods: A getAbsoluteZero() and R getRelativeZero(). Method diff(A) has been added. T.diff(A) returns R. averbraeck
Update The methods T.minus(A):R and T.minus(T):R have been renamed to T.diff(A):R and T.diff(T):R, because the erasure of T.minus(A) and T.minus(R) is the same for the SimTimeDouble, SimTimeFloat and SimTimeLong classes. averbraeck
Update The DEVS classes in dsol-core have been expanded with generics with respect to SimTime. averbraeck
Update The flow classes in dsol-core have been expanded with generics with respect to SimTime. averbraeck
Add The AnimationPanel in dsol-swing has an extra method called isShowClass(final Class locatableClass); averbraeck
Update Most of the methods in the AnimationPanel class in dsol-swing have been declared as non-final. averbraeck
Update The paint() method in Renderable2D in dsol-swing has been declared as non-final. averbraeck
Update The InputListener in the animation.D2.mouse package in dsol-swing does not select an object when the CTRL-key is pressed during a click on the object. averbraeck

Release 3.02.03 – 2018-09-23

Type Changes By
Add A CategoryLogger has been added to the logger package in dsol-base. For the CategoryLogger it is possible to turn categories on and off for display, enabling fine-grained debugging and reporting. CategoryLogger uses tinylog's Logger for the actual logging work. averbraeck
Add A SimLogger has been added to the logger package in dsol-core. The SimLogger extends the CategoryLogger and is able to display the simulation time as part of the log message. A SimTimeFormatter class determines how the message with time is formatted. averbraeck
Update All calls to printStackTrace() and to older loggers has been replaced by calls to the CategoryLogger (in dsol-base, dsol-event, dsol-naming, dsol-interpreter, dsol-introspection), or to the SimLogger (in dsol-core, dsol-swing, dsol-web, dsol-demo). averbraeck

Release 3.02.02 – 2018-09-15

Type Changes By
Update As log4j2 is quite complicated to configure, it has been replaced by the faster and smaller tinylog package. averbraeck
Fix The Console in dsol-swing has been repaired so it captures the log stream again. This is done with a second logging Writer that acts in parallel with the system console writer. Levels and message format strings can be set separately for the system console logger and the swing console logger. Level and message format can be changed with console.setLogLevel(...) and console.setLogMessageFormat(...). averbraeck
Add In order to support logging to the console, the DSOLPanel got a getConsole() method. averbraeck
Add The text colors on the Console in dsol-swing are adapted for the Logger.level. averbraeck
Add Static helper class ConsoleLogger has been added to easily set or change the logging level and format for the system console logger. Call first with ConsoleLogger.create(), and do this before any other (parallel) loggers have been created, such as the swing logger. Level and message format can be changed with ConsoleLogger.setLevel(...) and ConsoleLogger.setMessageFormat(...). averbraeck

Release 3.02.01 – 2018-09-09

Type Changes By
Fix The documentation has been repaired. Several links were not working. some inheritance is used in the site.xml file. The site.vm files for Doxia have been updated to the latest version. Included a relativizeDecorationLinks option set to false in the section in the pom file to properly render the menus in the site (absolute paths instead of relative ones). averbraeck
Fix The ImageRenderable in dsol-swing gave a NullPointerException when loading the image. An extra check has been built in. averbraeck
Add SimEventInterface and LambdaSimEvent got easy access classes for the different types of clocks. averbraeck

Release 3.02.00 – 2018-09-08

Type Changes By
Add The SimEvent got easy access classes. So you can now, e.g., construct a SimEvent.TimeDouble that takes a double as the execution time. averbraeck
Update The "easy access" constructors of Treatment and Replication now take parameters in absolute and relative time units rather than SimTime. So a new Treatment.TimeDoubleUnit takes as parameters: (Time startTime, Duration warmupPeriod, Duration runLength). This is a lot more clear than using SimTime wrappers. The general Treatment and Replication constructors still needs a SimTime. Extra methods getStartSimTime(), getWarmupSimTime() and getEndSimTime() have been added to the Treatment in case the wrapper object are needed, e.g., for comparison or adding/subtracting durations. averbraeck
Update Simulator.getSimulatorTime() returns the absolute time A rather than the SimTime T. This makes coding a lot easier, as the wrapper T is only used to implement the internals of adding and subtracting absolute and relative simulation times, but should actually never be exposed to the user, unless the user is really interested in the wrapper. For this, the method Simulator.getSimTime() has been implemented, which returns a SimTime object. averbraeck
Fix Utilization in dsol-core now uses generics for time. averbraeck
Update The Simulator classes do not use the internal TimeUnit classes anymore. Instead, the Time and Duration from DJUNITS have been used. This holds for the TimeDoubleUnit, TimeFloatUnit, CalendarDouble and CalendarFloat. TimeLongUnit has been removed, as it did not really make sense how it was implemented. CalendarLong uses a relative Long to indicate time in milliseconds. averbraeck
Update Most of the Model and Simulator methods and constructors do not throw RemoteExceptions anymore. RemoteExceptions are only thrown for the Listeners and Context (for the animation), as both of these are expected to be Remote sometimes. This means that statistics like Tally, Persistent, and Counter throw RemoteExceptions on construction and adding series, as these are dependent on (possibly remote) events. averbraeck
Fix The ImmutableCollections have been updated to avoid accepting a List in the constructor of an ImmutableSet when the copyOrWrap is Immutable.WRAP. The size() of the original List and the ImmutableSet were different in case of duplicates in the List, which was terribly confusing. Therefore, accepting a Collection should always lead to a COPY, whereas a 'compatible' Collection can use the WRAP. In addition, wrapping has become a lot more strict. An ImmutableSortedMap wraps only a SortedMap, whereas an ImmutableHashMap wraps a Map. Originally, they could wrap each other, leading to incompatibilities. The same holds for Lists and Sets. averbraeck
Update Updated all maven dependencies and libraries to their latest version in the dsol pom-file. averbraeck
Add StateSaver class included in dsol-base. dsol-core is now not dependent anymore on xstream to do state-save and state-retrieve for rollback. averbraeck

Release 3.01.06 – 2017-04-30

Type Changes By
Add The dsol-demo project has been repaired and is from now on again a formal part of the dsol framework. averbraeck
Update Renderable2D.contains() method is made non-final to allow returning false for non-clickable animation items. averbraeck
Add Added GISRenderable2D constructor with a z-value. averbraeck
Add Added setBackground(boolean) method in GIS Map. averbraeck

Release 3.01.05 – 2017-04-17

Type Changes By
Fix When parallel threads constructed a SimEvent, the uniqueness of the id was not guaranteed. An AtomicLong solves this problem. averbraeck

Release 3.01.04 – 2017-01-26

Type Changes By
Update Renderable2D and derived classes can now specify the Locatable as their source. averbraeck
Update Data that is shown on the screen is not clickable for viewing or displaying. averbraeck
Add The ESRI Map can return the layers as a Map from String (name) to Layer. averbraeck
Add The layers in the ESRI Map can be toggled on or off with the showLayer and the hideLayer methods. averbraeck
Fix Repaired bug for caching of shape-file content for an extent. averbraeck

Release 3.01.03 – 2017-01-14

Type Changes By
Update Renderable2D.destroy() has been made non-final so it can be overridden. averbraeck
Update A Renderable2D can be added or removed from within the paint() method. This is, however, not really advisable, as this will only be done when the object is visible on the screen. averbraeck
Add Default log4j-2 configuration file added to dsol-base. averbraeck

Release 3.01.02 – 2016-12-11

Type Changes By
Add The ImmutableCollections from opentrafficsim have been added to dsol-base. averbraeck
Update The AnimationPanel supports showing and hiding of layers, based on the class of the Locatable object. averbraeck
Update DSOL is now compiled with Java version 1.8. averbraeck

Release 3.01.01 – 2016-10-23

Type Changes By
Update The Throw class now also is able to return an object (its first parameter) to allow for its use in a super(...) call. averbraeck

Release 3.01.00 – 2016-10-16

Type Changes By
Add A Throw class with Throw.throw(condition, ...) and Throw.whenNull(object, ...) has been added to dsol-base to easily check pre- and post-conditions in constructors and methods. averbraeck
Update The dsol-base project is split into dsol-base, dsol-interpreter, dsol-introspection, dsol-event and dsol-naming. averbraeck
Update The internal dsol logger is retired and replaced by the log4j version 2 logger. averbraeck
Add The DEVSSimulatorInterface.scheduleXXX methods now return the event that they have scheduled. This enables the user to easily store the event for later cancellation. averbraeck
Fix Timed events report the time as the absolute time rather than as the time wrapper. averbraeck
Fix Statistical events sent by Persistent made different from those by Tally. The events within dsol-core are now timed events. averbraeck

Release 3.00.21 – 2016-09-12

Type Changes By
Update DEVSRealTimeClock can fire CHANGE_SPEED_FACTOR_EVENT. averbraeck
Update Simulator can start() without firing event. averbraeck
Update Simulator can stop() without firing event. averbraeck
Update Simulator can step() without firing event. averbraeck

Release 3.00.20 – 2016-04-21

Type Changes By
Fix GisRenderable2D uses a self-generated unique id to identify itself in the Context. This avoids problems with Locatable objects that don't have a unique toString() result and therefore could not be distinguished. averbraeck
Update Renamed LocatableInterface to Locatable. averbraeck
Update Renamed ModelInterface to DSOLModel. averbraeck
Add Added a Identifiable to identify instances with a getId() method. Subclasses Long and String have been created as well. averbraeck

Release 3.00.19 – 2016-03-28

Type Changes By
Add Added the method 'runUpToAndIncluding' in the DEVSSimulatorInterface and implemented the method in all classes that implement this interface. averbraeck
Fix In the dsol-swing project, changed the zoom with the scroll wheel to scroll around the cursor. The zoom with the plus and minus keys still zoom around the center position of the window. averbraeck
Add x and y positions of the mouse in world coordinates are shown with a tooltip. The tooltip can be switched on and off. averbraeck
Add x and y positions of the mouse in world coordinates can be requested with a method to show elsewhere on the control panel of a simulation. averbraeck
Fix In the dsol-swing project, ensured in the introspection package that no errors will be given when the source has been deleted. averbraeck
Add In the dsol-swing project, created a method to zoom to the entire animation, and a public callable method to zoom to the whole extent as well as to set the default extent. averbraeck
Fix In the dsol-swing project, fixed a small error in computeVisibleExtent(...) that caused extent zoom actions to be off sometimes. averbraeck

Release 3.00.18 – 2015-12-13

Type Changes By
Fix Improved the thread-safety of the DEVSRealTimeClock. averbraeck
Fix Improved the alignment of the DEVSRealTimeClock with the wall-clock. averbraeck

Release 3.00.17 – 2015-11-30

Type Changes By
Add ESRI shape files can be parsed with a user-defined transformation. The old constructors have been kept, so they can also be parsed as before. averbraeck

Release 3.00.16 – 2015-11-30

Type Changes By
Add Added the dsol-akka project. Still empty, just as a reference for future developments. averbraeck
Fix Cleaned up a lot of the outdated javadoc. averbraeck

Release 3.00.15 – 2015-09-27

Type Changes By
Update Site generation has been updated. All DSOL projects now have a site with an adapted Velocity template and CSS updates. The Apache Velocity template has been based on theMaven Stylus Skin, version 1.5. A possibility to link to a site in a target="_blank" window has been added to the site.vm file. In addition, several of the menus have been updated, streamlined, and brought up-to-date with the latest changes in the Maven site standards. averbraeck
Update Simulator class does not throw RemoteExceptions anymore on most common scheduling methods, as this was not needed. averbraeck

Release 3.00.14 – 2015-07-05

Type Changes By
Update Changes file is kept the same for all projects, as all projects increase version numbers at once. averbraeck
Update ClassUtil: cache the super constructors, methods, fields as well at the super constructors, methods, fields to avoid repetitive lookup of super constructors, methods, and fields, which can take a lot of time. averbraeck
Update Renderable2D: use the hashCode to store the renderable in the context tree. Guarantee a reproducible hashCode and equals. The toString() also gives the hashCode() as this can be used to identify the Renderable2D in the context tree. averbraeck

Release 3.00.13 – 2015-07-05

Type Changes By
Add Two code metrics tools are added to the project reports: JDepend and JavaNCSS. They provide information on cyclometric complexity, fan in, fan out, etc. averbraeck

Release 3.00.12 – 2015-06-22

Type Changes By
Update Use of Context rationalized and standardized.
Context becomes: 

Code for binding a statistic:
  Context context = ContextUtil.lookup(simulator.getReplication().getContext(), "/statistics");
  ContextUtil.bind(context, this);

Code for binding a renderable2D:
  Context context = ContextUtil.lookup(simulator.getReplication().getContext(), "/animation/2D");
  ContextUtil.bind(context, this);

Removing the entire tree of an experiment:
or if you just have a simulator:
Add ContextUtil: extended methods to be symmetrical (bind-unbind) and (initial-given) contexts. averbraeck
Update The Replication caches the context. averbraeck
Remove Caching a context is removed from the Simulator. averbraeck
Add ContextUtil.destroySubContext method added to recursively remove subcontexts and bindings. averbraeck
Add Added a cleanUp() method to the Simulator to explicitly kill the worker thread that takes care of execution. averbraeck
Add Added a cleanUp() method to the WorkerThread to explicitly kill the worker thread. averbraeck
Add StatusBar got a cancelTimer() method to dispose of the timer so the StatusBar can be garbage collected. averbraeck

Release 3.00.11 – 2015-06-18

Type Changes By
Update Hierarchy for AnimationPanel and GridPanel changed. averbraeck
Update Several changes in DSOLPanel. averbraeck
Fix Fixed the jittergrid. averbraeck

Release 3.00.10 – 2015-05-20

Type Changes By
Add Cobertura 2.7 used for Java 8. averbraeck
Add DEVSSimulator has a runUpTo(absoluteTime) method. averbraeck
Add GridPanel extends a BorderPanel, so panels can be placed N, S, E and W of the animation, e.g. to provide buttons or a legend. averbraeck

Release 3.00.09 – 2015-05-01

Type Changes By
Add Several extensions were made in the ESDEVS package: AbstractDEVSPortModel got two new methods:
    public final Map> getInputPortMap()
    public final Map> getOutputPortMap()
Add CoupledModel got four extra methods:
    public final Set> getInternalCouplingSet()
    public final Set> getExternalOutputCouplingSet()
    public final Set> getExternalInputCouplingSet()
    public final Set getModelComponents()
Add Phase got one new method:
    public final String getName()

Release 3.00.08 – 2015-05-01

Type Changes By
Add The AtomicModel.initialize() method in ESDEVS has been changed to allow for re-initialization, e.g. after rollback. The method now looks as follows:
  public void initialize(final double e)
    if (this.timeAdvance() != Double.POSITIVE_INFINITY)
        this.nextEvent = new SimEvent(
            this.getSimulator().getSimulatorTime().plus(this.timeAdvance() - e), this, this,
            "deltaInternalEventHandler", null);
        this.timeLastEvent = this.getSimulator().getSimulatorTime().get();
      catch (RemoteException | SimRuntimeException exception)
        Logger.severe(this, "initialize", exception);
      this.nextEvent = null;

Release 3.00.07 – 2015-04-29

Type Changes By
Add DEVSRealTimeClock has been added. averbraeck
Add old RealTimeClock has been removed. averbraeck
Add DEVSRealTimeClock has been given a speed factor. averbraeck

Release 3.00.06 – 2015-04-26

Type Changes By
Add Made it possible to save and restore a state of a RandomStream, e.g. to make a model to rollback to an earlier state. averbraeck
Add Two methods have been added: saveState() : Object and restoreState(Object o). averbraeck

Release 3.00.05 – 2015-04-23

Type Changes By
Add ESDEVS formalism files in DSOL-CORE upgraded with comments, final modifiers, and appropriate visibility for modifiers. In addition, the following variables in AtomicModel have changed visibility:
  1. In file, changed private double timeLastEvent; to protected double timeLastEvent
  2. In the same file, changed private double timeNextEvent; to protected double timeNextEvent
  3. In the same file, changed private double elapsedTime; elapsedTime
  4. protected boolean conflictStrategy = AtomicModel.INTERNAL_FIRST; instead of private in AtomicModel
  5. non-final public SimEvent getNextEvent() in AtomicModel

Release 3.00.04 – 2015-04-22

Type Changes By
Add Extended Replication, Experiment and Treatement with easy access classes. averbraeck
Add Repaired a number of dependencies in the easy access classes of Simulators. averbraeck
Update Comments in dsol-core updated. averbraeck

Release 3.00.03 – 2014-09-14

Type Changes By
Fix Changes for version 3.00.03. A lot of them are textual, a few to solve minor bugs and omissions. averbraeck

Release 3.00.02 – 2014-09-05

Type Changes By
Update valueOf() methods instead of new Integer() etc. averbraeck
Fix Small change in SimTime to satisfy Resource. averbraeck

Release 3.00.01 – 2014-08-12

Type Changes By
Update Split the Animator into a DEVSAnimator and a DEVDESSAnimator class. averbraeck
Update SimTime relative number has to extend Number to get values for e.g., graphs. averbraeck
Update Comments. Final methods. Final fields. Checkstyle conventions. averbraeck

Release 3.00.00 – 2014-08-09

Type Changes By
Add Complete project restructuring compared to DSOL 2.0. See website for more information. averbraeck