risolutore risolvere vincolo problema di programmazione
-
28-09-2019 - |
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.
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.