使用python,我如何优化方程组并获得仅整数解?

时间:2018-06-09 03:12:07

标签: python optimization integer linear-algebra least-squares

我有一个类似于这个的问题,即四个参数的优化:

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

由于该问题基于整数,即方程和解仅包含整数。目前的问题不同。从一些实验数据中,我得到十进制值,因为测量不完美。所以我的方程有小数。由于系统实际上是量子化的(来自分子数),因此解决方案只能是整数。因此,有一些最适合数据的整数解决方案。尽管问题可以通过分析解决,但实际上解决方案只有整数解决方案,因此必须通过一些优化程序进行拟合。

所以我重申一个问题:是否有人知道找到方程组最佳解的方法,其中解只能是零或正整数?

0 个答案:

没有答案