TransportPlanner is an open source project powered by Assembla

Assembla offers free public and private SVN/Git repositories and project hosting with bug/issue tracking and collaboration tools.

Branchmaster
/
 
Name Date Commit message Revision
.settings 2013-02-04 [Christian Steinebach] Many2Many relationship route-tsp, gifs +++ 83afff9eee
dom 2013-05-03 [Christian Steinebach] removed some leftovers from the ToDo application 0ccf98e0b8
fixture 2013-05-03 [Christian Steinebach] removed some leftovers from the ToDo application 0ccf98e0b8
KShortestPath 2013-02-10 [Christian Steinebach] with shortestpath 142c96ec40
objstore-jdo 2013-05-03 [Christian Steinebach] removed some leftovers from the ToDo application 0ccf98e0b8
screenshots 2013-05-03 [Christian Steinebach] changed Readme.txt 1a2c1b39ca
services 2013-05-03 [Christian Steinebach] add gpl to all java files d3d14ce182
viewer-webapp 2013-05-03 [Christian Steinebach] add gpl to all java files d3d14ce182
.gitignore 2013-02-23 [Christian Steinebach] organized some imports, deleted some commented out code, added infoUser in TransportDemand 7691b4dcbc
.project 2013-02-04 [Christian Steinebach] Many2Many relationship route-tsp, gifs +++ 83afff9eee
pom.xml 2013-02-23 [Christian Steinebach] 'outsourced' ShortestPathService to its own subproject, replaced ShortestPathService class with interface 5d73743833
Readme.txt 2013-05-07 [Christian Steinebach] add quick tour to Readme.txt a9d5184ecb
Readme.txt
A demo done by Marintek AS (http://marintek.no) to show a possible 'solution' to a multimodal transport planning problem. ;-) It's a small part of a bigger
european funded project, called FInest (which lasted until 01/04/2013).

The software is based on the ISIS framework http://isis.apache.org/ plus some extentions for google maps, calendar views and wicket charts
A Google location service is used to look up geographcial data of the destinations. 
The use of these extentions needs some additional configuration. Ask on the ISIS users' discussion list for help

Background is that some cargo should be transported from a pickup destination to a delivery destination.
A 'client' creates a transport demand
A 'logistics service provider' plans a route from pickup to delivery using a shortest path algorithm.
The route's waypoints (where cargo is loaded from one providere to another) may be shown on a map.
The costs associated with each leg may be shown as a pie chart
The resource usage, i.e. costs and time for each leg, may be shown as a bar chart.
An event may be generated (e.g. some customs papers are missing, therefore transport execution stops and a replan
is necessary).
Everything is a bit shaky and there is a lot of room for improvement, but it shows how a relatively simple
domain model can be made 'alive' using ISIS. 
The underlying datastore is in-memory, I never made it to implement the JDO store. :-( 
A great Thanks to Dan Haywood and others on the ISIS team!! :-) 

How to run:

- cd to projects root directory
- mvn install
- cd to viewer-wicket
- mvn antrun:run

A window will pop up where you can start the internal webserver
- click start
- The default web browser will pop up 
- The database will be empty for each restart


Alternativley an online version can (so far ;-) be found at http://tpmdemo.eidemsnesset.cloudbees.net

A quick tour:
- log in with chris/pass
- a user with less privilges is arne/pass (Arne is not allowed to plan. He represents a customer who only is able
  to creatae a transport demand)

- System/Install to have some predefined objects. Give it some time to complete...
- Select 'Transport Demands/All Transport Demands' to show a list of predefined transport demands, i.e. requests to 
  transport a cargo from pickup to delivery.
  The calendar view gets somewhat confused by the dates.
- Select 'Fiskarstrand-Rotterdam' with the Dried Fish cargo
- On the left side of the screen some details show up, on the right side an empty schedule and now waypoints.
- Select the 'Plan transport' at the top right corner of the screen
- You may now enter you criteria for finding a transport. Max price, max time and/or 'fastest', 'cheapest', 'cheap and fast' and, as a bonus 'expensive and slow' ;-)
  The software uses a shortest-paths-algorithm to look for the best solutions according to your criterium
- When done, click and a list with possible schedules is presented
- Select one, click the corresponding check box on the left and click 'plan and book'
- The image of the selected schedule changes (a tick mark is placed on top of the globe)
- Select the transport demand again, either from the top menu or click on the corresponding bread crumb 
- The schedule is now filled, waypoints may be shown on a google map in the widget below
- Click on 'Cost Pie' and 'Resource Usage' to see some graphs
- You may now send an Event to the system. Events should in principle come from an outside system, but this is a demo...
- Send a 'Failure event' and select a leg (probably not the last leg)
- The status in the schedule changes to CANCELD and a red cross icon is shown.
- Selecting replan-transport will give you the possibility to replan the transport, starting at the canceled destination.
- Be sure to select 'REPLAN and book' (plan and book is still shown. It should have been hidden...)

- Have a look at all the logistic service providers, all logistic services, all destinations etc.
- See the file TpmFixture.java for how the main domain objects link. 

The software is not as streamlined as it should be and it contains bugs. ;-)

Some screenshots are here:
![Transport Demand](https://www.assembla.com/code/transportplanner/git/nodes/master/screenshots/TransportDemand.png)
![Cost Pie](https://www.assembla.com/code/transportplanner/git/nodes/master/screenshots/TPM_CostPie.png)
![Resource Usage](https://www.assembla.com/code/transportplanner/git/nodes/master/screenshots/Tpm_ResourceUsage.png)
-

Contains shortest path java code with following copyright
 * Copyright (c) 2004-2008 Arizona State University.  All rights reserved.
![](http://code.google.com/p/k-shortest-paths/)
added Maven support to fit the rest of the project
Ajax-loader Loading, please wait...