Class KXPRSLinearRelaxationSolver


  • public class KXPRSLinearRelaxationSolver
    extends KLinearRelaxationSolver
    This linear relaxation solver relies on XPress Optimizer to solve the LP/MIP
    problem.

    Example:
    
    // ...
    KProblem myProblem(mySession,"");
    // ...
    KLinearRelaxation * relax = myProblem.getLinearRelaxation();
    KXPRSLinearRelaxationSolver mySolver(*relax, objectiveVar, KProblem::Minimize);
    

    You must have XPress Optimizer installed to use this.

    Since:
    2016.1
    • Constructor Detail

      • KXPRSLinearRelaxationSolver

        protected KXPRSLinearRelaxationSolver​(long cPtr,
                                              boolean cMemoryOwn)
      • KXPRSLinearRelaxationSolver

        public KXPRSLinearRelaxationSolver​(KLinearRelaxation relax,
                                           KNumVar obj,
                                           int sense,
                                           int storedBasisSize)
        Constructor (note: no default constructor).

        Parameters:
        relax - domain (a linear relaxation)
        obj - the objective variable
        sense - the sense for optimization
        storedBasisSize - maximum depth for basis reload
      • KXPRSLinearRelaxationSolver

        public KXPRSLinearRelaxationSolver​(KLinearRelaxation relax,
                                           KNumVar obj,
                                           int sense)
        Constructor (note: no default constructor).

        Parameters:
        relax - domain (a linear relaxation)
        obj - the objective variable
        sense - the sense for optimization
    • Method Detail

      • setObjective

        public void setObjective​(KNumVar var)
        Set objective variable.

        Overrides:
        setObjective in class KRelaxationSolver
        Parameters:
        var - the new objective variable
      • solve

        public int solve()
        Call (XPress-Optimizer) and return an error code (see class
        KLinearRelaxationSolver for its meaning).
        Overrides:
        solve in class KRelaxationSolver
      • getBound

        public double getBound()
        Get the bound computed by the solver (see class KLinearRelaxationSolver).
        Overrides:
        getBound in class KRelaxationSolver
      • getBestBound

        public double getBestBound()
        Get the best bound in a branch and bound tree.

        Useful if search terminated before optimality.
        Overrides:
        getBestBound in class KRelaxationSolver
      • print

        public void print()
        Print the internal state of the solver.
        Use is discouraged, use method `writeLP` to output the content of the
        solver.
        Overrides:
        print in class KRelaxationSolver
      • writeLP

        public int writeLP​(java.lang.String filename)
        Write the current problem to a file in lp format.
        Overrides:
        writeLP in class KLinearRelaxationSolver
        Parameters:
        filename - the path of the file to write (existing file is overwrited, if any)
        Returns:
        return code is reserved for future use (for now, errors are trapped by an exception)
      • generateCuts

        public void generateCuts​(KLinearRelaxation relaxation)
        Generate cuts.

        If possible, cuts are added to the matrix of constraints to make
        the relaxation tighter and improve the bound.
        Overrides:
        generateCuts in class KLinearRelaxationSolver
      • printSolution

        public void printSolution​(boolean MIPflag)
        Print the current solution.

        Parameters:
        MIPflag - to choose whether to print the current MIP solution or the current LP solution
      • printVariables

        public void printVariables()
        Print variables name and their rank.
        This is useful to recover the meaning of the columns in the LP file produced by writeLP().
      • getMIPSolution

        public double getMIPSolution​(KNumVar var)
        Get the current MIP solution for a KNumVar variable.

        Overrides:
        getMIPSolution in class KRelaxationSolver
        Parameters:
        var - variable whose value is checked
        Returns:
        value of var in the current MIP solution
      • getMIPSolution

        public double getMIPSolution​(KAuxVar var)
        Get the current MIP solution for a KAuxVar variable.

        Overrides:
        getMIPSolution in class KRelaxationSolver
        Parameters:
        var - variable whose value is checked
        Returns:
        value of var in the current MIP solution
      • getLPSolution

        public double getLPSolution​(KNumVar var)
        Get the current MIP solution for a KNumVar variable.

        Overrides:
        getLPSolution in class KRelaxationSolver
        Parameters:
        var - variable whose value is checked
        Returns:
        value of var in the current MIP solution
      • getLPSolution

        public double getLPSolution​(KAuxVar var)
        Get the current LP solution for a KAuxVar variable.

        Overrides:
        getLPSolution in class KRelaxationSolver
        Parameters:
        var - variable whose value is checked
        Returns:
        value of var in the current solution
      • updateSolution

        public void updateSolution​(boolean MIPflag)
        Update the KHybridSolution object with the current MIP (MIPflag=true) or
        LP (MIPflag=false) solution.

        Parameters:
        MIPflag - true to get the current MIP solution, false for LP.
      • getSolutionPtr

        public KHybridSolution getSolutionPtr()
        Get a pointer to the solution contained in the solver.
        Method `updateSolution` must be used before the call.
      • getNumberGlobals

        public int getNumberGlobals()
        Get the number of global variables.

        Overrides:
        getNumberGlobals in class KRelaxationSolver
        Returns:
        number of global variables
      • getReducedCost

        public double getReducedCost​(KNumVar var)
        Get reduced costs.
        Note that LP solve is must be complete.

        Overrides:
        getReducedCost in class KLinearRelaxationSolver
        Parameters:
        var - the variable whose reduced cost in the current LP solution is retrieved
        Returns:
        reduced cost value
      • getReducedCost

        public double getReducedCost​(KAuxVar var)
        Get reduced costs.
        Note that LP solve must be complete.

        Overrides:
        getReducedCost in class KLinearRelaxationSolver
        Parameters:
        var - the variable whose reduced cost in the current LP solution is retrieved
        Returns:
        reduced cost value
      • printSolverOutput

        public void printSolverOutput​(boolean flag)
        Activate or deactivate solver verbose output.
      • printSolverOutput

        public void printSolverOutput​(boolean flag,
                                      com.artelys.kalis.SWIGTYPE_p_void callback,
                                      com.artelys.kalis.SWIGTYPE_p_void userPtr)
      • setPresolve

        public void setPresolve​(boolean arg0)
        Activate or deactivate presolve.
      • setMipRelStop

        public void setMipRelStop​(double arg0)
        Set MIPRELSTOP double control.