سؤال

هل يعرف أي شخص أي حلال بسيط يمكنه حل نماذج الرياضيات القياسية الخطي؟ مثال نموذج بسيط:

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 مفيدًا (على الأقل للتحقق). أشك في أنه يمكنك حل المشكلات المعقدة ، لأن المدخلات محدودة. ولكن للمشاكل البسيطة كمثالك ، لا بأس.

http://www.wolframalpha.com/input/؟i=solve+A+٪2B+B+٪2B+C+٪3D٪3D+100٪3B+A٪2FB+٪3D+ 2٪2F3٪3B+B ٪ 2FC ٪ 3D ٪ 3D3 ٪ 2F4 ٪ 3B+A+٪ 3E+D

alt text

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top