我正在尝试根据Google发现的示例学习constraint
模块,并查看来源
但是,如果我尝试解决 float 值,看来我做错了。
例如,我想解决:7x+3y=10 ; 10x-20y=10
解决方案是:x = -1
和y = 17/3
唉,用constraint
模块解决会产生一个空列表解决方案:
$ cat tmp.py
#!/usr/bin/env python
"""
7x+3y=10 ; 10x-20y=10
"""
from constraint import Problem
problem = Problem()
problem.addVariable("x", [-2,-1,0,1,2])
problem.addVariable("y", [-1,1,17/3])
problem.addConstraint(lambda x, y: 7*x + 3*y == 10)
problem.addConstraint(lambda x, y: 10*x - 20*y == 10)
print problem.getSolutions()
带输出:
$ python tmp.py
[]
constraint
模块的文档是否可用? constraint
可以使用 float 约束吗? 注意:我知道17/3无法在数字计算机上准确表示。
我试过@Lucho关于使用fractions
模块的想法:遗憾的是 - 它没有解决问题。
$ cat tmp.py
#!/usr/bin/env python
"""
7x+3y=10 ; 10x-20y=10
"""
from constraint import Problem
from fractions import Fraction
frac = Fraction(17, 3)
problem = Problem()
problem.addVariable("x", [-2,-1,0,1,2])
#problem.addVariable("y", [-1,1,17/3])
problem.addVariable("y", [-1,1,frac])
problem.addConstraint(lambda x, y: 7*x + 3*y == 10)
problem.addConstraint(lambda x, y: 10*x - 20*y == 10)
print problem.getSolutions()
$ python tmp.py
[]
$
答案 0 :(得分:0)
我之前没有见过这个模块,但我的猜测是尝试使用Fractions模块来代表17/3
。
from fractions import Fraction
Fraction(17, 3)
我找到的文档是http://labix.org/doc/constraint/,但它没有说明这个特例。