Python |纸浆中的线性规划
线性规划(LP) ,也称为线性优化是一种数学规划技术,用于在需求由线性关系表示的数学模型中获得最佳结果或结果,如最大利润或最小成本。线性规划是数学规划的特例,也称为数学优化。 一般来说,一个组织或公司主要有两个目标,第一个是最小化,第二个是最大化。最小化意味着生产总成本最小化,而最大化意味着利润最大化。因此,借助线性规划图解法,我们可以找到最优解。
线性规划的基本术语
- 目标函数:问题的主要目标,要么最大化要么最小化,是线性规划的目标函数。在下面显示的问题中,Z(最小化)是目标函数。
- 决策变量:用于决定输出的变量为决策变量。它们是数学编程模型的未知数。在下面的问题中,我们要确定 x 和 y 的值,以便最小化 z。这里,x 和 y 是决策变量。
- 约束:这些是对决策变量的限制。在下面问题的约束下给出的决策变量的限制是线性规划的约束。
- 非负约束:在线性规划中,决策变量的值总是大于或等于 0。
注:对于一个线性规划问题,目标函数、约束和非负约束必须是线性的。
例 1: 考虑以下问题:
Minimize : Z = 3x + 5y
Subject to the constraints:
2x + 3y >= 12
-x + y <= 3
x >= 4
y <= 3
x, y >= 0
在 Python 中求解上述线性规划问题: pull 是 Python 生态系统中众多求解优化问题的库之一。您可以在 Jupyter 笔记本中安装 PlAY,如下所示:
import sys !{sys.executable} -m pip install pulp
代码:用 Python 解决前面提到的线性规划问题:
# import the library pulp as p
import pulp as p
# Create a LP Minimization problem
Lp_prob = p.LpProblem('Problem', p.LpMinimize)
# Create problem Variables
x = p.LpVariable("x", lowBound = 0) # Create a variable x >= 0
y = p.LpVariable("y", lowBound = 0) # Create a variable y >= 0
# Objective Function
Lp_prob += 3 * x + 5 * y
# Constraints:
Lp_prob += 2 * x + 3 * y >= 12
Lp_prob += -x + y <= 3
Lp_prob += x >= 4
Lp_prob += y <= 3
# Display the problem
print(Lp_prob)
status = Lp_prob.solve() # Solver
print(p.LpStatus[status]) # The solution status
# Printing the final solution
print(p.value(x), p.value(y), p.value(Lp_prob.objective))
说明:
现在,让我们一步一步地理解代码:
- 1-2 线:首先将库浆作为 p 导入。
- 第 4-5 行:通过给你的问题取一个合适的名字来定义问题,这里我给的名字是‘问题’。此外,指定目标函数的目标是最大化还是最小化。
- 第 7-9 行:定义 LpVariable 来保存目标函数的变量。下一个参数指定定义变量的下限,即 0,默认情况下上限为无。您也可以指定上限。
- 第 11-12 行:用定义的变量表示目标函数。
- 14-18 行:这些是对变量的约束。
- 第 21 行:这将在输出屏幕中向您显示问题。
- 第 23 行:这是问题求解器。
- 第 24 行:将显示问题的状态。
- 第 27 行:将打印 x 和 y 的值以及目标函数的最小值。
查看输出
# Display the problem
print(Lp_prob)
输出
status = Lp_prob.solve() # Solver
print(p.LpStatus[status]) # The solution status
输出
Optimal
# Printing the final solution
print(p.value(x), p.value(y), p.value(Lp_prob.objective))
输出
6.0 0.0 18.0
x 和 y 的最佳值分别为 6.0 和 0.0 。优化后的目标函数值为 18.0。
版权属于:月萌API www.moonapi.com,转载请注明出处