python - 在python中用多个变量解决等式和不等式
问题描述
我正在尝试解决以下问题:
2*x + 4*y = 6
0 <= x <= 2
0 <= y <= 1
我试过同情
from sympy import Poly
from sympy.solvers.inequalities import solve_rational_inequalities
from sympy.abc import x, y, z
solve_rational_inequalities([[
((Poly(2*x + 4*y ), 6), '=='),
((Poly(x), 2), '<='),
((Poly(y), 1), '<='),
((Poly(x), 0), '>='),
((Poly(y), 0), '>=')]])
但我得到了异常,多项式错误:
only univariate polynomials are allowed
有没有办法用 sympy 或任何其他 python 库来解决这个问题?
解决方案
您可以使用python-constraint:
import constraint
problem = constraint.Problem()
problem.addVariable('x', range(2))
problem.addVariable('y', [1])
def our_constraint(x, y):
if 2*x + 4*y == 6:
return True
problem.addConstraint(our_constraint, ['x','y'])
solutions = problem.getSolutions()
for solution in solutions:
print(solution)
输出:
{'y': 1, 'x': 1}
推荐阅读
- pointers - 为什么 V8 使用指针标记而不是 NaN 装箱?
- python - 如何使日期和时间成为python截取的屏幕截图的名称?
- bash - UNIX :: 包含字符串和多个数字的文件的填充
- python - 在 Django 框架上运行一个无限期进程的好方法
- javascript - 无法在 mongodb 中对日期和字段进行分组
- node.js - 错误 403 Forbidden - 发布 NPM 包时帐户被禁用
- unity3d - 使用 Unity 在 SteamVR 中用手抓取结束后,如何将游戏对象的位置设置为初始位置?
- php - 在 php 中将 2 个查询呈现为 pdf 中的 2 个单独的表
- javascript - 如何将特定/当前日期转换为 javascript 中的 unix 时间戳或纪元时间戳?
- spring - 基于 Mono 从响应式 mongodb 中检索值