我有一个类似于这个的问题,即四个参数的优化:
A + B + C + 1750 = T
12 = A / T * 100
15 = B / T * 100
37 = C / T * 100
它可以通过转换为矩阵形式然后使用线性代数方法来解决:
a + b + c - T = -1750
100 * a - 12 * T = 0
100 * b - 15 * T = 0
100 * c - 37 * T = 0
import numpy as np
a = np.array([[1., 1., 1., -1.],
[100., 0, 0, -12.],
[0, 100., 0, -15.],
[0, 0, 100., -37.]])
b = np.array([-1750., 0, 0, 0])
res, err, _, __ = np.linalg.lstsq(a, b)
# res: [ 583.33333333 729.16666667 1798.61111111 4861.11111111]
我的真正问题需要整数限制解决方案,即解决方案只能是整数。是否存在对np.linalg.lstsq方法的限制,或者可能是另一种解决方法,它会为a,b和c返回正整数值?
我想在我的提问中非常慎重: 这与
不是同一个问题Solving linear system over integers with numpy
由于该问题基于整数,即方程和解仅包含整数。目前的问题不同。从一些实验数据中,我得到十进制值,因为测量不完美。所以我的方程有小数。由于系统实际上是量子化的(来自分子数),因此解决方案只能是整数。因此,有一些最适合数据的整数解决方案。尽管问题可以通过分析解决,但实际上解决方案只有整数解决方案,因此必须通过一些优化程序进行拟合。
所以我重申一个问题:是否有人知道找到方程组最佳解的方法,其中解只能是零或正整数?