static void Main(string[] args) { ISolverAdapter SolverAdapter = AbstractSolverAdapter.GetSolverAadapter(SolverChoisi); object solver = SolverAdapter.CreateProblem(4); /// Entrer le nombre des variables (colonnes) comme paramétre de la fonction CreateProblem (ici c'est 4) SolverAdapter.SetObjFn(solver, new double[] { 87.9, 0, -40.45, 33.32 }); SolverAdapter.AddConstraint(solver, new double[] { 3000, 200, 2000, 1000 }, SolverAdapterConstraintTypes.LE, 4000); /// ".LE" pour "Lower than or equal to" SolverAdapter.AddConstraint(solver, new double[] { 0, 4000, 330, 112 }, SolverAdapterConstraintTypes.GE, 100); /// ".GE" pour "Greater than or equal to" SolverAdapter.AddConstraint(solver, new double[] { 1875, 61, 0, 3152 }, SolverAdapterConstraintTypes.LE, 7200); SolverAdapter.AddConstraint(solver, new double[] { -100, 6.3, 7.5, 300 }, SolverAdapterConstraintTypes.LE, 1300); SolverAdapter.Solve(solver); SolverAdapter.WriteLp(solver, FileName); Console.ReadLine(); }
private void AddCapacityConstraintsAndTargetObj(object[,] finalResult) { int nbrVar = linesDico.Values.Count; double[] coefs = new double[nbrVar]; for (int k = 0; k < nbrVar; k++) { coefs[k] = 0.0; } double[] costs = new double[nbrVar]; for (int k = 0; k < linesDico.Values.Count; k++) { Unit unit = linesDico.Values.ElementAt(k); solverAdapter.SetVariableName(solver, k + 1, unit.UnitName); if (unit.ProductItProduces == Legende.ACS || unit.Capacity == 0.0) { costs[k] = 0.0; } else { costs[k] = unit.Cost; } } solverAdapter.SetObjFn(solver, costs); for (int k = 0; k < linesDico.Values.Count; k++) { Unit unit = linesDico.Values.ElementAt(k); finalResult[k + 1, 0] = unit.UnitName; coefs[k] = 1.0; solverAdapter.SetConstraintName(solver, k + 1, "Contrainte_Capa_" + unit.UnitName); solverAdapter.AddConstraint(solver, (double[])coefs.Clone(), SolverAdapterConstraintTypes.LE, unit.Capacity); coefs[k] = 0.0; } constrIndex = nbrVar; }