假设我有 n 个变量。每个变量都有下限和上限。我想找到这些变量的所有合适组合以求和所需的值。
一个有两个变量的例子:
所以结果看起来像
这些变量可以采用上面给出的整数和十进制值。可以根据需要选择这些变量中的每一个的扰动值。这里使用的扰动值是 Pert[X1,X2]=[0.2,0.2]。
这个求解两个变量的问题比有 n 个变量要简单。
Python中是否有可用的算法来解决这样的问题?如果可以提供使用该算法解决类似问题的 Python 代码,那将更有帮助。
假设我有 n 个变量。每个变量都有下限和上限。我想找到这些变量的所有合适组合以求和所需的值。
一个有两个变量的例子:
所以结果看起来像
这些变量可以采用上面给出的整数和十进制值。可以根据需要选择这些变量中的每一个的扰动值。这里使用的扰动值是 Pert[X1,X2]=[0.2,0.2]。
这个求解两个变量的问题比有 n 个变量要简单。
Python中是否有可用的算法来解决这样的问题?如果可以提供使用该算法解决类似问题的 Python 代码,那将更有帮助。
这个问题可以写成“受限背包”问题:给定一组物品,每个物品的重量为 ,根据背包的总重量,最多用每个物品的一定数量在数学上,它写成:
在您的情况下,每个变量的权重应该对应于扰动。然后你解决上面的优化问题,你的值是,你的上限是。
在您的情况下,您可以设置:。
代码审查 se似乎有一个 Python 片段。不保证此代码段的正确性或效率。您还可以通过CVXOPT包使用GNU 线性编程工具包(GLPK) 。我不知道这些工具是否可以提供所有可行的解决方案,或者如果找到最佳(即满足等式约束;即背包完全装满)组合,它们是否会停止。
使用您列出的约束,您可以将声明为整数,然后使用 IP 求解器求解(请参阅开源 coin-or 求解器,以及 cplex 或 gurobi,如果您可以访问它们)枚举所有可行的整数解。从这里您可以轻松计算扰动值,并找到目标集。