jmarkov.jmdp.solvers

## Class LPBCLAverageSolver<S extends State,A extends Action>

- java.lang.Object
- - jmarkov.jmdp.solvers.Solver<S,A>
  - - jmarkov.jmdp.solvers.AbstractInfiniteSolver<S,A>
    - - jmarkov.jmdp.solvers.AbstractAverageSolver<S,A>
      - - 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 library, for running the applications.
  Author:
    Diego Bello, Germán Riaño - Universidad de Los Andes (C) 2005

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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

      `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

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface jmarkov.basic.JMarkovElement

      `equals`

- - ### 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. It actually just builds a LPBCLDiscountedSolver object without a discount factor, all the heavy lifting is done by that class.
      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.