Question

Ne quelqu'un sait tout solveur simple qui peut résoudre des modèles mathématiques de contraintes linéaires? Exemple d'un modèle simple:

a + b + c = 100;
a/b/c = 2/3/4;
a > d

J'utilise MS base Solver et ceci est mon code C #, mais il jette UnsolvableModelException:

        SolverContext solverContext = SolverContext.GetContext();
        Model model = solverContext.CreateModel();
        Decision a = new Decision(Domain.Real, "a");
        Decision b = new Decision(Domain.Real, "b");
        model.AddDecisions(a, b);
        model.AddConstraint("fator", a / b ==  4);
        model.AddConstraint("sum", a + b == 5);
        Solution solution = solverContext.Solve(new ConstraintProgrammingDirective());
        Report report = solution.GetReport();
        Console.WriteLine("a = {0} ; b = {1}", a, b);

Merci pour toute aide

Modifier

Parce problème int CSP (contrainte de programmation sstisfaction), vous ne devez pas utiliser la directive lors de résoudre. Le code doit être:

    SolverContext solverContext = SolverContext.GetContext();
    Model model = solverContext.CreateModel();
    Decision a = new Decision(Domain.Real, "a");
    Decision b = new Decision(Domain.Real, "b");
    model.AddDecisions(a, b);
    model.AddConstraint("fator", a / b ==  4);
    model.AddConstraint("sum", a + b == 5);
    Solution solution = solverContext.Solve();
    Report report = solution.GetReport();
    Console.WriteLine("a = {0} ; b = {1}", a, b);

Cependant, je ne sais pas pourquoi j'ai couru lentement je ne ai besoin la première solution dans l'ensemble de la solution.

Était-ce utile?

La solution

En fonction de vos besoins, Wolfram Alpha peut être utile (au moins pour la vérification). Je doute que vous pouvez résoudre des problèmes complexes, car l'entrée est de longueur limitée. Mais pour des problèmes simples comme votre exemple, il est OK.

http://www.wolframalpha.com/input/?i=solve+a+ % 2B + b +% 2B + c +% 3D% 3D + 100% 3B + a% 2Fb +% 3D% 3D + 2% 2F3% 3B + b% 2fc% 3D% 3D3% 2F4% 3B + a +% 3E + d

text alt

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top