private void initDualSimplex() { // Create object of DualSimplex ds = new DualSimplex(); // Set objective function, also we pass mode of Simplex ds.setObjective(targetCoefficients, minimize); // Init array of constrains double[][] constraintArray = new double[constraints.Length][]; for (int i = 0; i < constraints.Length; i++) { constraintArray[i] = new double[targetCoefficients.Length]; } int[] equations = new int[constraints.Length]; // Array of right sides of constraints double[] rhs = new double[constraints.Length]; for (int i = 0; i < constraints.Length; ++i) { constraintArray[i] = constraints[i].getCoefficients(); equations[i] = constraints[i].getEquations(); rhs[i] = constraints[i].getRHS(); } // Set parameters of dual simplex and initialize it ds.setConstraints(constraintArray, equations, rhs); ds.init(); }
/// <summary> /// Инициализация двойственого симплекс метода /// </summary> private void InitDualSimplex() { _dualSimplex = new DualSimplex(); _dualSimplex.SimplexInfo += SimplexInfo; _dualSimplex.SetObjective(_function); var constraintArray = new double[_constraintsValue.Length][]; for (int i = 0; i < _constraintsValue.Length; i++) { constraintArray[i] = new double[Variables]; } var rhs = new double[_constraintsValue.Length]; var equations = new int[_constraintsValue.Length]; for (int i = 0; i < _constraintsValue.Length; ++i) { constraintArray[i] = _constraintsValue[i].GetCoefficients(); equations[i] = _constraintsValue[i].GetEquations(); rhs[i] = _constraintsValue[i].GetRhs(); } _dualSimplex.SetConstraints(constraintArray, equations, rhs); _dualSimplex.Init(); }
private static void SolveWithDualSimplex() { Answer answer = DualSimplex.Solve(loadedModel); DisplayAnswer(answer); }