コード例 #1
0
ファイル: Program.cs プロジェクト: ElAdil/Graduation_Project
        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();
        }
コード例 #2
0
        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;
        }