Lecture3——线性最优化(Linear Optimization)

一,本文重点

  • 线性最优化(LP)和标准线性最优化(Standard LP form)的定义
  • 如何将LP转换为Standard LP
  • 用Python解决LP问题
  • 将非线性最优化问题(NLP)转换为LP

二,定义

1,线性最优化
  • 定义

线性最优化问题,或者线性规划(linear programming,缩写:LP)是一个目标函数和所有限制函数(在决策变量中)都是线性的最优化问题。

注意:线性最优化是连续最优化的子集

  • 普遍表达

一个LP问题通常可以写成如下模式:

m1,m2,m3是{1,...,m}的子集,n1,n2,n3是{1,...,n}的子集。

注意:最大化问题与之类似。

  • 紧凑型表达

借助矩阵的知识,让形式更紧凑

在这里A1,A2,A3都是矩阵(维度为m1xn,m2xn,m3xn),b,d,e都是向量,变量x是维度为n的列向量。

2,标准形式(Standard LP form)
  • 定义

标准型通常更系统和紧凑,在不同的课本中对标准形式的定义可能不同,在本系列采用如下形式。

x∈Rn,A是维度为m×n的矩阵,b\in R^{m}

三,将LP转换为Standard LP

1,说明

标准形式主要用于分析,平时解决问题只需要能够便于理解就行,但LP到Standard LP的转换技巧可以帮助我们分析和解决问题

2,技巧和步骤

(1)步骤

  • 首先检查变量范围,Standard LP要求变量非负。
  • 然后检查目标函数,将求最大转换为求最小
  • 最后检查限制条件,将不等式转换为等式

(2)技巧(数学表达)

  • maxx c⊤x → minx −c⊤x
  • Ax ≤b →Ax+s =b,s ≥0
  • Ax ≥b →Ax−s =b,s ≥0
  • xi ≤ 0 →yi =−xi ≥0 free
  • xi → xi = x+ i −x− i ,x+ i ≥ 0,x− i ≥ 0
3,示例

转化为standard LP:

minimize -x1  -2x2

s.t             x1            +s1                    =100

                        2x2         +s2              =200

                 x1 + x2                 +s3       =150

                x1, x2, s1, s2, s3              >=0

四,用Python解决LP问题

1,方案

被用来解决最优化问题的语言有MATLAB,Python,Julia,而一个非常重要的库是CVX。课上教授用的多是MATLAB,不过笨人更习惯Python,所以会用Python来解决课程中的问题。学习步骤如下:

  • 下载cvxpy(Python中的CVX)
  • 学习如何使用
  • 解决问题

2,示例

以前文的例子为例:

使用Python解决:

#import package
import cvxpy as cp

#decision variable
x1=cp.Variable()
x2=cp.Variable()

#constraint
consts=[x1<=100,2*x2<=200,x1+x2<=150,x1>=0,x2>=0]

#construct problem
obj=cp.Maximize(x1+2*x2)
prob=cp.Problem(obj,consts)

#output result
result=prob.solve()
x1_sol=x1.value
x2_sol=x2.value

print("Best result:",result)
print("Best x1:",x1_sol)
print("Best x2:",x2_sol)

'''
Output:
Best result: 249.99999997999043
Best x1: 49.99999998623639
Best x2: 99.99999999687702
'''

五,非线性问题向线性问题的转化。

1,常见的非线性因素
  • 目标函数或限制条件自带最大值最小值函数
  • 目标函数或限制条件包含绝对值函数

对于两种问题有不同的解决方案

2,对于自带最大值最小值的问题
  • 最大化问题

(1)思路

假设变量S小于或等于问题中的min

(2)示例:

原问题:

转换:\Delta \leq t_{j+1}-t_{j}

结果:

  • 最小化问题

(1)思路

假设变量S大于或等于问题中的max

(2)示例

原问题:

转换:

结果:

3,对于绝对值
  • 最小化问题

采用最大值方式,假设变量t,使t大于或等于绝对值。

  • 通用模式(可将绝对值扩展到函数)

假设变量t,使t大于或等于函数。

  • 数学表达范例

minimize\underset{x}{}\sum_{i=1}^{n}f_{i}(x) s.t. x\in \Omega

可以转换成minimize\underset{x,t}{}\sum_{i=1}^{n}t_{i} s.t. x\in \Omega , f_{i}(x)\leq t_{i },\forall i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值