C# 求解基础不可解?! 我在和微软的解决方案基金会打交道。我想求4个变量的加法,等于711。对于我这里的问题,每个人都应该至少看到一个可能的解决方案。但是我的代码不想工作。这是我的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.SolverFoundation.Services; using Microsoft.SolverFoundation.Common; namespace CSP711Problem { class Program { static void Main(string[] args) { var solver = SolverContext.GetContext(); var model = solver.CreateModel(); Domain values = Domain.IntegerRange(1, 711); Decision p1 = new Decision(values, "price1"); Decision p2 = new Decision(values, "price2"); Decision p3 = new Decision(values, "price3"); Decision p4 = new Decision(values, "price4"); model.AddDecisions(p1, p2, p3, p4); var target = 711; model.AddConstraint("Add", Model.Equals(target , p1 + p2 + p3 + p4) ); //model.AddConstraint("Mul", 711 == p1 * p2 * p3 * p4); DecisionBinding bindP1 = p1.CreateBinding(); DecisionBinding bindP2 = p2.CreateBinding(); DecisionBinding bindP3 = p3.CreateBinding(); DecisionBinding bindP4 = p4.CreateBinding(); DecisionBinding[] bindings = new DecisionBinding[] { bindP1, bindP2, bindP3, bindP4 }; solver.FindAllowedValues(bindings); string[] valuesp1 = bindP1.StringFeasibleValues.ToArray(); string[] valuesp2 = bindP2.StringFeasibleValues.ToArray(); string[] valuesp3 = bindP3.StringFeasibleValues.ToArray(); string[] valuesp4 = bindP4.StringFeasibleValues.ToArray(); Console.WriteLine("Price1: \t{0}", string.Join(", ", valuesp1)); Console.WriteLine("Price2: \t{0}", string.Join(", ", valuesp2)); Console.WriteLine("Price3: \t{0}", string.Join(", ", valuesp3)); Console.WriteLine("Price4: \t{0}", string.Join(", ", valuesp4)); //var solution = solver.Solve(); Console.ReadLine(); } } }

C# 求解基础不可解?! 我在和微软的解决方案基金会打交道。我想求4个变量的加法,等于711。对于我这里的问题,每个人都应该至少看到一个可能的解决方案。但是我的代码不想工作。这是我的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.SolverFoundation.Services; using Microsoft.SolverFoundation.Common; namespace CSP711Problem { class Program { static void Main(string[] args) { var solver = SolverContext.GetContext(); var model = solver.CreateModel(); Domain values = Domain.IntegerRange(1, 711); Decision p1 = new Decision(values, "price1"); Decision p2 = new Decision(values, "price2"); Decision p3 = new Decision(values, "price3"); Decision p4 = new Decision(values, "price4"); model.AddDecisions(p1, p2, p3, p4); var target = 711; model.AddConstraint("Add", Model.Equals(target , p1 + p2 + p3 + p4) ); //model.AddConstraint("Mul", 711 == p1 * p2 * p3 * p4); DecisionBinding bindP1 = p1.CreateBinding(); DecisionBinding bindP2 = p2.CreateBinding(); DecisionBinding bindP3 = p3.CreateBinding(); DecisionBinding bindP4 = p4.CreateBinding(); DecisionBinding[] bindings = new DecisionBinding[] { bindP1, bindP2, bindP3, bindP4 }; solver.FindAllowedValues(bindings); string[] valuesp1 = bindP1.StringFeasibleValues.ToArray(); string[] valuesp2 = bindP2.StringFeasibleValues.ToArray(); string[] valuesp3 = bindP3.StringFeasibleValues.ToArray(); string[] valuesp4 = bindP4.StringFeasibleValues.ToArray(); Console.WriteLine("Price1: \t{0}", string.Join(", ", valuesp1)); Console.WriteLine("Price2: \t{0}", string.Join(", ", valuesp2)); Console.WriteLine("Price3: \t{0}", string.Join(", ", valuesp3)); Console.WriteLine("Price4: \t{0}", string.Join(", ", valuesp4)); //var solution = solver.Solve(); Console.ReadLine(); } } },c#,.net,solver,C#,.net,Solver,但当我运行代码时,我得到一个: “微软.SoelFung.Cuff.unSimulabExeldExelt”在微软.Sover .Fun.DLL 中发生。 例外。我是新手,不知道如何解决这个问题。谁能帮帮我吗。我认为问题取决于问题的定义 谢谢 如果我读对了,你是想解a+b+c+d=711。如果没有其他公式,这是不可解的。你期望的结果是什么?我想答案应该是A=10,B=10,C=10,D=681。好的,然后我应用了第二个约束model.AddConstraintMul,model.Equalsta

但当我运行代码时,我得到一个: “微软.SoelFung.Cuff.unSimulabExeldExelt”在微软.Sover .Fun.DLL

中发生。 例外。我是新手,不知道如何解决这个问题。谁能帮帮我吗。我认为问题取决于问题的定义


谢谢

如果我读对了,你是想解a+b+c+d=711。如果没有其他公式,这是不可解的。你期望的结果是什么?我想答案应该是A=10,B=10,C=10,D=681。好的,然后我应用了第二个约束model.AddConstraintMul,model.Equalstarget,p1*p2*p3*p4;但结果是一样的。如果方程组有无穷多个解,就像这里的情况一样,它被认为是不可解的。好吧,我试着添加一些约束条件,但结果是一样的。你将如何解决这个问题?