jmarkov.jmdp.solvers
Class LPBCLAverageSolver<S extends State,A extends Action>

java.lang.Object
  extended by jmarkov.jmdp.solvers.Solver<S,A>
      extended by jmarkov.jmdp.solvers.AbstractInfiniteSolver<S,A>
          extended by jmarkov.jmdp.solvers.AbstractAverageSolver<S,A>
              extended by jmarkov.jmdp.solvers.LPBCLAverageSolver<S,A>
Type Parameters:
S - States Class
A - Action class
All Implemented Interfaces:
JMarkovElement

public class LPBCLAverageSolver<S extends State,A extends Action>
extends AbstractAverageSolver<S,A>

This solver solves a average-cost infinite horizon MDP by building and solving a linear problem using as interface Xpress BCL. It requires the professional version of XpressMP and the JAVA build path must include the xprb.jar libray, for running the applications.

Author:
Diego Bello, Germán Riaño - Universidad de Los Andes (C) 2005

Field Summary
protected  long lpSolveTime
          Used to store the Linear Programming solve time
 
Fields inherited from class jmarkov.jmdp.solvers.Solver
policy, printProcessTime, printValueFunction, problem, solved, valueFunction
 
Constructor Summary
LPBCLAverageSolver(DTMDP<S,A> problem)
          The constructor method exclusively receives a problem of the type DTMDP because this solver is only designed to work on infinite discrete horizon problems.
 
Method Summary
 long getBuildTime()
           
 long getIterations()
           
 long getLpSolveTime()
           
 long getProcessTime()
           
 long getSolBuildTime()
          Returns the time needed to build the Solution after the LP was solved.
 java.lang.String label()
          The sub classes must return the Solver name.
 Solution<S,A> solve()
          Linear Programming Average Solver is a tool that builds the solution based on the MDP's mathematical background given by Puterman and the software provided by XpressMP (BCL libraries).
 
Methods inherited from class jmarkov.jmdp.solvers.AbstractInfiniteSolver
getDiscreteProblem, getProblem, printSolution
 
Methods inherited from class jmarkov.jmdp.solvers.Solver
description, getOptimalPolicy, getOptimalValueFunction, getValueFunction, isSolved, printSolution, setPrintProcessTime, setPrintValueFunction, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface jmarkov.basic.JMarkovElement
equals
 

Field Detail

lpSolveTime

protected long lpSolveTime
Used to store the Linear Programming solve time

Constructor Detail

LPBCLAverageSolver

public LPBCLAverageSolver(DTMDP<S,A> problem)
The constructor method exclusively receives a problem of the type DTMDP because this solver is only designed to work on infinite discrete horizon problems. This solver solves an average DTMDP.

Parameters:
problem - the structure of the problem of type DTMDP
Method Detail

getIterations

public long getIterations()
Specified by:
getIterations in class AbstractInfiniteSolver<S extends State,A extends Action>
Returns:
Returns the iterations in the last solve.

solve

public Solution<S,A> solve()
                                                 throws SolverException
Linear Programming Average Solver is a tool that builds the solution based on the MDP's mathematical background given by Puterman and the software provided by XpressMP (BCL libraries). Is mandatory for the use to have a Xpress professional version.

Specified by:
solve in class Solver<S extends State,A extends Action>
Returns:
The solution Object taht contains the plicy and value fuenction.
Throws:
SolverException

label

public java.lang.String label()
Description copied from class: Solver
The sub classes must return the Solver name.

Specified by:
label in interface JMarkovElement
Specified by:
label in class Solver<S extends State,A extends Action>
Returns:
A String label.
See Also:
Solver.toString()

getProcessTime

public long getProcessTime()
Specified by:
getProcessTime in class Solver<S extends State,A extends Action>
Returns:
Returns the processTime.

getBuildTime

public long getBuildTime()
Returns:
Returns the build time.

getLpSolveTime

public long getLpSolveTime()
Returns:
Returns the Linear Programming Solve Time

getSolBuildTime

public long getSolBuildTime()
Returns the time needed to build the Solution after the LP was solved.

Returns:
Returns the solBuildTime.