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); }
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); }
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); }
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); }
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); }
public HighsStatus changeColBounds(int col, double lower, double upper) { return((HighsStatus)HighsLpSolver.Highs_changeColBounds(this.highs, col, lower, upper)); }
public HighsStatus changeColsCostByMask(bool[] mask, double[] cost) { return((HighsStatus)HighsLpSolver.Highs_changeColsCostByMask(this.highs, mask.Select(x => x ? 1 : 0).ToArray(), cost)); }
public HighsStatus changeColsCostBySet(int[] cols, double[] costs) { return((HighsStatus)HighsLpSolver.Highs_changeColsCostBySet(this.highs, cols.Length, cols, costs)); }
public HighsStatus changeColCost(int col, double cost) { return((HighsStatus)HighsLpSolver.Highs_changeColCost(this.highs, col, cost)); }
public HighsStatus changeObjectiveSense(HighsObjectiveSense sense) { return((HighsStatus)HighsLpSolver.Highs_changeObjectiveSense(this.highs, (int)sense)); }
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)); }
public HighsStatus deleteColsBySet(int[] cols) { return((HighsStatus)HighsLpSolver.Highs_deleteColsBySet(this.highs, cols.Length, cols)); }
public HighsStatus deleteRowsBySet(int[] rows) { return((HighsStatus)HighsLpSolver.Highs_deleteRowsBySet(this.highs, rows.Length, rows)); }
public HighsStatus changeRowsBoundsBySet(int[] rows, double[] lower, double[] upper) { return((HighsStatus)HighsLpSolver.Highs_changeRowsBoundsBySet(this.highs, rows.Length, rows, lower, upper)); }
public HighsStatus changeColsBoundsByRange(int from, int to, double[] lower, double[] upper) { return((HighsStatus)HighsLpSolver.Highs_changeColsBoundsByRange(this.highs, from, to, lower, upper)); }
public HighsStatus setDoubleOptionValue(string option, double value) { return((HighsStatus)HighsLpSolver.Highs_setDoubleOptionValue(this.highs, option, value)); }
public int getNumNz() { return(HighsLpSolver.Highs_getNumNz(this.highs)); }
public HighsStatus getIntOptionValue(string option, out int value) { return((HighsStatus)HighsLpSolver.Highs_getIntOptionValue(this.highs, option, out value)); }
public HighsStatus changeRowBounds(int row, double lower, double upper) { return((HighsStatus)HighsLpSolver.Highs_changeRowBounds(this.highs, row, lower, upper)); }
public double getObjectiveValue() { return(HighsLpSolver.Highs_getObjectiveValue(this.highs)); }
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)); }
public HighsModelStatus GetModelStatus() { return((HighsModelStatus)HighsLpSolver.Highs_getModelStatus(this.highs)); }
public HighsStatus deleteRowsByRange(int from, int to) { return((HighsStatus)HighsLpSolver.Highs_deleteRowsByRange(this.highs, from, to)); }
public int getIterationCount() { return(HighsLpSolver.Highs_getIterationCount(this.highs)); }
public HighsStatus deleteRowsByMask(bool[] mask) { return((HighsStatus)HighsLpSolver.Highs_deleteRowsByMask(this.highs, mask.Select(x => x ? 1 : 0).ToArray())); }
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)); }