Exemple #1
0
    public HighsStatus getStringOptionValue(string option, out string value)
    {
        var stringBuilder = new StringBuilder();
        var result        = (HighsStatus)HighsLpSolver.Highs_getStringOptionValue(this.highs, option, stringBuilder);

        value = stringBuilder.ToString();
        return(result);
    }
Exemple #2
0
    public HighsSolution getSolution()
    {
        int nc = this.getNumCol();
        int nr = this.getNumRow();

        HighsSolution sol = new HighsSolution(nc, nr);

        HighsLpSolver.Highs_getSolution(this.highs, sol.colvalue, sol.coldual, sol.rowvalue, sol.rowdual);
        return(sol);
    }
Exemple #3
0
    protected virtual void Dispose(bool disposing)
    {
        if (this._disposed)
        {
            return;
        }

        HighsLpSolver.Highs_destroy(this.highs);
        this._disposed = true;
    }
    public static int call(HighsModel model, ref HighsSolution sol, ref HighsBasis bas)
    {
        int nc  = model.colcost.Length;
        int nr  = model.rowlower.Length;
        int nnz = model.avalue.Length;

        return(HighsLpSolver.Highs_call(nc, nr, nnz, model.colcost, model.collower, model.colupper,
                                        model.rowlower, model.rowupper, model.astart, model.aindex, model.avalue,
                                        sol.colvalue, sol.coldual, sol.rowvalue, sol.rowdual, bas.colbasisstatus, bas.rowbasisstatus));
    }
    public HighsBasis getBasis()
    {
        int nc = this.getNumCols();
        int nr = this.getNumRows();

        HighsBasis bas = new HighsBasis(nc, nr);

        HighsLpSolver.Highs_getBasis(this.highs, bas.colbasisstatus, bas.rowbasisstatus);
        return(bas);
    }
Exemple #6
0
    public HighsBasis getBasis()
    {
        int nc = this.getNumCol();
        int nr = this.getNumRow();

        int[] colbasstat = new int[nc];
        int[] rowbasstat = new int[nr];

        HighsLpSolver.Highs_getBasis(this.highs, colbasstat, rowbasstat);
        HighsBasis bas = new HighsBasis(colbasstat.Select(x => (HighsBasisStatus)x).ToArray(), rowbasstat.Select(x => (HighsBasisStatus)x).ToArray());

        return(bas);
    }
    static void Main(string[] args)
    {
        double[]            cc       = { 1, -2 };
        double[]            cl       = { 0, 0 };
        double[]            cu       = { 10, 10 };
        double[]            rl       = { 0, 0 };
        double[]            ru       = { 2, 1 };
        int[]               astart   = { 0, 2 };
        int[]               aindex   = { 0, 1, 0, 1 };
        double[]            avalue   = { 1, 2, 1, 3 };
        HighsObjectiveSense sense    = HighsObjectiveSense.kMinimize;
        double              offset   = 0;
        HighsMatrixFormat   a_format = HighsMatrixFormat.kColwise;

        HighsModel model = new HighsModel(cc, cl, cu, rl, ru, astart, aindex, avalue, offset, a_format, sense);

        HighsLpSolver solver = new HighsLpSolver();

        HighsStatus status = solver.passLp(model);

        status = solver.run();
        HighsSolution    sol         = solver.getSolution();
        HighsBasis       bas         = solver.getBasis();
        HighsModelStatus modelStatus = solver.GetModelStatus();

        Console.WriteLine("Status: " + status);
        Console.WriteLine("Modelstatus: " + modelStatus);

        for (int i = 0; i < sol.rowvalue.Length; i++)
        {
            Console.WriteLine("Activity for row " + i + " = " + sol.rowvalue[i]);
        }
        for (int i = 0; i < sol.coldual.Length; i++)
        {
            Console.WriteLine("Reduced cost x[" + i + "] = " + sol.coldual[i]);
        }
        for (int i = 0; i < sol.rowdual.Length; i++)
        {
            Console.WriteLine("Dual value for row " + i + " = " + sol.rowdual[i]);
        }
        for (int i = 0; i < sol.colvalue.Length; i++)
        {
            Console.WriteLine("x" + i + " = " + sol.colvalue[i] + " is " + bas.colbasisstatus[i]);
        }
    }
    static void Main(string[] args)
    {
        double[] cc     = { 1, -2 };
        double[] cl     = { 0, 0 };
        double[] cu     = { 10, 10 };
        double[] rl     = { 0, 0 };
        double[] ru     = { 2, 1 };
        int[]    astart = { 0, 2, 4 };
        int[]    aindex = { 0, 1, 0, 1 };
        double[] avalue = { 1, 2, 1, 3 };

        HighsModel model = new HighsModel(cc, cl, cu, rl, ru, astart, aindex, avalue);

        HighsSolution sol = new HighsSolution(2, 2);

        HighsBasis bas = new HighsBasis(2, 2);

        int status = HighsLpSolver.call(model, ref sol, ref bas);

        Console.WriteLine("Status: " + status);
    }
