CSTNU Tool Releases
Releases of CSTNU Tool are freely available in binary distribution at https://profs.sci.univr.it/~posenato/software/cstnu/bin
Source code is always available at https://archive.softwareheritage.org/browse/origin/directory/?origin_url=https://profs.scienze.univr.it/posenato/svn/sw/CSTNU
RELEASE NOTES
v4.12
date: 2024-03-08
Added the following classes:
OSTNU
: class to represent Simple Temporal Networks with Uncertainty and Oracles.
Updated the following classes:
STNURTE
: fixed minor bugs when executing networks having useless wait constraints involving contingent. timepoints.STNU
: simplified some checks inapplyMinDispatchableESTNU()
methods. Added the original FD_STNU algorithm implementation. So, now there are two implementation of FD_STNU:FD_STNU
(the original) andFD_STNU_IMPROVED
(as the original, but it does not add waits that are more negative than the duration of the relative contingent link).
v4.11
date: 2024-02-14
Added the following classes:
STNURTE
: class for the implementation of a Real-Time Execution algorithm for STNUs.TimeInterval
: utility class to represents a time interval where lower bound is guarantee to be ≤ upper bound.ActiveWaits
: utility class to represents an active waits.
Updated the following classes:
- Class
STNU
: implemented the MinDispatchableESTNU algorithm. Changed the name to some methods. Fixed minor bugs. - Class
STN
: fixed an annoying bug inGET_STRONG_CONNECTED_COMPONENTS
andGET_STRONG_CONNECTED_COMPONENTS_HELPER
methods. Changed the name to some methods. - Class
TNGraphMLReader.java
: reads the name of the graph from the attributed Name in the document. - Class
TNGraph
:addEdge
throws an exception if the edge already exists. Returning a false was not sufficient to avoid some errors. Added methodsmakeNewEdge
andgetUniqueEdgeName
. - Class
ExtendedPriorityQueue.java
: renamed fromMinPriorityQueue
. Renamed some of its methods to represent a generic priority queue (min or max). Now, it depends on a better heap library.
v4.10
date: 2023-11-02
Switched to Java 21.
To Apple macOS users: it seems that OpenJdk 17 has some problems to run the TNEditor
because of a missing system
libraries. I recommend to use Temurin 21 (https://adoptium.net/): I tested it, and it works without problems.
- Class
STN
: methodmakeFastDispatchMinimization
adds constraints from the source node to guarantee that the source node can reach any node. - Class
TNEditor
: for STN instance, dispatchable version is determined usingmakeFastDispatchMinimization
method.
v4.9
date: 2023-07-20
- Class
AbstractCSTN
: reset method does not remove the internal graph. - Class
PriorityQueue
: added methodsdelete()
andgetElements()
. - Class
TNEditor
: addedCapture
function for saving networks shown in the application as PNG images. - Class
FTNU
: added a constructor that accepts an XML string describing the network. - Class
CSTNPSU
: methodgetEMaxDistanceInContingencyGraph(contingencyGraph)
replaced bygetMaxPathContingencySpanInContingencyGraph(nodeName, contingencyGraph)
. Added methodconfigureSubNetworks(subNetworks, n)
. - Fixed different minor bugs.
- Codd cleaned in most of the classes.
v4.8
date: 2022-12-28
- Class
CSTNPSU
: added methodgetPrototypalLink()
for determining Prototypal Link with contingency (PLC). - Class
FTNU
: it is an alternative name for the classCSTNPSU
. - Cleaned the code of many classes.
v4.7
date: 2022-11-01
Added the new class PCSTNU
, Parameterized CSTNU, for representing CSTNU having parameter time-points.
- Interface
Node
: added methods for checking if a node is a parameter one. - Class
AbstractNode
: removed default methods because moved intoNode
interface. - Class
LabeledNode
: added a new field for identify parameter time-points. - Class
TNGraph
: added code for managing PCSTNU instances and improved some logging code.
Fixed some minor issues:
- Class
AbstractCSTN
: improved the determination of the max edge value. - Class
CSTNPSU
: improved the determination of all constraints when the parameterpropagationOnlyToZ
is false. - Class
STN
: removed a useless annotation.
v4.6
date: 2022-06-03
The project has been updated to run with Java 17.
Moreover, from this release the source code is tested by spotbugs configured with maximum effort
and minimal threshold
parameters.
- Class
STNUDensifier
: improved allowing also the requirement of an exact number of edges (that can require to remove edges). - Class
STNU
: Changed the name of fast dispatch algorithm. - Class
Checker
: Made the long parameter specifications prefixed by--
. - Class
STNURandomGenerator
: Improved the documentation of the README.txt generated for describing a benchmark.
v4.5
date: 2022-03-30
- Class
Checker
: added two statistic indexes when STNU are checked. - Class
PriorityQueue
: Map of entries is now realized by an open hash for a better performance. Removed throws of exceptions when it is not necessary. - Class
STN
: Generalized all methods to accept edges that extend STNEdge. In this way some static methods can be used also by STNU class. Fixed a bug in getStrongComponents method. - Class
STNU
: AddedfastSTNUdispatchability
method. Changed the name of methodRUL2020
inRUL2021
. Fixed some bugs about other methods. Improved the efficiency of some methods. - Classes
Component
andAbstractComponent
: removedcolor
attribute because it is necessary to have lightweight components. All complementary attributes will be removed. - Interface
STNUEdge
: Improved the representation of contingent/wait edges representing such data as object of the internal classContingentCasePair
. - Class
STNEdgeInt
: Improved default constructor. - Class
STNUEdgeInt
: Improved default constructor. - Improved the representation of contingent/wait edges representing such data as object of the internal
class
ContingentCasePair
. - Class
TNGraph
: Changed internal maps representation. Added two caches for speed-upgetInEdgesAndNodes
andgetOutEdgesAndNodes
methods. For performance reasons, removed theremoving observer
instruction in theremoveEdge
method. Now, when an edge is removed from a graph, all its observing graphs are removed. It is not the correct behaviour, but removing only the correct graph requires too much time to the method of the library. In a next release such issue will be fixed. When a graph is created by a copy, its internal labelAlphabet is cloned. - Class
CSTNPSU
: fixed a bug in the initAndCheck method that didn't allow the specification of guarded link with label in the external bounds. - Class
TNEditor
: added visualization of cursor position coordinates. - Class
CSTNULabelEditingGraphMousePlugin
: fixed the bug that made a contingent edge ordinary after an edit of its value. - Class
CSTNU
: added a check to guarantee that an activation node is associated to only one contingent node. - New class
TNPredecessorGraph
: Class for representing predecessor TNGraph in a very compact way.
v4.4
date: 2022-01-03
- Improved the parser of labeled value map/set.
- Class
AbstractCSTN
. ImprovedcheckAndInit
: all negative edges going to obs time-point are checked and cleaned. - Class
STN
: improved all SSSP algorithms making each node reachable by Z in case of forward search. Fixed a bug inmakeDispatchable()
method: it didn't remove all dominated edges if their opposite were not present. Added methodsgetAccumumulateUndominateEdges
andgetFastDispatchMinimization
, a faster method for determining the dispatchable version of a network. - Class
PriorityQueue
: removed the ambiguous methodvalue
. - Class
TNGraph
: introduced theunmodifiable(TNGraph)
static method. - Class
ALabelAlphabet
: added a new constructor. - Class
LabeledNode
: started its re-factoring. Next releases will specialize such a class for optimizing its memory footprint.
v4.3
date: 2021-10-20
- Class
LabeledNode
: extended for Tarjan algorithm. - Class
STN
: added BFCT (a.k.a. Tarjan algorithm) algorithm in STN class. Such an algorithm can return the negative cycle if the network is not consistent. - Class
NodePriorityHeap
: renamed asPriorityQueue
and made generic. - Class
LabeledNode
: removed rendering code. - Class
NodeRendering
: new class for customize rendering of LabeledNode inTNEditor
. - Class
TNEditor
: GUI cleaned a little bit. - Removed the dependency on FreeHep library because FreeHep does not work with JRE > 8.
- Removed ‘normal’ and ‘constraint’ type for
Edge
in favor ofrequirement
because in Temporal Networksrequirement
is more appropriate. - Improved all documentation (now, there is only one README.md). Added BUILDING.md document that explains how to build a package and
- the preliminary steps to take before a commit (only for developers).
v4.2
date: 2021-10-07
- Fixed the main method of STN class: now it checks a given network.
- Fixed an initialisation error of graphic driver in
TNEditor
and improved Save dialog.
v4.1
date: 2021-08-17
- Program
CSTNEditor
is renamed asTNEditor
. - Removed all unnecessary exceptions.
v4.0
date: 2021-08-01
- Relevant change: the library is now a JVM 11 library, but it is still compatible with JVM 8.
- Improved Javadoc for almost the classes/methods.
- Fixed all spotbugs bugs/errors at level medium and max effort.
v3.6
date: 2021-06-20
- Fixed a weird bug in CSTNPotential class: the
dynamicCheck()
method worked right but, at the end, the edges in the checked graph were wrongly saved in reversed way. - Refactored classes GraphMLReader and GraphMLWriter for making them more general. Now, GraphMLReader can build a TNGraph from a string representing it in GraphML format and GraphMLWriter can serialize a TNGraph in GraphML format.
- Class
CSTNU
: added the constructor CSTNU(String) for building an instance from a GraphML string. - Class
AbstractCSTN
: added the method String getGCheckedAsGraphML().
v3.5
date: 2021-06-14
- Fixed a small bug on Dijkstra method in STN class.
- Class
NodePriorityHeap
refactored.
v3.4
date: 2021-06-03
- CSTNU Check propagates also the bounds of a contingent link as normal constraints in order to avoid that a contingent link can have upper case value different from the negated upper bound.
- Fixed a graphical interface initialization error.
v3.3
date: 2021-05-23
- CSTN(U)CheckStatus stores also the node having the negative loop when the network is NOT DC.
- All DC checking methods save the resulting graph into a file before returning the status of a check.
- Improved some Javadoc comments.
v3.2
date: 2021-01-14
- Fixed a coding error on saving network into file. From this release, the file encoding is UTF8 independently of the execution platform.
- Fixed an initialization error in CSTNU class.
- Fixed almost all Javadoc errors.
v3.1
date: 2020-12-28
- Some cleaning actions.
- Added copyright and licenses for publication on
archive.softwareheritage.org
.
v3.0
date: 2020-11-15
- STNU class added with different DC checking algorithms: Morris2016, RUL2018, and RUL2020 faster one.
- CSTNPSU class offers a DC check sound-and-complete that can also adjust guarded links to the right ranges for an execution.
- Fixed some minor bugs.
v2.11
date: 2020-02-02
- Graphical interface simplified.
- Now it is more intuitive to add/remove nodes/edges.
- CSTNPSU class offers a DC check sound-and-complete.
v2.10
date: 2020-02-02
- CSTN class restored to a previous algorithms.
- Removed the possibility to check without using unknown literals.
- This version considers the new rule and algorithm names published in a work presented at ICAPS 2020.
- CSTN class implements two DC checking algorithms. With option
--limitedToZ
, the algorithm is the one presented at IJCAI18 (algorithmHR_18
). Without--limitedToZ
, the algorithm is the one presented at ICAPS19 (algorithmHR_19
). This last version is not efficient as IJCAI18 one. - For a very efficient version, consider
CSTNPotential
class (reintroduced but in a new form) that makes DC checking assuming IR semantics and node without labels (algorithmHR_20
). CSTNPotential
class implements the new DC checking algorithm based on single-sink the shortest paths and potential R0 and potential R3 rules.- For all objects containing a labeled values field, the default implementation class is LabeledIntTreeMap. For changing
this default class, modify the field
DEFAULT_LABELEDINTMAP_CLASS
of LabeledIntMapSupplier and recompile sources. CSTNPSU
class allows the representation and the verification of temporal constraints containing guarded links. The DC checking algorithm is sound but not complete. Moreover, the guarded link bounds are not guaranteed to be shrunk in the right way.
v2.00
date: 2019-11-07
- CSTN class implements 9Rule DC algorithm. Such algorithm consists in 3 rules (LP, R0, and R3*) for generating also -∞ value and 6 rules for managing -∞ values that are stored as potential values in nodes.
- Added CSTNSPFA class that implements the DC checking algorithm as single-sink BellmanFord one. Therefore, only node potential values are generated. This class uses only 3 rules.
v1.26.vassar
date: 2019-10-21
- Rewritten many classes for representing efficiently edges and graphs for STN networks.
- Removed class CSTNPotential (last svn-version 296).
- Added class STN & companions for some STN specific algorithms.
v1.26.0
date: 2019-03-23
- CSTNU class has a new field, contingentAlsoAsOrdinary, default false. When it is true, the DC checking method propagates contingent links also as ordinary constraints. This allows one to see some ordinary values more accurate.
v1.25.0
date: 2018-11-22
- Minor code optimization and minor bug fixes.
- From this release it is necessary to run the software using JRE 1.8.
v1.24.0
date: 2018-07-18
- CSTN class allows the DC checking without using unknown literals (that are necessary for the completeness): it just a tool for studying the necessity of unknown literals.
- Literal and Label class are now immutable.
- Minor code optimization.
v1.23.2
date: 2018-02-21
- Class CSTNU cleaned and optimized. From this release, its DC checking algorithm is sound-and-complete.
- Contingent link can have label even if it is not required for sound-and-completeness.
- Class CSTNPSU.java added.
- Sub-package ‘attic’ removed. (last svn revision 243).
- SVN version: 245.
v1.22.4
date: 2018-01-10
- Code cleaning
v1.22.3
date: 2017-12-14
- Class CSTNU optimized.
- Class CSTNURunningTime removed.
- Class CSTNRunningTime was renamed Checker.
v1.22.2
date: 2017-11-24
- Code optimization
v1.22.1
date: 2017-11-22
- The following classes have been renamed re-ordering inside terms:
CSTNEpsilon.java
CSTNEpsilon3R.java
CSTNEpsilon3RwoNodeLabels.java
CSTNEpsilonwoNodeLabels.java
CSTNIR.java
CSTNIR3R.java
CSTNIR3RwoNodeLabels.java
CSTNIRwoNodeLabels.java
v1.22.0
date: 2017-11-21
- Introduced new classes and renamed old ones. There are 13 classes for checking CSTN/CSTNU:
1. it.univr.di.algorithms.CSTN.java
2. it.univr.di.algorithms.CSTN2CSTN0.java
3. it.univr.di.algorithms.CSTN3RIR.java: as IR CSTN but DC checking uses only three rules.
4. it.univr.di.algorithms.CSTN3RwoNodeLabelEpsilon.java
5. it.univr.di.algorithms.CSTN3RwoNodeLabelIR.java
6. it.univr.di.algorithms.CSTNEpsilon.java
7. it.univr.di.algorithms.CSTNIR.java
8. it.univr.di.algorithms.CSTNU.java
9. it.univr.di.algorithms.CSTNU2CSTN.java
10. it.univr.di.algorithms.CSTNU2UppaalTiga.java
11. it.univr.di.algorithms.CSTNwoNodeLabel.java
12. it.univr.di.algorithms.CSTNwoNodeLabelEpsilon.java
13. it.univr.di.algorithms.CSTNwoNodeLabelIR.java
- Replaced Ω node with equivalent constraints in all CSTN classes.
- Removed Ω node from LabeledIntGraph and relative reader/writer.
- Improved CSTN Layout for laying out also nodes without explicit temporal relation with Z.
- Started classes re-factoring exploiting Java 8 new features.
CSTNRunningTime
andCSTNURunningTime
made multi-thread.
v1.21.0
date: 2017-11-09
- Class
CSTNUGraphMLReader
is able to read CSTN files that do not contain meta information about UC and LC values. CSTNirRestricted
renamedCSTNir3R
.CSTNwoNodeLabel
cleaned.- Added classes
CSTNirwoNodeLabel
andCSTNir3RwoNodeLabel
. - Simplified
CSTNRunningTime
.
v1.20.0
date: 2017-11-03
- Jung-library has been upgraded to 2.1.1 version.
- Such update required an adaptation of all GUI classes of the package.
- CSTNU DC checking algorithm is now sound-and-complete.
- CSTNEditor allows now to view a graph in a bigger window and to save it as PDF or other graphical format. The export menu is accessible clicking the mouse inside the window containing the graph to export.
- There are now 6 classes for checking CSTN/CSTNU:
it.univr.di.algorithms.CSTN
: it checks a CSTN instance assuming the standard semantics.it.univr.di.algorithms.CSTNepsilon
: it checks a CSTN instance assuming a not-zero reaction time (epsilon).it.univr.di.algorithms.CSTNir
: it checks a CSTN instance assuming instantaneous reactions.it.univr.di.algorithms.CSTNirRestricted
: asit.univr.di.algorithms.CSTNir
but the used rules are 3 instead of 6. Such checking can be faster thanit.univr.di.algorithms.CSTNir
one.it.univr.di.algorithms.CSTNU
: it checks a CSTNU instance assuming instantaneous reactions.it.univr.di.algorithms.CSTNwoNodeLabel
: it checks a CSTN instance assuming the standard semantics. The instance is translated into an equivalent CSTN instance without node labels and, then, checked.
GraphMLReader
has been rewritten because based on JungGraphMLReader2
that is not able to manage big attribute data.GraphMLReader
has been renamedCSTNUGraphMLReader
.GraphMLWriter
has been renamedCSTNUGraphMLWriter
.
v1.10.0
date: 2017-06-22
- Package reorganization.
- CSTNEditor cleaned and optimized.
v1.9.0
date: 2016-03-31
- Labels are represented in a more compact way.
- Labeled value sets requires less memory. It is still possible to choose which kind of representation to use for labeled value sets.
v1.8.0
date: 2016-02-24
- Graphs are represented by a new optimized class.
v1.7.9
date: 2015-11-26
- Added the new feature to CSTN DC-checking. Now DC-checking algorithm considers a user specified ‘reaction time’ ε (ε > 0) of the system during the checking of a network. A reaction time ε means that an engine that executes a CSTN reacts in at least ε time units to a setting of a truth-value to a proposition.
v1.7.8
date: 2015-10-28
- A new sanity check about the correctness of an input CSTNU added: each contingent time point has to have one incoming edge of type ‘contingent’ and one outgoing edge of type ‘contingent’ from/to the same node, representing the activation time point.
v1.7.7
date: 2015-10-22
- Fixed another issue with instantaneous reaction in CSTNU. Thanks to Dian Liu for his help in discovering such error.
- I repeat that, even in this release, it is better to set any timepoint—that depends on an observation timepoint or follows a contingent timepoint—to
- a not 0 distance from the considered observation timepoint or contingent one.
v1.7.6
date: 2015-09-30
- Fixed a subtle bug in the generation of new edges. Thanks to Dian Liu for his help in discovering such error.
v1.7.5
date: 2015-09-23
- Cleaned some log messages.
- We have discovered that instantaneous reaction feature requires a sharp adjustment in semantics of the network.
- We are currently working in the introduction of an ε-reaction (with ε ≥ 0) feature.
- In the meantime, for CSTN it is possible to DC check assuming instantaneous reaction (ε = 0)
- while for CSTNU it is only possible to DC check assuming non-instantaneous reaction (ε > 0).
- For now, it is better to set any timepoint—that depends on an observation timepoint or follows a contingent timepoint—to a not 0 distance from the
- considered observation timepoint or contingent one.
v1.7.4
date: 2015-09-13
- In this release, a more strict check of contingent links has been introduced. Bounds of a contingent link A==[x,y]==>B
must observe the property
0<x<y<∞
. Moreover, since for CSTNU instances it is not yet defined the concept of ' instantaneous reactions', it is not possible to define a CSTNU instance in which there exists a constraint like C–[0,0]–>B where B is contingent. This constraint requires that C has to be executed in at the same time of the contingent time point B, but this is not possible because B is decided by the environment and the runtime engine has to observe it before to execute standard node like C.
v1.7.3
date: 2015-09-10
- This release contains some minor bug fixes and a revision of public methods of
class
it.univr.di.cstnu.algorithms.CSTNU
. - Now, it is possible to check the controllability of a CSTN instance instantiating a CSTNU object and calling
its
dynamicControllabilityCheck(LabeledIntGraph)
method. - It is sufficient to create a
LabeledIntGraph
object representing a given CSTNU instance (inLabeledIntGraph
class there is also a method for loading an instance from a file written in GraphML format), instantiate a CSTNU object and call its methoddynamicControllabilityCheck(LabeledIntGraph)
passing the created graph. Moreover, I add the classit.univr.di.cstnu.algorithms.CSTNURunningTime
and the scriptCSTNURunningTime
for checking a bundle of CSTNU instances obtaining also some execution time statistics.
v1.7.2
date: 2015-06-24
- This release contains some minor bug fixes and a README file explaining the proposed examples of CSTNU/CSTN instances.
- Thanks to Huan Wang for his comments.
v1.7.1
date: 2015-05-28
- This release contains a faster Dynamic Consistency check for CSTNs.
- The java class
CSTN.java
has been completely rewritten and almost optimised for a faster check.
v1.7.0
date: 2015-03-23
- This release is the first public release.