LAVES
Logistics Algorithms
Visualization and Education
Software
LAVES is an open source education software, that helps students
understand the basic concepts of algorithms and supports the
teaching staff visualize the dynamics of these concepts.
Using didactical methods, such as algorithm visualization in
combination with exercises, LAVES facilitates the comprehension
of the functionality of algorithms.
LAVES is available in German and English. It was originally
developed to serve as an educational support tool for the
lecture "Logistik" ("Logistics") in the Bachelor program
"Wirtschaftsinformatik" ("Business Informatics") at the
University of Siegen. It is possible, however, to extend or
customize the software with own visualizations of algorithms
that address the specific needs of other courses. Therefore,
LAVES provides a Software Development Kit (LAVESDK) which can be used to easily
implement educational support for specific lectures.
LAVES is released under the terms of the GNU General
Public License (GPL).
Below you can find the download,
publications related to LAVES, some
demo videos, a list of available plugins and the change
log.
Download
 LAVES.zip
contains LAVES including the logistics package of plugins
version: 1.5  LAVESsrc.zip
contains the source code of LAVES  LAVESempty.zip
contains LAVES without installed plugins (a clean instance)
Publications
 Dominik Kress, Jan Dornseifer (2015) LAVES: An Extensible Visualization Tool to Facilitate the Process of Learning and Teaching Algorithms. INFORMS Transactions on Education 15(3):201214.
 Dominik Kress, Jan Dornseifer (2014) Ein (weiteres) Tool zur AlgorithmenVisualisierung. OR News 51: 69.
Plugins
Logistics Package Dijkstra’s algorithm – finds a shortest path from a starting vertex to every other vertex in a graph

 dijkstraalgorithm.jar
version: 1.4  dijkstraalgorithmsrc.zip
 dijkstraalgorithm.jar
 FloydWarshall algorithm (Tripel algorithm) – finds shortest paths between all pairs of vertices in a graph

 tripelalgorithm.jar
version: 1.4  tripelalgorithmsrc.zip
 tripelalgorithm.jar
 Hungarian method – finds a maximal matching (bipartite graph)

 hungarianmethod.jar
version: 1.3  hungarianmethodsrc.zip
 hungarianmethod.jar
 Greedy algorithm – finds a perfect matching (weighted graph)

 greedyalgorithm.jar
version: 1.3  greedyalgorithmsrc.zip
 greedyalgorithm.jar
 Vogel's Approximation Method – finds a perfect matching (weighted graph)
 Nearest neighbor – a heuristic for finding a feasible solution of the Traveling Salesman Problem
 2opt – an improvement heuristic for the Traveling Salesman Problem

 2optalgorithm.jar
version: 1.3  2optalgorithmsrc.zip
 2optalgorithm.jar
 Eulerian cycle algorithm – finds an Eulerian cycle in an Eulerian graph
 Savings algorithm – solves the basic Vehicle Routing Problem

 savingsalgorithm.jar
version: 1.3  savingsalgorithmsrc.zip
 savingsalgorithm.jar
 FordFulkerson algorithm – finds a maximum flow in a network
 Relabeltofront algorithm – finds a maximum flow in a network
