Domanda

Do qualcuno sa qualsiasi semplice risolutore in grado di risolvere modelli matematici lineari vincolo? Esempio di un modello semplice:

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

sto usando MS Risolutore fondazione e questo è il mio codice C #, ma gettare 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);

Grazie per qualsiasi aiuto

Modifica

A causa int CSP (vincolo sstisfaction programmazione) problema, non si dovrebbe usare una direttiva quando risolverlo. Il codice dovrebbe essere:

    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);

Tuttavia, non so il motivo per cui mi sono imbattuto al lentamente ho solo bisogno la prima soluzione nel set di soluzione.

È stato utile?

Soluzione

A seconda delle esigenze, Wolfram Alpha può essere utile (almeno per la verifica). Dubito che si possa risolvere problemi complessi, perché l'ingresso è lunghezza limitata. Ma per problemi semplici come il tuo esempio, è 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

alt text

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top