Python constraint库getSolutions()无结果,期望Km=1的约束解求帮助
解决Python constraint库求解约束问题返回空解的问题
你的代码逻辑本身是正确的,目标解Nd=0, Qd=0, Km=1, Ka=0, Mx=0确实满足约束条件,但返回空解的原因大概率是求解器或库的安装问题,以下是具体修复步骤:
步骤1:确保安装正确的约束库
注意不要安装重名的错误库,正确的约束求解库是python-constraint,执行以下命令重新安装:pip uninstall constraint pip install python-constraint步骤2:显式指定回溯求解器
默认求解器可能存在适配问题,显式指定BacktrackingSolver可以解决这个问题,修改后的完整代码如下:from constraint import Problem, BacktrackingSolver wt_Nd = 1 wt_Qd = 1 wt_Km = 42 wt_Ka = 14 wt_Mx = 16 # 指定回溯求解器 problem = Problem(BacktrackingSolver()) problem.addVariable('Nd', range(1)) problem.addVariable('Qd', range(2)) problem.addVariable('Ka', range(2)) problem.addVariable('Km', range(2)) problem.addVariable('Mx', range(1)) value_diff = 42 def constraint_func(Nd, Qd, Km, Ka, Mx): total = Nd * wt_Nd + Qd * wt_Qd + Km * wt_Km + Ka * wt_Ka + Mx * wt_Mx return total == value_diff problem.addConstraint(constraint_func, ('Nd','Qd','Km', 'Ka', 'Mx')) solutions = problem.getSolutions() print(solutions)步骤3:验证约束逻辑(可选)
你可以手动验证目标解是否满足约束,添加测试代码确认:# 测试目标解是否符合约束 print(constraint_func(0, 0, 1, 0, 0)) # 输出True则说明约束逻辑正确
运行修改后的代码,就能得到你期望的解:[{'Nd': 0, 'Qd': 0, 'Km': 1, 'Ka': 0, 'Mx': 0}]
内容的提问来源于stack exchange,提问作者The August
相关产品推荐
相关产品推荐

