增广拉格朗日乘子法示范代码
时间: 2024-12-12 07:12:22 浏览: 31
增广拉格朗日乘子法是一种优化技术,用于解决约束优化问题,它将原问题与一组附加的惩罚项结合,通过引入拉格朗日函数来处理约束条件。以下是一个简单的线性规划示例的Python代码:
```python
import numpy as np
# 定义目标函数 f(x) = x[0] + 2x[1]
def objective_function(x):
return x[0] + 2 * x[1]
# 定义约束条件 A*x <= b
A = np.array([[1, 0], [0, 1]])
b = np.array([1, 1])
# 拉格朗日函数 L(x, lambda)
def lagrangian_function(x, lambda_):
return objective_function(x) - np.dot(lambda_, (A @ x - b))
# 初始猜测值
x_guess = np.zeros(2)
lambda_guess = np.zeros(2)
# 学习率
alpha = 0.01
for _ in range(100): # 这里假设迭代100次
grad_x = A.T @ lambda_guess
grad_lambda = A @ x_guess - b
x_guess -= alpha * grad_x
lambda_guess += alpha * grad_lambda
print("最优解:", x_guess)
```
在这个例子中,我们尝试找到满足约束 `Ax <= b` 的变量 `x` 来最大化 `f(x)`。算法通过交替更新 `x` 和对应的拉格朗日乘子 `lambda` 来逐渐逼近最优解。
阅读全文