linprog() Linear programming.

转:https://zhuanlan.zhihu.com/p/26963923

 

Matlab中线性规划的标准形式为:

调用格式:

[x,fval, exitflag, output, lambda] =linprog(c, A, b, Aeq, beq, LB, UB, X0, options)

其中,x返回最优解;

fval返回目标函数值;

A和b对应不等式约束Ax≤b;

Aeq和beq对应等式约束Ax=b;

LB和UB分别是变量x的下界和上界;

x0为x的初始值;

options为控制参数;

exitflag返回算法停止的原因:

1表示成功找到最优解,

0表示达到最大迭代次数,不能继续寻找最优解,

<0表示优化失败(-2未找到可行解,-3问题没有定义边界,-4 NaN存在导致算法退出,-5原始对偶问题没有可行解,-7算法搜索方向存在问题);

output返回algorithm采用的算法(大中小型),迭代次数等优化信息;

lambda返回最优解x处的拉格朗日乘子的一些参数。

options参数设置:

1)options=optimset(‘optimfun’)

若已有设置好的参数项设置,直接使用其名称即可;

2)opts=optimset(‘param1’,
value1, ‘param2’, value2, …)

创建一个名为opts的参数设置,分别指定参数值,未指定的保持默认。例如,要设置使用大型算法、显示每次迭代、允许误差为10^(-8)

opts=optimset(‘LargeScale’,‘on’, ‘Display’, ‘iter’, ‘TolFun’, 1e-8)

TolFun是指函数容限阈值(tolerance)

 

`from scipy.optimize import linprog` 是Python中Scipy优化库的一部分,它提供了决线性规划(Linear Programming, LP)问题的功能。线性规划是一种数学优化技术,用于寻满足一组线性约束条件下目标函数的最大值或最小值。`linprog` 函数允许用户指定一个线性的目标函数和一组线性不等式或等式约束,然后返回最优。 使用`linprog`的基本语法通常包括以下几个部分: - `c`:是一个一维数组,表示目标函数的系数,我们希望最大化或最小化这个函数。 - `A_ub` 和 `b_ub` 或 `A_eq` 和 `b_eq`:分别对应于不等式约束(`A_ub * x <= b_ub`)和等价约束(`A_eq * x == b_eq`),其中`A`是矩阵,`b`是一维数组。 - `bounds`:一个二维数组,给出了每个变量的上下限,例如`[(x_min1, x_max1), (x_min2, x_max2), ...]`。 - `method`:可以选择不同的求算法,如单纯形法('revised simplex')或内点法('interior-point')。 当你需要决一个线性优化问题时,可以像下面这样调用`linprog`: ```python import numpy as np from scipy.optimize import linprog # 定义目标函数和约束条件 c = np.array([1, 1]) # 目标函数系数 A = np.array([[1, 2]]) # 约束矩阵 b = np.array([4]) # 约束右端点 # 如果有等式约束 A_eq = None b_eq = None # 可选:设置变量范围 bounds = [(0, None)] * len(c) # 调用linprog并获取结果 solution = linprog(c, A_ub=A, b_ub=b, A_eq=A_eq, b_eq=b_eq, bounds=bounds) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值