حل حلول حل مشكلة برمجة القيد
-
28-09-2019 - |
سؤال
هل يعرف أي شخص أي حلال بسيط يمكنه حل نماذج الرياضيات القياسية الخطي؟ مثال نموذج بسيط:
a + b + c = 100;
a/b/c = 2/3/4;
a > d
أنا أستخدم MS Solver Foundation وهذا هو رمز C# الخاص بي ، لكنه يرمي unlvableModelexception:
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);
شكرا على اي مساعدة
يحرر:
نظرًا لأن مشكلة Int CSP (قيود برمجة Sstispaction) ، يجب ألا تستخدم أي توجيه عند حلها. يجب أن يكون الرمز:
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);
ومع ذلك ، لا أعرف لماذا ركضت ببطء أنا فقط بحاجة إلى الحل الأول في مجموعة الحلول.
المحلول
اعتمادًا على احتياجاتك ، قد يكون Wolfram Alpha مفيدًا (على الأقل للتحقق). أشك في أنه يمكنك حل المشكلات المعقدة ، لأن المدخلات محدودة. ولكن للمشاكل البسيطة كمثالك ، لا بأس.
لا تنتمي إلى StackOverflow