Numerical Optimization Ch1. Introduction

第一章: 介绍


优化的主要流程:

  1. 确定优化目标 (可以是利润、时间、能量或任何可用数表示的量)
  2. 确定约束条件 (可以是无约束, 可以是有约束)
  3. 根据模型选取或构建算法
  4. 实施算法并检验是否满足最优性条件
  5. 改进模型并重复前述直至满意 (灵敏度分析、对之前解的解释说明)

1. 符号规定

  • x x x变量构成的向量, 也称为未知量或参数;
  • f f f目标函数, 为 x x x的(标量)函数, 我们的目的在于最大或最小化 f f f;
  • c i c_i ci约束函数, 为 x x x的标量函数, 定义 x x x必须满足的等式或不等式

从而一个优化问题可以写成
min ⁡ x ∈ R n f ( x ) s u b j e c t    t o c i ( x ) = 0 , i ∈ E , c i ( x ) ≥ 0 , i ∈ I . \min_{x\in\mathbb{R}^n}f(x)\quad\mathrm{subject\,\,to}\begin{array}{ll} c_i(x)=0, & i\in\Epsilon,\\ c_i(x)\ge0, & i\in I. \end{array} xRnminf(x)subjecttoci(x)=0,ci(x)0,iE,iI.
其中 I I I E \Epsilon E分别代表等式约束和不等式约束的指标集.

例. 运输问题. 化学用品公司有两所工厂 F 1 , F 2 F_1,F_2 F1,F2和十二个零售商 R 1 , R 2 , … , R 12 R_1,R_2,\ldots,R_{12} R1,R2,,R12. 工厂 F i F_i Fi每周可以生产化学用品 a i a_i ai吨, 而零售商 R j R_j Rj每周需要 b j b_j bj吨化学用品. 从 F i F_i Fi运一吨化学用品到 R j R_j Rj的花费为 c i j c_{ij} cij. 我们的目标是在满足所有零售商的需求后, 最小化运输成本. 引入变量 x i j , i = 1 , 2 , j = 1 , … , 12 x_{ij},i=1,2,j=1,\ldots,12 xij,i=1,2,j=1,,12, 其中 x i j x_{ij} xij为从 F i F_i Fi运至 R j R_j Rj的运输量(吨). 于是问题可写作
min ⁡ ∑ i j c i j x i j s u b j e c t    t o ∑ j = 1 12 x i j ≤ a i , i = 1 , 2 , ∑ i = 1 2 x i j ≥ b j , j = 1 , … , 12 , x i j ≥ 0 , i = 1 , 2 , j = 1 , … , 12. \begin{array}{rll} \min & \sum\limits_{ij}c_{ij}x_{ij} & \\ \mathrm{subject\,\,to} & \sum\limits_{j=1}^{12}x_{ij}\le a_i, & i=1,2,\\ & \sum\limits_{i=1}^2x_{ij}\ge b_j, & j=1,\ldots,12,\\ & x_{ij}\ge0, & i=1,2,\quad j=1,\ldots,12. \end{array} minsubjecttoijcijxijj=112xijai,i=12xijbj,xij0,i=1,2,j=1,,12,i=1,2,j=1,,12.
上面的问题为典型的线性规划问题 (目标函数和约束都是线性的). 当然对于实际情景下, 还可能涉及到生产和仓储的费用, 以及运输可能存在打折. 此时将可能得到非线性规划问题.

2. 问题分类

  • 连续优化 & 离散优化: 后者决定性的特征就是未知量 x x x可取自有限集. 例如整数型变量、二值变量, 甚至可能是集合的排序作为未知量 (比如会议安排问题).
  • 约束优化 & 无约束优化.
  • 全局优化 & 局部优化: 前者对于一般的问题难以做到, 全局最优点也难以识别.
  • 随机优化 & 确定性优化.
  • 凸优化 & 非凸优化: 前者指的是, 目标函数 f f f为凸函数, 且可行域为凸集的情形, 此时任一局部最优解都是全局最优解. 具体说来需要
    1. 等式约束函数 c i ( ⋅ ) , i ∈ E c_i(\cdot), i\in\Epsilon ci(),iE线性, 以及
    2. 不等式约束函数 c i ( ⋅ ) , i ∈ I c_i(\cdot),i\in I ci(),iI凹函数.

3. 优化算法

优化算法是迭代进行的.

Created with Raphaël 2.2.0 初始点x_0, k=0 采用一定策略产生新的迭代点x_{k+1}, k=k+1 判定当前迭代点是否符合终止条件 算法结束, 输出最新的迭代点 yes no

算法的差别在于产生新的迭代点的策略. 大多数策略会使用目标函数 f f f的值, 约束函数 c i c_i ci的值, 以及可能会用到这些函数的一阶导和二阶导. 有些算法会积攒之前迭代所获得的信息, 其他的算法可能就只使用当前迭代点上得到的信息. 当然对于算法好坏与否, 我们有如下判定准则:

  • 鲁棒性 (Robustness). 这点可使得算法得以广泛使用.
  • 高效性 (Efficiency). 这里考虑时间复杂度和空间复杂度.
  • 准确性 (Accuracy). 对各类误差 (如舍入误差、测量误差)不会过于敏感.

这些目标看上去可能会互相矛盾. 比如说, 收敛速度很快的算法可能需要较大的内存支撑 (比如Newton法). 再比如, 最强健的算法可能是收敛最慢的. 我们可根据问题来选择算法, 找出自己的侧重点. 算法没有绝对的好与坏.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值