Exemple #9
0
    public static HighsStatus call(HighsModel model, ref HighsSolution sol, ref HighsBasis bas, ref HighsModelStatus modelstatus)
    {
        int nc  = model.colcost.Length;
        int nr  = model.rowlower.Length;
        int nnz = model.avalue.Length;

        int[] colbasstat = new int[nc];
        int[] rowbasstat = new int[nr];

        int modelstate = 0;

        HighsStatus status = (HighsStatus)HighsLpSolver.Highs_call(nc, nr, nnz, model.colcost, model.collower, model.colupper,
                                                                   model.rowlower, model.rowupper, model.astart, model.aindex, model.avalue,
                                                                   sol.colvalue, sol.coldual, sol.rowvalue, sol.rowdual, colbasstat, rowbasstat, ref modelstate);

        modelstatus = (HighsModelStatus)modelstate;

        bas.colbasisstatus = colbasstat.Select(x => (HighsBasisStatus)x).ToArray();
        bas.rowbasisstatus = rowbasstat.Select(x => (HighsBasisStatus)x).ToArray();

        return(status);
    }
Exemple #10
0
 public HighsStatus changeColBounds(int col, double lower, double upper)
 {
     return((HighsStatus)HighsLpSolver.Highs_changeColBounds(this.highs, col, lower, upper));
 }
Exemple #11
0
 public HighsStatus changeColsCostByMask(bool[] mask, double[] cost)
 {
     return((HighsStatus)HighsLpSolver.Highs_changeColsCostByMask(this.highs, mask.Select(x => x ? 1 : 0).ToArray(), cost));
 }
Exemple #12
0
 public HighsStatus changeColsCostBySet(int[] cols, double[] costs)
 {
     return((HighsStatus)HighsLpSolver.Highs_changeColsCostBySet(this.highs, cols.Length, cols, costs));
 }
Exemple #13
0
 public HighsStatus changeColCost(int col, double cost)
 {
     return((HighsStatus)HighsLpSolver.Highs_changeColCost(this.highs, col, cost));
 }
Exemple #14
0
 public HighsStatus changeObjectiveSense(HighsObjectiveSense sense)
 {
     return((HighsStatus)HighsLpSolver.Highs_changeObjectiveSense(this.highs, (int)sense));
 }
Exemple #15
0
 public HighsStatus addCols(double[] costs, double[] lower, double[] upper, int[] starts, int[] indices, double[] values)
 {
     return((HighsStatus)HighsLpSolver.Highs_addCols(this.highs, costs.Length, costs, lower, upper, indices.Length, starts, indices, values));
 }
Exemple #16
0
 public HighsStatus deleteColsBySet(int[] cols)
 {
     return((HighsStatus)HighsLpSolver.Highs_deleteColsBySet(this.highs, cols.Length, cols));
 }
Exemple #17
0
 public HighsStatus deleteRowsBySet(int[] rows)
 {
     return((HighsStatus)HighsLpSolver.Highs_deleteRowsBySet(this.highs, rows.Length, rows));
 }
Exemple #18
0
 public HighsStatus changeRowsBoundsBySet(int[] rows, double[] lower, double[] upper)
 {
     return((HighsStatus)HighsLpSolver.Highs_changeRowsBoundsBySet(this.highs, rows.Length, rows, lower, upper));
 }
Exemple #19
0
 public HighsStatus changeColsBoundsByRange(int from, int to, double[] lower, double[] upper)
 {
     return((HighsStatus)HighsLpSolver.Highs_changeColsBoundsByRange(this.highs, from, to, lower, upper));
 }
Exemple #20
0
 public HighsStatus setDoubleOptionValue(string option, double value)
 {
     return((HighsStatus)HighsLpSolver.Highs_setDoubleOptionValue(this.highs, option, value));
 }
Exemple #21
0
 public int getNumNz()
 {
     return(HighsLpSolver.Highs_getNumNz(this.highs));
 }
Exemple #22
0
 public HighsStatus getIntOptionValue(string option, out int value)
 {
     return((HighsStatus)HighsLpSolver.Highs_getIntOptionValue(this.highs, option, out value));
 }
Exemple #23
0
 public HighsStatus changeRowBounds(int row, double lower, double upper)
 {
     return((HighsStatus)HighsLpSolver.Highs_changeRowBounds(this.highs, row, lower, upper));
 }
Exemple #24
0
 public double getObjectiveValue()
 {
     return(HighsLpSolver.Highs_getObjectiveValue(this.highs));
 }
Exemple #25
0
 public HighsStatus changeRowsBoundsByMask(bool[] mask, double[] lower, double[] upper)
 {
     return((HighsStatus)HighsLpSolver.Highs_changeRowsBoundsByMask(this.highs, mask.Select(x => x ? 1 : 0).ToArray(), lower, upper));
 }
Exemple #26
0
 public HighsModelStatus GetModelStatus()
 {
     return((HighsModelStatus)HighsLpSolver.Highs_getModelStatus(this.highs));
 }
Exemple #27
0
 public HighsStatus deleteRowsByRange(int from, int to)
 {
     return((HighsStatus)HighsLpSolver.Highs_deleteRowsByRange(this.highs, from, to));
 }
Exemple #28
0
 public int getIterationCount()
 {
     return(HighsLpSolver.Highs_getIterationCount(this.highs));
 }
Exemple #29
0
 public HighsStatus deleteRowsByMask(bool[] mask)
 {
     return((HighsStatus)HighsLpSolver.Highs_deleteRowsByMask(this.highs, mask.Select(x => x ? 1 : 0).ToArray()));
 }
Exemple #30
0
 public HighsStatus addCol(double cost, double lower, double upper, int[] indices, double[] values)
 {
     return((HighsStatus)HighsLpSolver.Highs_addCol(this.highs, cost, lower, upper, indices.Length, indices, values));
 }