我需要一个方程式来找到不等式的所有解。例如:5x+4y+3z+3a+3b>40
。必须从x
,y
获取5个未知数z
,a
,b
,4.0
和3.5
, 3.0
,2.5
,2.0
,1.5
,1.0
,0.5
和0.0
。例如x=4
,y=4
,z=1
,a=1
,b=1
是一个概率,但还有更多。如何让我的电脑找到所有这些?
答案 0 :(得分:0)
主要的是弄清楚如何循环所有可能性。在大多数语言中,你会遇到五个for循环。 Python允许您使用itertools.product
来完成此任务:
#!/usr/local/bin/python3
from itertools import product
for g in product(range(9),repeat=5):
if 5*g[0]+4*g[1]+3*g[2]+3*g[3]+3*g[4] > 80:
print([x/2 for x in g])
而不是0-4乘以.5,我将所有内容加倍为整数。你可能想重新思考一下。 ./gpa.py | wc
告诉我你将获得超过2万种可能的解决方案。 (如果你只需要找到解决方案的数量,而不是列出它们,那么这可能会简化你的工作。)
答案 1 :(得分:0)
如上所述,这是一个整数编程问题(线性编程的特例)。网络搜索应该会产生大量的点击。这通常是一个非常难以解决的问题;我的建议是使用像GLPK这样的包。整数编程非常有用,因此即使这个特定问题的范围有限,也非常值得花时间弄清楚如何解决它,因此您可以将整数编程应用于您可能遇到的其他问题。