python - 求解带约束的线性方程
问题描述
我对线性编程的主题很陌生,并希望得到任何指示。
我有一个稍微复杂的方程,但这里有一个更简单的问题版本:
x1 + x2 = 10
#subject to the following constraints:
0 <= x1 <= 5 and
3x1 <= x2 <= 20
基本上x2
必须有一个大于 3 倍的值x1
。所以在这种情况下,解决方案是,x1 = [0,1,2]
并且相应地x2 = [10, 9, 8]
有很多材料可以最小化或最大化目标函数,但这不是其中之一。你怎么称呼解决这类问题,还有什么推荐的方法来解决这个问题,最好使用python中的一些库来找到一个或多个可行的解决方案?
解决方案
您的问题可以表述为
min 0*x1+0*x2 ("zero coefficients")
受制于
x1+x2=10
3x1-x2<=0
x2<=20 (note that this constraint follows from x1,x2>=0 and their sum being 10)
这可以很容易地输入到诸如纸浆之类的线性编程包中。我更像是 R 用户而不是 python 用户,因此我无法提供详细信息。您也可以在没有任何编程的情况下在线解决它。
编辑:重读您的问题,我发现您想要的解决方案不是连续的(例如,您似乎不是在寻找 [2.5, 7.5] 作为解决方案),但仅限于整数值。该问题将被称为“混合整数问题”而不是“线性问题”。但是,如果您可以将 variables 声明为整数x1
,则 Pulp 应该能够解决它。x2
另一点是,如果您在给定约束条件下追求所有整数解决方案。在 stackoverflow 上已经对此进行了一些讨论,但是我不确定纸浆是否可以开箱即用。
推荐阅读
- c - c中var的地址是按值传递的吗?
- python - 如何从多个 csv 文件中获取每 X 行的列的平均值
- tensorflow - 如何让 Google Cloud AI Platform 在训练期间检测 `tf.summary.scalar` 调用?
- redis - Redis公牛连接错误ECONNREFUSED 127.0.0.1:6379
- c# - 如何从设置中读取字典数组
- excel - 当我使用 INDIRECT 向下拖动时,行号不会更新
- java - Java 1.6 上 Base64 的替代方案?
- mysql - MySQL:用户 root@localhost 的访问被拒绝
- java - 将 pojo 类列表中的值放入 hashmap
- php - 我在使用 Wordpress 函数 get_template_part() 时遇到问题