python - 使用 python,我如何优化方程组并获得仅整数的解决方案?
问题描述
我有一个类似于这个的问题,即四个参数的优化:
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 的纯正整数值?
我想在我的提问中非常慎重:这不是同一个问题
由于该问题完全基于整数,即方程和解仅包含整数。现在的问题不同。从一些实验数据中,我得到了十进制值,因为测量是不完美的。所以我的方程式有小数。由于现实中的系统是量化的(来自分子数量),因此解决方案只能是整数。所以有一些最适合数据的整数解决方案。即使问题可以解析解决,但实际上的解决方案只有整数解决方案,因此必须通过一些优化程序进行拟合。
所以我重申这个问题:是否有人知道一种方法来找到方程组的最佳解,其中解只能是零或正整数?
解决方案
推荐阅读
- matlab - 我可以插入我的大型 (X,Y,Z) 数据集以获取与我收集的温度不同的数据吗?
- azure - 使用 MSAL 保护 Azure 函数 API
- python - 如何在 PyQt6 QTableWidget 单元格中显示内容的结尾?
- git - 如何在 Bitbucket 中使用文件夹组织分支?
- c++ - 调试 Win32 应用程序 C++
- javascript - 通过 React 的双向绑定将定义的值传递给 Input
- python - 未能找到可以处理输入的数据适配器:
, - python - 优化边界线以找到最大精度和真阳性率
- php - 如何访问此字符串
- php - php readfile() 打印文件内容