精华内容
下载资源
问答
  • Python最优化算法实战
    千次阅读
    2020-12-07 08:26:08

    从推公式到写代码:代码是联系理论和现实的桥梁,本书通过代码实现*优化算法,将理论与实践相结合,在编程中思考算法的计算过程,并通过代码将算法应用在实际问题中,以达到解决问题的目的。

    本书以理论结合编程开发为原则,使用Python作为开发语言,讲解*优化算法的原理和应用,详细介绍了Python基础、Gurobi优化器、线性规划、整数规划、多目标优化、动态规划、图与网络分析、智能优化算法。对于算法部分的每一种算法都包含原理和编程实践,使读者对*优化算法的认识更加深入。

    本书分为3篇共9章。篇(~3章)是*优化算法与编程基础:章介绍了什么是*优化算法及其在生产和生活中的应用;第2章介绍Python编程基础和Python数据分析库及绘图库;第3章讲解Gurobi优化器的基础和不错特性。第2篇(第4~6章)是数学规划方法:第4章详细讲解线性规划的知识,包括单纯形法、内点法、列生成法、拉格朗日乘子法、对偶问题;第5章讲解整数规划解法的分支定界法和割平面法;第6章讲解多目标优化的概念及基于单纯形法的目标规划法。第3篇(第7~9章)是启发式算法:第7章介绍动态规划算法;第8章讲解图与网络分析,介绍很小生成树、很短路径、网络流、路径规划等问题的建模;第9章讲解了粒子群算法和遗传算法求解各种类型优化算法问题的方法。

    本书内容丰富,实例典型,实用性强,适合各个层次从事*优化算法研究和应用的人员,尤其适合有一定算法基础而没有编程基础的人员阅读。

    苏振裕,厦门大学金融学硕士,现任SHEIN 智慧供应链资深算法工程师。知乎专栏《从推公式到写代码》作者,运筹优化论坛(optimize.fun)的创建人。在大数据、人工智能、运筹优化和供应链方面,具有多年的相关算法研究及应用经验。

    | 篇 最优化算法与编程基础 |

    章 最优化算法概述 2

    1.1 最优化算法简介 3

    1.2 最优化算法的内容 4

    1.2.1 规划论 4

    1.2.2 库存论 5

    1.2.3 图论 6

    1.2.4 排队论 7

    1.2.5 可靠性理论 8

    1.2.6 对策论 8

    1.2.7 决策论 8

    1.2.8 搜索论 9

    1.3 本章小结 9

    第2章 Python编程方法 10

    2.1 开发环境安装 11

    2.2 编程基础:Python语法 17

    2.2.1 基础数据结构与基本运算 18

    2.2.2 关于Python的列表、元组、字典、集合 18

    2.2.3 程序控制语句 21

    2.2.4 函数 21

    2.2.5 类与实例 22

    2.2.6 迭代 23

    2.3 数据分析:NumPy基础 24

    2.3.1 NumPy基础数据结构 24

    2.3.2 NumPy的随机数 26

    2.3.3 NumPy矩阵运算 28

    2.3.4 NumPy线性代数 31

    2.4 Pandas基础 32

    2.4.1 Pandas基础数据结构 32

    2.4.2 Pandas基础统计函数 35

    2.4.3 Pandas基础数据处理 37

    2.4.4 分组统计 39

    2.4.5 apply函数 41

    2.5 Python绘图 42

    2.5.1 常用图形 43

    2.5.2 图形属性 47

    2.5.3 组合图和子图 49

    2.5.4 三维图 51

    2.5.5 动态图 55

    2.6 本章小结 57

    第3章 Gurobi优化器 58

    3.1 Gurobi的数据结构 59

    3.1.1 Multidict 59

    3.1.2 Tuplelist 60

    3.1.3 Tupledict 61

    3.1.4 应用范例 62

    3.2 Gurobi的参数和属性 65

    3.2.1 参数类型 65

    3.2.2 修改参数 75

    3.2.3 修改参数的例子 75

    3.2.4 属性类型 77

    3.2.5 查看修改属性 85

    3.2.6 修改属性的例子 85

    3.3 Gurobi线性化技巧 85

    3.3.1 优选值max 86

    3.3.2 最小值min 88

    3.3.3 绝对值abs 89

    3.3.4 逻辑与and 90

    3.3.5 逻辑或or 90

    3.3.6 指示函数indicator 90

    3.3.7 带固定成本约束 91

    3.3.8 分段线性函数 91

    3.4 Gurobi多目标优化 92

    3.5 callback函数 96

    3.5.1 回调函数callback定义 97

    3.5.2 状态where与值what 97

    3.5.3 callback函数的功能 98

    3.6 本章小结 102

    | 第2篇 数学规划方法 |

    第4章 线性规划 104

    4.1 线性规划的标准型 105

    4.2 单纯形法 105

    4.2.1 单纯形法的原理 106

    4.2.2 单纯形法的过程 106

    4.2.3 单纯形法代码 111

    4.3 单纯形的数学规范型 113

    4.4 内点法 114

    4.4.1 内点法的原理 114

    4.4.2 内点法过程 115

    4.4.3 内点法代码 118

    4.5 列生成法 120

    4.5.1 列生成法的原理 120

    4.5.2 列生成的过程 123

    4.6 对偶问题 126

    4.6.1 对偶问题的形式 127

    4.6.2 对称形式对偶 128

    4.6.3 对偶单纯形 129

    4.6.4 对偶问题的应用 130

    4.7 拉格朗日乘子法 130

    4.7.1 无约束优化 131

    4.7.2 等式约束优化 131

    4.7.3 不等式约束优化 132

    4.7.4 拉格朗日对偶 134

    4.8 本章小结 137

    第5章 整数规划 138

    5.1 快速掌握Gurobi整数规划 139

    5.2 分支定界法 140

    5.3 割平面法 142

    5.4 本章小结 147

    第6章 多目标优化 148

    6.1 多目标优化的一般形式 149

    6.2 Pareto最优解 149

    6.3 多目标优化求解方法 151

    6.4 目标规划法 152

    6.4.1 偏差变量 153

    6.4.2 优先等级和权重系数 153

    6.4.3 目标规划单纯形法 154

    6.4.4 目标规划Gurobi实现 158

    6.5 NSGA-Ⅱ 159

    6.6 本章小结 160

    | 第3篇 启发式算法 |

    第7章 动态规划 162

    7.1 多阶段决策问题 163

    7.2 动态规划的基本概念 164

    7.3 动态规划的最优化原理 165

    7.4 最短路径问题 166

    7.5 使用整数规划解最短路径问题 169

    7.6 背包问题 170

    7.7 本章小结 175

    第8章 图与网络分析 176

    8.1 图的基本概念 177

    8.2 图的矩阵表示 178

    8.3 最小生成树 179

    8.4 最短路径问题 183

    8.5 网络优选流问题 187

    8.6 路径规划 190

    8.7 VRP问题 196

    8.8 本章小结 203

    第9章 智能优化算法 204

    9.1 粒子群算法 205

    9.1.1 粒子群算法原理 205

    9.1.2 粒子群求解无约束优化问题 207

    9.1.3 粒子群求解约束优化问题 211

    9.1.4 粒子群求解旅行商问题 218

    9.2 遗传算法 225

    9.2.1 遗传算法原理 225

    9.2.2 遗传算法的编码方法 227

    9.2.3 遗传算法的选择操作 230

    9.2.4 遗传算法求解无约束优化问题 231

    9.2.5 遗传算法库Geatpy的介绍 233

    9.2.6 使用Geatpy求解约束优化问题 239

    9.2.7 使用Geatpy求解多目标优化问题 241

    9.3 本章小结 242

    更多相关内容
  • 非常好的一本书,学习最优化的必备,数值最优化方法高立
  • Numerical Optimization_数值最优化;Numerical Optimization_数值最优化;Numerical Optimization_数值最优化
  • 马昌凤《最优化计算方法及其MATLAB程序实现》(最新版),里面有各章节matlab程序和pdf课件,最新版的
  • 陈宝林的最优化(原书第二版)书+习题解答
  • 最优化最优化理论的基本概念

    千次阅读 多人点赞 2020-11-19 14:42:25
    最优化理论的基本概念 一. 最优化理论的定义与分类 1. 一般形式 (1)公式定义: minf(x),且有x∈Xmin f(x),且有 x∈Xminf(x),且有x∈X 其中,对于上式中的字母,含义如下: f(x):代价函数(目标函数) x:决策向量...

    最优化理论的基本概念

    一. 最优化理论的定义与分类

    1. 一般形式

    (1)公式定义:
    m i n f ( x ) , 且 有 x ∈ X min f(x),且有 x∈X minf(x),xX
    其中,对于上式中的字母,含义如下:

    • f(x):代价函数(目标函数)
    • x:决策向量(单值或者是向量)
    • X:约束集合,约束集合一定是从属于n维实数空间(Rn)中的某个子空间

    (2)简单分类:

    当X是Rn空间的真子集时,上文描述的问题就称为约束优化问题

    形如下式中的问题就是约束优化问题
    m i n ( x 2 ) 【 s . t . x + 1 ≤ 0 】 min (x^2) 【s.t. x+1≤0】 min(x2)s.t.x+10

    当X就是Rn空间时,上文描述的问题称为无约束优化问题

    形如下式中的问题就是无约束优化问题
    m i n ( x 2 ) 【 x ∈ R 】 min (x^2) 【x∈R】 min(x2)xR

    (3)说明
    虽然在定义中,问题被统一定义成最小化的求解形式;其实最小化和最大化之间是可以相互转化的。
    Maximize f(x) ↔ Minimize -f(x)


    【例】根据给出的实际题目,写出其相应的最优化形式
    在这里插入图片描述


    2. 线性规划问题

    前面我们只是根据有没有约束条件,对优化问题进行有约束/无约束的简略分类;
    在实际中,最优化问题还有别的分类依据,其中线性规划【Linear Programming】就是一种。

    (1)定义

    目标函数是线性的+约束条件也是线性的 → 最优化问题是线性规划问题

    (2)一般形式
    M i n i m i z e f ( x ) ≡ c T ⋅ x , 且 有 x ∈ X Minimize f(x)≡c^T·x,且有x∈X Minimizef(x)cTxxX

    其中对于定义中的相关参数,作出以下规定:

    • 约束集合X = {x∈RnAx = b,x≥0}

    其中Ax = b,表示该线性约束是等式约束;也可以约束为Ax≤b的形式

    • 因为是线性的表述,上式中的符号统统采用向量和矩阵的形式:c∈Rn,b∈Rm,A∈Rmxn

    (3)NLP(NonLinear Programming)
    当目标函数是非线性的,或者限制条件是非线性的时候该最优化问题就属于非线性规划问题。

    我们这门课大部分讨论的都还是非线性规划的问题,因为现实生活中的条件复杂,很难满足线性性。

    3. 其他类型的优化问题

    (1)整数规划(Interger Programming)

    也称离散优化(Discrete Optimization),要求问题定义与求解中的所有决策变量或向量都是离散的整数类型。

    (2)混合整数规划(Mixed Integer Programming)

    决策变量有些是整型,有些是连续型的。

    (3)动态规划/最优控制(Dynamic Optimization)

    需要考虑系统的动态性,往往会考虑时间的影响。

    (4)随机优化(Stochastic Optimization)

    需要考虑问题中的不确定性因素,比如涉及到的部分变量是随机变量,而非确定性的。
    e.g. 前台接待系统中某一时段的客流量就是随机、不确定的。

    (5)多目标最优化(Multi-Objective Optimization)

    在进行优化时,有多个目标函数需要同时达到最优。
    e.g. 比如建造房子的时候,需要同时考虑“工期短”、“质量优”、“成本低”等目标。

    对于多目标优化问题,往往是不能拆解成若干个单独的最优化问题来求解的;因为各个目标之间也存在着制约、矛盾的关系。

    (6)博弈论(Game Theory)

    往往有多方决策者参与,且信息分布是不对称的(你不知道别人在想什么),也就是说你只能拿到局部信息。


    二. 最优化的基础概念

    1. 凸集

    在这里插入图片描述

    根据凸集的数学定义,其实质含义为——
    如果一个空间集合为凸集,那么这个集合中的任意两点的连线,也应该在这个空间集合的内部

    凸集举例:
    X = {x| ||x||2≤5,且x∈R2},表示二维平面上一个以原点为圆心,半径为5的圆面。

    非凸集举例:
    Y = {y| 2≤||y||2≤6,y∈R2},表示二维平面上一个以原点为圆心,内径和外径分别为2和6的圆环。

    其中,||·||2该符号表示向量的2范数。

    2. 超平面

    超平面是满足下面约束条件的一个点集
    X = { x ∣ c T ⋅ x = z } X = \{x|c^T·x = z\} X={xcTx=z}
    其中c和z均为向量,且c≠0,z是一个常向量。

    二维超平面举例:
    x∈R2,点集满足[1,1]·[x1,x2]T = 2,该集合对应的超平面就是二维空间中的一条直线x1+x2 = 2。

    三维超平面举例:
    x∈R3,点集满足[1,2,3]·[x1,x2,x3]T = 2,该集合对应的超平面就是三维空间中的一个平面x1+2x2+3x3 = 2。

    如果定义出了一个超平面,那么超平面就会将其所在空间划分成两个部分,其中一部分是{x|cT·x ≤z};另外一部分就是{x|cT·x >z}。

    3. 凸集某一边界点的支撑超平面

    给定一个凸集X,且取该集合中的一个边界点w,若称一个超平面cTx = z是该边界点w的支撑超平面,则需要满足:

    • cTw = z(该超平面是经过该边界点的)
    • cTx≥z(或者是cTx≤z) 对于所有的x∈Z(该凸集内的所有点都分布在该支撑超平面的同一侧)
      在这里插入图片描述

    4. 凸函数(与凹函数)

    “定义在凸集上,且任意两个自变量的线性组合的函数值不大于该两个自变量函数值的线性组合”,这样的函数就称为凸函数。

    (1)定义在这里插入图片描述
    (2)凸/凹/非凸非凹/又凸又凹函数
    在这里插入图片描述


    【微积分中的知识回顾】

    为了后续的理解与计算,现将“微分”、“方向导数”的概念进行回顾。

    在这里插入图片描述


    5. 可微凸函数的凸性三定理

    在定义凸函数的时候我们并不限制函数f(x)一定是可导的,但是这里我们只对于可导的函数进行性质讨论。

    (1)定理一

    如果f(x)是定义在凸集X上的一个可微函数,则f(x)是凸函数的充要条件是
    f(x2)-f(x1)≥▽f(x1)T·(x2-x1)

    (2)定理二

    如果f(x)是定义在凸的开集X上的一个二阶可微的函数,则f(x)是凸函数的充要条件为
    f(x)对应的Hessian矩阵H(x),对于任意一个x都是半正定的

    【背景知识补充】

    • 开集:对于集合中的任意一点,都能找到该点的一个邻域,且该邻域一定在集合内部。
      可以近似地认为所谓开集就是“没有边界的集合”,e.g. {x|满足||x||2<5}就是开集,如果“<”改成“≤”,则不再是开集。
    • 半正定矩阵:如果一个矩阵是对称阵,且对于任意一个非零的向量x,都有xTAx≥0,就称矩阵A是半正定矩阵。
      p.s. 在矩阵论系列博文中《【矩阵论】Hermite二次型(2)》中也对矩阵的正定性定义及定理进行了探讨。

    【证明】
    在这里插入图片描述
    梳理了以上证明过程,即可明白,定理2是基于定理1的

    (3)定理三

    如果f(x)是定义在一个凸的开集X上的二阶可微的函数,那么f(x)是集合X上的严格凸函数,这一结论的充分非必要条件是对应的Hessian矩阵H(x)对于每一个x∈X都是正定的

    因为根据定理三我们已经知道,由“凸的开集上的二阶可微函数是凸函数”,只能推出H(x)是半正定的,而非正定的。

    但是如果H(x)是正定的,则能够推出f(x)一定是凸函数。


    【例】考察给定函数的凸性
    在这里插入图片描述


    三. 最优化的条件

    1. 局部(全局)最小值

    在这里插入图片描述

    • 局部极小点:在该点某一邻域内的任意点的函数值都不小于在该点处的函数值
    • 全局极小点:在定义域内的任意点的函数值都不小于在该点处的函数值

    【扫除一些思维定式】
    ①一个点既可能是极小点,也可能是极大点
    在这里插入图片描述
    ②全局极值点也不一定唯一,比如sinx
    ③全局极值点和局部极值点也可能是同一的,比如sinx

    2. 极值的求解

    (1)现在可行的大部分理论和定理都可以帮助确定问题的局部极值
    (2)凸函数的极值:
    ①如果目标函数是凸函数,那么找到的局部极小值同样也是全局最小值

    证明
    在这里插入图片描述

    ②如果目标函数是严格凸函数,那么全局极小值是唯一的。

    (3)目前会使用诸如“模拟退火”或者“遗传算法”等随机化算法来进行全局最优值的求解。

    用“没有地图的蚂蚁找最高峰”这个问题来理解上述三种算法的思想:
    【经典梯度下降法】:从当前的出发点在局部范围内搜索,那个方向可以去往最高的方向,就沿着该方向进行一小步的移动,然后重复上述过程。
    p.s. 为了能够尽量找到全局的最优,可以选择多个起始点进行查找

    【模拟退火】:一只喝醉的蚂蚁,会随机地向上或向下进行寻找;但是随着时间的增加,蚂蚁会越来越清醒,会更加可能往高处进行寻找,

    【遗传算法】:利用一群蚂蚁,在不同的地方开始寻找,然后会定期地发大水,淹掉那些地势比较低的蚂蚁;而幸存下来的蚂蚁之间会进行信息交流(繁殖),其后代会在相对更高的地势开始进行寻找。

    3. 鞍点与极值判别定理

    (1)鞍点的定义
    在这里插入图片描述
    (2)极值判别定理
    在这里插入图片描述

    【例】直接截图,画质不太好请见谅
    在这里插入图片描述

    展开全文
  • 最优化方法期末复习

    千次阅读 2020-12-15 23:36:25
    最优化理论与方法知识点总结 目录 最优化理论与方法知识点总结 1 一、最优化简介: 2 1.1最优化应用举例 2 1.2基本概念 2 1.3向量范数 3 1.4矩阵范数 3 1.5极限的定义 3 1.6方向导数存在性和计算公式 4 1.7梯度定义 ...

    pdf下载地址:最优化方法期末考试复习

    最优化理论与方法知识点总结(部分展示)

    目录

    最优化理论与方法知识点总结 1
    一、最优化简介: 2
    1.1最优化应用举例 2
    1.2基本概念 2
    1.3向量范数 3
    1.4矩阵范数 3
    1.5极限的定义 3
    1.6方向导数存在性和计算公式 4
    1.7梯度定义 4
    1.8海塞矩阵 5
    1.9泰勒展开式: 5
    1.10凸集定义 5
    1.11凸集性质 5
    1.12凸函数定义 6
    1.13凸函数判断 6
    1.14矩阵正定与半正定判断 6
    1.15例题(判断矩阵是否正定) 7
    1.16凸优化 7
    二、线性规划 7
    2.1线性规划数学模型的一般形式 7
    2.2解的基本定理 7
    2.3解的分类 8
    2.4图解法 8
    2.5例题(图解法) 8
    2.6标准型的化法 9
    2.7例题(化为标准型) 9
    2.8单纯形法 10
    2.9例题(单纯形法) 11
    三、对偶线性规划 13
    3.1对偶问题 13
    3.2单纯形法解对偶问题 13
    3.3对偶单纯形法求解线性规划问题过程 14
    四、无约束优化 14
    4.1无约束优化概述 14
    4.2搜索区间的确定 15
    4.3区间消去法原理 16
    4.4黄金分割法 17
    4.5插值方法 17
    4.6常见的终止准则 19
    4.7最速下降法 20
    4.8牛顿类方法 20
    4.9例题(牛顿类方法) 21

    一、最优化简介:

    1.1最优化应用举例
    具有广泛的实用性 运输问题,车辆调度,员工安排,空运控制等 工程设计,结构设计等 资源分配,生产计划等 通信:光网络、无线网络,ad hoc 等. 制造业:钢铁生产,车间调度等 医药生产,化工处理等 电子工程,集成电路VLSI etc. 排版
    1.2基本概念
    目标函数和约束函数都是线性的,称之为线性规划问题,而有的模型中含有非线性函数,称之为非线性规划。 在线性与非线性规划中,满足约束条件的点称为可行点,全体可行点组成的集合称为可行集或可行域。如果一个问题的可行域是整个空间,则称此问题为无约束问题. 最优化问题可写成如下形式:
    在这里插入图片描述
    在这里插入图片描述
    1.3向量范数
    1-范数:║x║1=│x1│+│x2│+…+│xn│
    2-范数:║x║2=(│x1│2+│x2│2+…+│xn│2)1/2
    ∞-范数:║x║∞=max(│x1│,│x2│,…,│xn│)
    1.4矩阵范数
    1-范数:
    ║A║1 = max{ ∑|ai1|,∑|ai2|,……,∑|ain| } (列和范数,A每一列元素绝对值之和的最大值)(其中∑|ai1|第一列元素绝对值的和∑|ai1|=|a11|+|a21|+…+|an1|,其余类似);
    2-范数:
    ║A║2 = A的最大奇异值 = (max{ λi(AHA) }) 1/2 (谱范数,即A^HA特征值λi中最大者λ1的平方根,其中AH为A的转置共轭矩阵);
    ∞-范数:
    ║A║∞ = max{ ∑|a1j|,∑|a2j|,…,∑|amj| } (行和范数,A每一行元素绝对值之和的最大值)
    1.5极限的定义
    定义:如果序列{xn}与常数a 有下列关系:对于任意给定的正数ε(不论它多么小),总存在正整数N ,使得对于n >N 时的一切xn,不等式|xn-a |<ε都成立,则称常数a 是序列{xn}的极限。
    1.6方向导数存在性和计算公式
    在这里插入图片描述
    在这里插入图片描述
    1.7梯度定义
    在这里插入图片描述
    1.8海塞矩阵
    在这里插入图片描述
    1.9泰勒展开式:
    在这里插入图片描述
    1.10凸集定义
    对于n维空间中点的集合C,如果对集合中的任意两点x和y,以及实数0≤θ≤1,都有: θx+(1-θ)y∈C,则称该集合称为凸集。
    在这里插入图片描述
    1.11凸集性质
    1、多个凸集的交集还是凸集 2、如果每个等式或者不等式约束条件定义的集合都是凸集,那么这些条件联合起来定义的集合还是凸集 3、凸集的并集并一定不是凸集
    1.12凸函数定义
    在函数的定义域内,如果对于任意的x和y,以及实数0≤θ≤1,都满足如下条件: 则函数为凸函数。当式子中不含等号时,则为函数为严格凸函数。
    在这里插入图片描述
    1.13凸函数判断
    一阶判定规则为:
    对于一元函数,凸函数的判定规则为其二阶导数大于等于0。
    对于多元函数,如果它是凸函数,则其Hessian矩阵为半正定矩阵。
    1.14矩阵正定与半正定判断
    (1)A是n阶方阵,如果对任何非零向量x,都有xTAx>0,其中表示xT的转置,就称A为正定矩阵。
    (2)A是n阶方阵,如果对任何非零向量x,都有xTAx≥0,其中表示xT的转置,就称A为正定矩阵。
    1.15例题(判断矩阵是否正定)
    在这里插入图片描述
    1.16凸优化
    如果一个最优化问题的可行域是凸集,并且目标函数是凸函数,则该问题为凸优化问题。Minf(x),x∈C,其中x为优化变量;f为凸目标函数;C是优化变量的可行域,是一个凸集。

    说明

    pdf下载地址:最优化方法期末考试复习

    已有知识点+例题详解
    方向导数与梯度
    向量范数和矩阵范数

    展开全文
  • 全部笔记的汇总贴:最优化学习目录 上溢和下溢 这里先介绍一个数值优化常出现的一个概念上溢和下溢 下溢(Underflow):当接近零的数被四舍五⼊为零时发生下溢。 上溢(Overflow):当⼤量级的数被近似为∞\infin∞...

    全部笔记的汇总贴:最优化学习目录


    上溢和下溢

    这里先介绍一个数值优化常出现的一个概念上溢和下溢
    下溢(Underflow):当接近零的数被四舍五⼊为零时发生下溢。
    上溢(Overflow):当⼤量级的数被近似为 ∞ \infin − ∞ -\infin 时发⽣上溢。

    必须对上溢和下溢进行数值稳定的⼀个例子是softmax 函数。softmax 函数经常用于预测与范畴分布相关联的概率,定义为:
    softmax ⁡ ( x ) i = exp ⁡ ( x i ) ∑ j = 1 n exp ⁡ ( x j ) \operatorname{softmax}(\boldsymbol{x})_{i}=\frac{\exp \left(x_{i}\right)}{\sum_{j=1}^{n} \exp \left(x_{j}\right)} softmax(x)i=j=1nexp(xj)exp(xi)

    最小二乘法介绍

    我们接下来会分别用梯度下降法、牛顿法、约束优化法分别解我们的最小二乘法,那我们首先要明白最小二乘法。

    最小二乘法(Least Squares)是回归分析中的一种标准方法,它是用来近似超定系统(Overdetermined System)答案的一种方法。超定系统是指数学中的一种概念,一组包含未知数的方程组中,如果方程的数量大于未知数的数量,那么这个系统就是一个超定系统(超定方程组)。超定系统(超定方程组)一般是无解的,只能求近似解。而最小二乘法就是求超定方程组近似解的一种方法。
    举个通俗的例子,如下二维平面图中有很多个点,假设我们想用一条直线来拟合数据,即期望能找到一条直线能最好地穿过这些数据点。
    在这里插入图片描述
    我们这里引入线性最小二乘法:

    min ⁡ f ( x ) = 1 2 ∥ A x − b ∥ 2 2 \min f(\boldsymbol{x})=\frac{1}{2}\|\boldsymbol{A} \boldsymbol{x}-\boldsymbol{b}\|_{2}^{2} minf(x)=21Axb22

    梯度下降法 Gradient Decent

    在我的最速下降法(steepest Descent)中介绍了梯度下降法和最速下降法,梯度下降法就是一阶可微的最速下降法,在这里我们可以对其进行求解。
    假设我们希望找到最小化该式的 x x x值,那我们需要得到它的梯度:
    ∇ x f ( x ) = A ⊤ ( A x − b ) = A ⊤ A x − A ⊤ b \nabla_{x} f(x)=A^{\top}(A x-b)=A^{\top} A x-A^{\top} b xf(x)=A(Axb)=AAxAb
    梯度下降法建议我们新的点更新为
    x ′ = x − ϵ ∇ x f ( x ) x^{\prime}=x-\epsilon \nabla_{x} f(x) x=xϵxf(x)
    其中ϵ 为学习率(learning rate),是⼀个确定步长大小的正标量。

    首先我们给定初始数据

    # 导入相应的库
    import numpy as np
    import numpy.linalg as la
    
    x0 = np.array([1.0, 1.0, 1.0])
    A = np.array([[1.0, -2.0, 1.0], [0.0, 2.0, -8.0], [-4.0, 5.0, 9.0]])
    b = np.array([0.0, 8.0, -9.0])
    epsilon = 0.001
    delta = 1e-3
    # 给定A,b,真正的解x 为[29, 16, 3]
    

    梯度下降法

    """
    梯度下降法
    """
    def matmul_chain(*args): # 定义一个矩阵连乘的函数
        if len(args) == 0:
            return np.nan
        result = args[0]
        for x in args[1:]:
            result = result @ x
        return result
    
    def gradient_decent(x, A, b, epsilon, delta):
        while la.norm(matmul_chain(A.T, A, x) - matmul_chain(A.T, b)) > delta: # 默认ord = 2,没有到达边界
            x -= epsilon*(matmul_chain(A.T, A, x) - matmul_chain(A.T, b)) # 更新x
        return x
    
    gradient_decent(x0, A, b, epsilon, delta)
    

    array([27.82277014, 15.34731055, 2.83848939])

    牛顿法(Newton’s Method)

    具体的推导过程和结果可以看牛顿法(Newton’s method)
    我们的牛顿法基于我们的优化函数能够二阶可微,这样我们就可以利用一个二阶泰勒展开来近似 x 0 x^{0} x0 f ( x ) f(x) f(x):
    f ( x ) ≈ f ( x ( 0 ) ) + ( x − x ( 0 ) ) ⊤ ∇ x f ( x ( 0 ) ) + 1 2 ( x − x ( 0 ) ) ⊤ H ( x ( 0 ) ) ( x − x ( 0 ) ) f(x) \approx f\left(x^{(0)}\right)+\left(x-x^{(0)}\right)^{\top} \nabla_{x} f\left(x^{(0)}\right)+\frac{1}{2}\left(x-x^{(0)}\right)^{\top} \mathrm{H}\left(x^{(0)}\right)\left(x-x^{(0)}\right) f(x)f(x(0))+(xx(0))xf(x(0))+21(xx(0))H(x(0))(xx(0))
    然后根据对 f ( x ) f(x) f(x)求导可以得到我们临界点:

    x ∗ = x ( 0 ) − H ( x ( 0 ) ) − 1 ∇ x f ( x ( 0 ) ) \boldsymbol{x}^{*}=\boldsymbol{x}^{(0)}-\mathrm{H}\left(\boldsymbol{x}^{(0)}\right)^{-1} \nabla_{\boldsymbol{x}} f\left(\boldsymbol{x}^{(0)}\right) x=x(0)H(x(0))1xf(x(0))

    牛顿法迭代地更新近似函数和跳到近似函数的最小点可以比梯度下降法更快地到达临界点。这在接近全局极小时是⼀个特别有用的性质,但是在鞍点附近是有害的。

    对于我们的最小二乘法,我们可以计算得到,我们的海瑟矩阵其实就是 H = A ⊤ A \mathrm{H}=A^{\top} A H=AA
    进一步计算我们的最优解
    x ∗ = x ( 0 ) − ( A ⊤ A ) − 1 ( A ⊤ A x ( 0 ) − A ⊤ b ) = ( A ⊤ A ) − 1 A ⊤ b x^{*}=x^{(0)}-\left(A^{\top} A\right)^{-1}\left(A^{\top} A x^{(0)}-A^{\top} b\right)=\left(A^{\top} A\right)^{-1} A^{\top} b x=x(0)(AA)1(AAx(0)Ab)=(AA)1Ab

    """
    牛顿法
    """
    
    def newton(x, A, b, delta):
        x = matmul_chain(np.linalg.inv(matmul_chain(A.T, A)), A.T, b)
        return x
    
    newton(x0, A, b, delta)
    

    array([29., 16., 3.])

    我们可以看出来,在我们的牛顿法(Newton’s method)中提过,对于二阶的函数,我们几乎可以达到一步就到的情况,这个就是其中的例子

    约束优化

    这一部分内容详细推导可以看我的KKT条件(最优解的一阶必要条件) 约束优化问题
    我们希望通过 m m m个函数 g ( i ) g^{(i)} g(i) n n n个函数 h ( j ) h^{(j)} h(j) 描述 S S S,那么 S S S可以表示为 S = { x ∣ ∀ i , g ( i ) ( x ) = 0 \mathrm{S}=\left\{\boldsymbol{x} \mid \forall i, g^{(i)}(\boldsymbol{x})=0\right. S={xi,g(i)(x)=0 and ∀ j , h ( j ) ( x ) ≤ 0 } \left.\forall j, h^{(j)}(\boldsymbol{x}) \leq 0\right\} j,h(j)(x)0}。其中涉及 g ( i ) g^{(i)} g(i)的等式称为等式约束,涉及 h ( j ) h^{(j)} h(j)的不等式称为不等式约束。
    我们为每个约束引⼊新的变量 λ i \lambda_{i} λi α j \alpha_{j} αj,这些新变量被称为KKT 乘子。⼴义拉格朗日式可以如下定义:
    L ( x , λ , α ) = f ( x ) + ∑ i λ i g ( i ) ( x ) + ∑ j α j h ( j ) ( x ) L(\boldsymbol{x}, \lambda, \alpha)=f(\boldsymbol{x})+\sum_{i} \lambda_{i} g^{(i)}(\boldsymbol{x})+\sum_{j} \alpha_{j} h^{(j)}(\boldsymbol{x}) L(x,λ,α)=f(x)+iλig(i)(x)+jαjh(j)(x)
    可以通过优化无约束的广义拉格朗日式解决约束最小化问题:
    min ⁡ x max ⁡ λ max ⁡ α , α ≥ 0 L ( x , λ , α ) \min _{x} \max _{\lambda} \max _{\alpha, \alpha \geq 0} L(x, \lambda, \alpha) xminλmaxα,α0maxL(x,λ,α)
    优化该式与下式等价:
    min ⁡ x ∈ S f ( x ) \min _{x \in \mathbb{S}} f(\boldsymbol{x}) xSminf(x)
    针对上述实例,约束优化: x ⊤ x ≤ 1 \boldsymbol{x}^{\top} \boldsymbol{x} \leq 1 xx1
    引⼊广义拉格朗日式:
    L ( x , λ ) = f ( x ) + λ ( x ⊤ x − 1 ) L(\boldsymbol{x}, \lambda)=f(\boldsymbol{x})+\lambda\left(\boldsymbol{x}^{\top} \boldsymbol{x}-1\right) L(x,λ)=f(x)+λ(xx1)
    解决以下问题:
    min ⁡ x max ⁡ λ , λ ≥ 0 L ( x , λ ) \underset{\boldsymbol{x}}{\min } \max _{\lambda, \lambda \geq 0} L(\boldsymbol{x}, \lambda) xminλ,λ0maxL(x,λ)
    关于 x x x L a g r a n g i a n Lagrangian Lagrangian微分,我们得到方程:
    A ⊤ A x − A ⊤ b + 2 λ x = 0 \boldsymbol{A}^{\top} \boldsymbol{A} \boldsymbol{x}-\boldsymbol{A}^{\top} \boldsymbol{b}+2 \lambda \boldsymbol{x}=\mathbf{0} AAxAb+2λx=0
    得到解的形式是: x = ( A ⊤ A + 2 λ I ) − 1 A ⊤ b \boldsymbol{x}=\left(\boldsymbol{A}^{\top} \boldsymbol{A}+2 \lambda \boldsymbol{I}\right)^{-1} \boldsymbol{A}^{\top} \boldsymbol{b} x=(AA+2λI)1Ab

    λ \lambda λ的选择必须使结果服从约束,可以对 λ \lambda λ梯度上升找到这个值:
    ∂ ∂ λ L ( x , λ ) = x ⊤ x − 1 \frac{\partial}{\partial \lambda} L(x, \lambda)=\boldsymbol{x}^{\top} \boldsymbol{x}-1 λL(x,λ)=xx1

    """
    约束优化,约束解的大小
    """
    def constrain_opti(x, A, b, delta):
        k = len(x)
        lamb = 0
        while np.abs(np.dot(x.T, x) - 1) > 1e-5: # delta设为5e-2, 最优设为0
            x = matmul_chain(np.linalg.inv(matmul_chain(A.T, A)+2*lamb*np.identity(k)), A.T, b)
            lamb += np.dot(x.T, x)-1
        return x
    
    constrain_opti(x0, A, b, delta)
    

    array([ 0.23637902, 0.05135858, -0.94463626])

    展开全文
  • MATLAB最优化计算20例

    热门讨论 2011-04-05 16:54:43
    黄金搜索法求解无约束最优化问题 二次插值法求解无约束最优化问题 Nelder-Mead算法求解无约束最优化问题 最速下降法求解无约束最优化问题 牛顿法求解无约束最优化问题 无约束最优化问题求解综合 遗传算法求解无约束...
  • 最优化理论与方法(袁亚湘 孙文瑜).pdf 最优化理论与方法(袁亚湘 孙文瑜).pdf 最优化理论与方法(袁亚湘 孙文瑜).pdf 最优化理论与方法(袁亚湘 孙文瑜).pdf 最优化理论与方法(袁亚湘 孙文瑜).pdf 最优化理论与方法...
  • 最优化理论算法

    万次阅读 多人点赞 2018-12-22 21:05:14
    1 预备知识 1.1 最优化问题 1.1.1最优化问题的数学模型一般形式为:  目标函数  s.t 约束条件 ...
  • 最优化计算方法

    千次阅读 2018-09-17 14:42:44
    最优化计算方法 本文记录了博主在学习《最优化计算方法》时的总结,主要侧重于与深度学习相关的内容,更新于2018.09.17。 书目信息:《最优化计算方法》,黄正海等著,出版时间2015.02,科学出版社。 最优化...
  • 最优化学习 算法收敛性

    万次阅读 2021-05-30 01:21:44
    算法收敛性 梯度下降法 分析算法收敛性 - 精确线搜索exact line search 分析算法收敛性 - 非精确线搜索Inexact line search(Amijo Rule) 全部笔记的汇总贴:最优化学习目录 梯度下降法 d k + 1 = − ∇ f ( x k ) d^...
  • 考虑无约束优化问题: min⁡f(x) s.t. x∈X⊆Rn\begin{aligned} \min & f(x) \\ \text { s.t. } & x \in X \subseteq R^{n} \end{aligned}min s.t. ​f(x)x∈X⊆Rn​ 若f(x)为凸函数 ...
  • 最优化问题  在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量)...
  • 最优化方法及其Matlab程序设计》较系统地介绍了非线性最优化问题的基本理论和算法,以及主要算法的Matlab程序设计,主要内容包括(精确或非精确)线搜索技术、最速下降法与(修正)牛顿法、共轭梯度法、拟牛顿法、...
  • 【数学建模】最优化模型

    万次阅读 多人点赞 2020-07-25 21:52:36
    文章目录A 概述1 最优化模型的一般形式2 最优化模型的分类B 优化模型之运输问题1 运输问题的数学模型2 一般运输问题的求解 A 概述 1 最优化模型的一般形式 最优化方法是指在一系列客观或主观限制条件下,寻求 合理...
  • 最优化原理和方法试题答案.doc

    千次阅读 2021-01-17 17:35:10
    最优化原理和方法试题答案.doc《最优化原理与算法》试卷填空题(每小题5分)1.若,则 , .2.设连续可微且,若向量满足 ,则它是在处的一个下降方向。3.向量关于3阶单位方阵的所有线性无关的共轭向量有 .4. 设二次可微...
  • 最优化问题——线性规划(一)

    千次阅读 多人点赞 2020-04-26 16:32:48
    最优化问题——线性规划 1、线性规划问题的提出 我们首先从一个例子开始: 某个工厂利用原材料来生成A、B、C三种产品,它们的单位产品所需要的数量和耗费的加工时间各不相同,如下表所示。A、B、C单位产品的利润分别...
  • 最优化理论与凸优化到底是干嘛的?

    万次阅读 多人点赞 2017-12-15 20:47:53
    1.2 全局最优化与局部最优化 Least-squares and linear programming(最小二乘与线性规划) 2.1 最小二乘 2.2 线性规划 最优化方法的一般结构 1.优化的定义 1.1 凸优化最优化问题目前在机器学习,数据挖掘等领域应用...
  • 约束最优化方法之最优性条件

    万次阅读 多人点赞 2017-12-07 20:51:14
    一般性约束最优性条件前面几篇博客主要讲了无约束最优化问题的一些求解方法。从这一篇博客开始将开始讲有约束的最优化方法。首
  • 最优化笔记 强凸性

    万次阅读 2021-05-29 10:19:52
    最优化学习目录 强凸性多用在优化中(Optimization),特别是保证很多基于梯度下降方法的算法的线形收敛速率的条件之一。 强凸性 假设 f ( x ) f(x) f(x)二阶可微且有强凸性 ∃ m > 0 , ∀ x ∈ dom ⁡ f , ∇ 2 f ( x...
  • 最优化方法:六、约束最优化方法

    千次阅读 2018-07-25 10:55:56
    最优化方法及其应用/郭科,陈聆,魏友华.-北京:高等教育出版社,2007.7(2013.7重印) 前面我们已经讨论无约束问题的最优化方法,但实际碰到的问题常常是存在约束的。一般的约束最优化问题的数学模型为: minf(X)s....
  • matlab求解非线性优化问题
  • 最优化方法总结:公式解、数值优化、求解思想

    万次阅读 多人点赞 2019-07-03 18:23:03
    机器学习的目标是给出一个模型(一般是映射函数),然后定义对这个模型好坏的...第三个问题是纯数学问题,即最优化方法。 机器学习要求解的数学模型 1.有监督学习:目标函数的极值 对于有监督学习,我们要找到一...
  • matlab最优化函数

    千次阅读 2020-03-21 16:32:57
    Matlab优化方法 一、求无约束多变量(多元)极小值非线性优化问题有fminsearch和fminunc fminsearch利用了单纯形法的原理 fminunc利用了拟牛顿法的原理 这两个函数都容易陷入局部优化,并且结果的正确与否还要取决 ...
  • 最优化问题——无约束优化方法(一)

    千次阅读 2020-06-02 16:01:37
    最优化问题——无约束优化方法 在只前的文章中,我们关注的是非线性规划问题,以及对应步长因子的搜索方法。在非线性规划问题中,其基本形式包括目标函数和约束条件两个部分,并且约束条件确定了可行域等等重要的...
  • 最优化理论

    千次阅读 2019-01-20 15:07:42
    最优化理论 机器学习简单来说,主要做的就是线性逼近,其根本就是优化问题: •先初始化一下权重参数 •然后利用优化方法来优化这个权重 •直到准确率不再是上升 •迭代停止 通常的形式:优化目标(目标函数) + ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,113,517
精华内容 845,406
关键字:

最优化

友情链接: msgqueue.rar