gov.nist.antd.merlin.algorithm.route.shortestpath.distance
Class ShortestPathDistance

java.lang.Object
  |
  +--gov.nist.antd.merlin.algorithm.AlgorithmTemplate
        |
        +--gov.nist.antd.merlin.algorithm.route.shortestpath.distance.ShortestPathDistance
All Implemented Interfaces:
Algorithm, DMLDump

public class ShortestPathDistance
extends AlgorithmTemplate

This class implement the shortest path with the Dijkstra's algorithm. The cost is the distance of a link.

 This class was developed at the National Institute of Standards and
 Technology by employees of the Federal Government in the course of
 their official duties. Pursuant to title 17 Section 105 of the United
 States Code this software is not subject to copyright protection and
 is in the public domain.
 NIST assumes no responsibility whatsoever for its use by other parties,
 and makes no guarantees, expressed or implied, about its quality,
 reliability, or any other characteristic.
 
We would appreciate acknowledgement if the software is used.
NIST ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.

Author:
borchert
, rouil

Field Summary
private  Graph graph
          The graph of the net
private  double requestedBandwidth
          The Quality of Service for the path.
 
Fields inherited from class gov.nist.antd.merlin.algorithm.AlgorithmTemplate
 
Fields inherited from interface gov.nist.antd.optical.algorithm.Algorithm
ROUTING, RWA, UNKNOWN, WAVELENGTH
 
Constructor Summary
ShortestPathDistance()
          Default Constructor
 
Method Summary
 void buildPath(Vertex source, Vertex dest, java.util.Vector v)
          Recursive routine to build path to dest after running shortest path algorithm.
 void dijkstra(int startId)
          The Dijktra's algorithm.
 java.lang.Object[] execute(Glass net, OpticalConnection[] routes, java.lang.Object[] parameter)
          This method executes the algorithm in the synchronized mode.
 java.util.Vector execute(Glass net, java.util.Vector routes, java.util.Vector parameter)
          This method executes the algorithm.
private  double getCost(Edge edge, int fromHost)
          Get the cost of the given edge.
 byte getType()
          Returns the value of routing algorithms.
 void processRequest(OpticalConnection oRoute)
          Process a request
 java.lang.String toDML()
          This method generates the DML representation of this class.
 
Methods inherited from class gov.nist.antd.merlin.algorithm.AlgorithmTemplate
config, getName, isDebug, setDebug, setName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

graph

private Graph graph
The graph of the net


requestedBandwidth

private double requestedBandwidth
The Quality of Service for the path.

Constructor Detail

ShortestPathDistance

public ShortestPathDistance()
Default Constructor

Method Detail

dijkstra

public void dijkstra(int startId)
The Dijktra's algorithm. The cost of an edge is the distance of the link

Parameters:
startId - the id of the node the diekstra has to start from.

getCost

private double getCost(Edge edge,
                       int fromHost)
Get the cost of the given edge. The cost contains the distance. Is the link down, link in protection, or the bandwith < the distance the result will be a cost of == Double.POSITIVE_INFINITY; and the bandwidth == 0.0;

Parameters:
edge - The edge.
fromHost - The source node
Returns:
A double value containing the distance.

buildPath

public void buildPath(Vertex source,
                      Vertex dest,
                      java.util.Vector v)
Recursive routine to build path to dest after running shortest path algorithm. The path is known to exist.

Parameters:
source - The source vertex.
dest - The destination vertex
v - The vector where the path is stored.

processRequest

public void processRequest(OpticalConnection oRoute)
Process a request

Parameters:
oRoute - The connection Request

execute

public java.util.Vector execute(Glass net,
                                java.util.Vector routes,
                                java.util.Vector parameter)
                         throws AlgorithmException
This method executes the algorithm.

Specified by:
execute in interface Algorithm
Specified by:
execute in class AlgorithmTemplate
Parameters:
net - The OpNet that contains the topology.
routes - The vector containing the OpticalConnection objects. These objects must not have an owner.
parameter - not used by this algorithm.
Returns:
The route vector containing the objects of OpticalRoutes with the calculated linklist.
Throws:
AlgorithmException - An AlgorithmException occured.

execute

public java.lang.Object[] execute(Glass net,
                                  OpticalConnection[] routes,
                                  java.lang.Object[] parameter)
                           throws AlgorithmException
This method executes the algorithm in the synchronized mode.

Specified by:
execute in interface Algorithm
Overrides:
execute in class AlgorithmTemplate
Parameters:
net - The OpNet that contains the topology.
routes - The array of OpticalConnection objects. These objects must not have an owner.
parameter - The array of objects containing the parameters for the algorithm.
Returns:
The array of objects containing the result.
Throws:
AlgorithmException - An AlgorithmException occured.

toDML

public java.lang.String toDML()
This method generates the DML representation of this class. Only return the options.

Specified by:
toDML in interface DMLDump
Overrides:
toDML in class AlgorithmTemplate
Returns:
The DML configuration as String

getType

public byte getType()
Returns the value of routing algorithms.

Specified by:
getType in interface Algorithm
Overrides:
getType in class AlgorithmTemplate
Returns:
The value Algorithm.ROUTING.