Changelog  What's New
 Version 1.5 (Release 04.04.2016)

 LAVESDK 1.5:
 Known bugs fixed
 Known bugs fixed
 LAVESDK 1.5:
 Version 1.4 (Release 11.11.2015)

 LAVESDK 1.4:
 RandomGraphToolBarExtension: new toolbar extension to create randomly generated graphs
 ToolBarExtension: may now be added to the main menu of the host application
 Welcome screen has been extended with further information
 New menu entry „Functions“: this entry is added if the user opens an algorithm and provides the main functions of the toolbar extensions that the plugin contains
 Dijkstra, Eulerian Cycle, and Triple Algorithm Plugin: new toolbar extension to create randomly generated graphs
 Known Bugs fixed
 LAVESDK 1.4:
 Version 1.3 (Release 06.05.2015)

 LAVESDK 1.3:
 LegendView: font is now adjustable by user like in TextAreaView
 GraphView: description for directed property in properties window, repaint mechanism reworked
 DefaultRNView: additional constructor
 Sandbox: validation of the used SDK version information of a plugin
 LanguageFile: getLabel() returns now the labelID if no suitable language is found for a label and the default value is null
 Network: correction of the excess calculation of nodes
 AlgorithmStep: Bugs fixed concerning the LaTeX formula parsing of a step text
 AlgorithmRTE: it is now possible to step back from the end of the algorithm if the option „pause before stop“ is enabled
 VertexOnlyTransferProtocol: now it is posible to only transfer the vertex positions
 GraphUtils: new findShortestPaths methods to determine the shortest paths from every vertex to all other vertices in a graph
 CompleteGraphToolBarExtension/CompleteBipartiteGraphToolBarExtension: added functionality to specify the maximum weight of edge if a graph is created (the weights of the edges are determined randomly up to the maximum)
 Logistics package plugins updated to version 1.3
 Relabeltofront algorithm plugin (version 1.0) added
 Tripel algorithm plugin:
 Changed assumptions meaning that now it is checked whether the graph contains circles of negative length
 New toolbar extension to layout the vertices in a circle
 Dijkstra algorithm plugin: new toolbar extension to layout the vertices in a circle
 Pseudocode update of all algorithms
 Release date of the current version added to About dialog
 Step backward and forward is now made accessible to arrow keys (left + right) in combination with ALT
 Known bugs fixed
 LAVESDK 1.3:
 Version 1.2 (Release 15.10.2014)

 Contains updated SDK to version 1.2
INFO: the minimum version has increased to 1.2 meaning that old plugins have to be updated to the new SDK version to be executable in the new LAVES version  LAVESDK 1.2:
 New AlgorithmPlugin properties getAuthorContact() and getText()
 New host communication methods to request some properties of installed plugins
 New method in AlgorithmExercise to display last failed hint messages
 New transition object that enables the developer to integrate visual transitions into an algorithm visualization (predefined transitions: color transition, linear position transition to move an object along a straight)
 Network: getResidualNetwork() returns now a new type instance that is based on a multi graph to comply with the definition of a residual network
 DefaultRNView: new default view to handle residual networks graphically with caption adoption feature (that means during the creation of a residual network the captions of the vertices are automatically adopted from the network if a certain visual pattern matches)
 GraphView: during a multiselect of vertices the vertices cannot be moved anymore to prevent the user from deselecting all vertices when he accidentally moves the cursor
 GraphView: it is now possible to repaint a graph view from a subclass and to add additional tools to the tool set
 ExercisesListView: new result status icon for a failed exercise that is clickable and displays a hint that should answer why the exercise has failed
 Known Bugs fixed
 Base package plugins updated to version 1.2
 Display error fixed in Vogel’s Approximation Method plugin
 Bug fixed that crashes the 2opt algorithm plugin in exercise mode
 First exercise in 2opt plugin exercise mode now expects input for both columns (out and in)
 Due to the improvments in the Network class the FordFulkerson algorithm plugin is now updated and supports the correct definition of residual networks
 Updated language files for host system and Vogel’s Approximation Method plugin
 Bug fixed that crashes LAVES when plugins aren’t compatible with the current SDK
 New configuration options in the preferences dialog of LAVES
 Updated LAVES help files
 Contains updated SDK to version 1.2
 Version 1.1 (Release 14.07.2014)

 contains version 1.1 of the LAVESDK
 new information dialog that contains information about the exercise mode (can be disabled by the user)
 new option for exercises to display input hints
 bug fixes in the runtime environment of the algorithms and the host system
 the state of the "Pause Before Stop" and "Skip Breakpoints" options are now stored in the configuration so that the state can be restored when LAVES is restarted
 MatrixEditor: it is now possible to remove elements with the delete key
 ExecutionTable: cell content is selected when user wants to edit a cell so that the new value can directly be entered using the keyboard
 updated help files
 Dijkstra's algorithm plugin, Tripel algorithm plugin: extended by final exercise to verify whether the user can apply the algorithm results meaning the user has to specify a shortest path between two random vertices
 integration of input hints in several plugins to simplify the work with the exercises
 Version 1.0 (Release 30.05.2014)