主 编 司守奎 副主编 徐珂文 -...

807
司守奎 副主编 徐珂文 李日华 海军航空工程学院

Upload: others

Post on 14-Oct-2019

33 views

Category:

Documents


0 download

TRANSCRIPT

  • 数 学 建 模

    主 编 司守奎 副主编 徐珂文 李日华

    海军航空工程学院

  • ﹒i﹒

    目 录

    第一章 线性规划……………………………………………………………………………1 § 1 线性规划……………………………………………………………………………1 1.1 线性规划的实例与定义 ……………………………………………………1 1.2 线性规划的 Matlab 标准形式…………………………………………………1 1.3 线性规划问题的解的概念…………………………………………………… 2 1.4 线性规划的图解法…………………………………………………………… 2 1.5 求解线性规划的 Matlab 解法…………………………………………………3 1.6 可以转化为线性规划的问题………………………………………………… 4 § 2 运输问题………………………………………………………………………… 4 § 3 指派问题………………………………………………………………………… 5 § 4 对偶理论与灵敏度分析………………………………………………………… 7 习题一……………………………………………………………………………… 9 第二章 整数规划………………………………………………………………………… 12 § 1 概论……………………………………………………………………………12 § 2 分枝定界法………………………………………………………………………12 § 3 10 − 整数规划………………………………………………………………… 14 3.1 引入 10 − 变量的实际问题………………………………………………… 15 3.2 10 − 整数规划解法之一………………………………………………… 16 § 4 蒙特卡洛法(随即取样法)……………………………………………………17 §5 整数规划的计算机解法…………………………………………………………18 习题二………………………………………………………………………………19 第三章 非线性规划………………………………………………………………………20 § 1 非线性规划………………………………………………………………………20 1.1 非线性规划实例与定义 ……………………………………………………20 1.2 线性规划与非线性规划的区别 ……………………………………………21 1.3 非线性规划的 Matlab 解法…………………………………………………21 1.4 求解非线性规划的基本迭代格式 …………………………………………22 1.5 凸函数、凸规划…………………………………………………………… 23

    § 2 无约束问题……………………………………………………………………… 23 2.1 一维搜索方法……………………………………………………………… 23 2.2 二次插值法………………………………………………………………… 26 2.3 无约束极值问题的解法 ……………………………………………………26 2.4 Matlab 求无约束极值问题……………………………………………… 32 § 3 约束极值问题…………………………………………………………………32 3.1 二次规划…………………………………………………………………… 33

    3.2 罚函数法…………………………………………………………………… 34

  • ﹒ii﹒

    3.3 Matlab 求约束极值问题…………………………………………………………35 § 4 飞行管理问题…………………………………………………………………38

    习题三………………………………………………………………………………………39 第四章 动态规划…………………………………………………………………………40

    § 1 引言………………………………………………………………………………40 § 2 基本概念,基本方程和计算方法………………………………………………41 § 3 逆序解法的计算框图……………………………………………………………43 § 4 动态规划与静态规划的关系……………………………………………………44 § 5 若干典型问题的动态规划模型…………………………………………………46

    § 6 具体的应用实例…………………………………………………………………47 习题四…………………………………………………………………………………50

    第五章 图与网络模型及方法…………………………………………………………… 51 § 1 概论………………………………………………………………………………51 § 2 图与网络的基本概念……………………………………………………………52 § 3 应用—最短路问题………………………………………………………………58 § 4 树…………………………………………………………………………………60 § 5 匹配问题…………………………………………………………………………63 § 6 Euler 图和 Hamilton 图………………………………………………………… 64 § 7 最大流问题………………………………………………………………………68 § 8 最小费用流及其求法……………………………………………………………73

    习题五……………………………………………………………………………… 74 第六章 排队论模型……………………………………………………………………… 76 § 1 基本概念…………………………………………………………………………76 § 2 输入过程与服务时间的分布……………………………………………………78 § 3 标准的 M/M/1 模型………………………………………………………………81 § 4 产生给定分布的随机数的方法…………………………………………………82 § 5 排队模型的计算机模拟…………………………………………………………83

    习题六………………………………………………………………………………… 86 第七章 对策论…………………………………………………………………………… 87 § 1 引言………………………………………………………………………………87 § 2 对策问题…………………………………………………………………………87 § 3 零和对策的混合策略……………………………………………………………90 § 4 零和对策的线性规划解法………………………………………………………92

    习题七……………………………………………………………………………… 95 第八章 层次分析法……………………………………………………………………… 96

    § 1 层次分析法的基本原理与步骤……………………………………………… 96 § 2 层次分析法的应用……………………………………………………………100

    习题八……………………………………………………………………………… 103 第九章 插值与拟合……………………………………………………………………… 104

  • ﹒iii﹒

    § 1 插值方法………………………………………………………………………104 1.1 拉格朗日多项式插值………………………………………………………104 1.2 牛顿插值………………………………………………………………………106 1.3 分段线性插值…………………………………………………………………108 1.4 埃尔米特(Hermite)插值………………………………………………………109 1.5 样条插值………………………………………………………………………110 1.6 二维插值………………………………………………………………………113 § 2 曲线拟合的线性最小二乘法……………………………………………………114 2.1 线性最小二乘法………………………………………………………………114

    2.2 最小二乘法的 Matlab 实现…………………………………………………… 116 § 3 最小二乘优化……………………………………………………………………117 § 4 曲线拟合与函数逼近…………………………………………………………119 习题九…………………………………………………………………………………120 第十章 数据的统计描述和分析……………………………………………………122 § 1 统计的基本概念………………………………………………………………122 § 2 参数估计………………………………………………………………………128 § 3 假设检验……………………………………………………………………129 习题十…………………………………………………………………………………133 第十一章 方差分析…………………………………………………………………134 § 1 单因素方差分析………………………………………………………………134 § 2 双因素方差分析………………………………………………………………138 习题十一………………………………………………………………………………140 第十二章 回归分析…………………………………………………………………141 § 1 多元线性回归…………………………………………………………………141 § 2 非线性回归和逐步回归………………………………………………………148 习题十二………………………………………………………………………………151 第十三章 微分方程建模……………………………………………………………153 § 1 发射卫星为什么用三级火箭…………………………………………………153 § 2 人口模型………………………………………………………………………158 § 3 战争模型………………………………………………………………………160 习题十三………………………………………………………………………………165 第十四章 稳定状态模型……………………………………………………………167 § 1 微分方程稳定性理论简介……………………………………………………167 § 2 再生资源的管理和开发………………………………………………………169 § 3 Volterra 模型………………………………………………………………… 174 习题十四………………………………………………………………………………178 第十五章 常微分方程的解法………………………………………………………179 § 1 常微分方程的离散化…………………………………………………………179 § 2 欧拉(Euler)方法………………………………………………………………180

  • ﹒iv﹒

    § 3 改进的(Euler)方法……………………………………………………………181 § 4 龙格—库塔(Runge—Kutta)方法…………………………………………… 182 § 5 线性多步法……………………………………………………………………184 § 6 一阶微分方程组与高阶微分方程的数值解法………………………………185 § 7 Matlab 解法………………………………………………………………… 186 习题十五……………………………………………………………………………………191 第十六章 差分方程模型…………………………………………………………………192 § 1 差分方程……………………………………………………………………… 192 § 2 蛛网模型……………………………………………………………………… 195 § 3 商品销售量预测……………………………………………………………… 198 § 4 遗传模型……………………………………………………………………… 200 习题十六……………………………………………………………………………………206 第十七章 马氏链模型……………………………………………………………………207 § 1 随机过程的概念……………………………………………………………… 207 § 2 马尔可夫链…………………………………………………………………… 207 § 3 马尔可夫链的应用…………………………………………………………… 216 习题十七……………………………………………………………………………………216 第十八章 动态优化模型…………………………………………………………………218 § 1 变分法简介…………………………………………………………………… 218 § 2 生产设备的最大经济效益…………………………………………………… 226 习题十八……………………………………………………………………………………229 第十九章 神经网络模型…………………………………………………………………230 § 1 神经网络简介………………………………………………………………… 230 § 2 蠓虫分类问题与多层前馈网络……………………………………………… 232 § 3 处理蠓虫分类的另一种网络方法…………………………………………… 236 习题十九……………………………………………………………………………………238 第二十章 偏微分方程的数值解…………………………………………………………240 § 1 偏微分方程的定解问题……………………………………………………… 240 § 2 偏微分方程的差分解法……………………………………………………… 242 § 3 Matlab 解法……………………………………………………………………247 习题二十……………………………………………………………………………………251 第二十一章 目标规划……………………………………………………………………253 § 1 目标规划的数学模型………………………………………………………… 253 § 2 多目标规划的 Matlab 解法…………………………………………………… 255 习题二十一…………………………………………………………………………………256 第二十二章 模糊数学模型………………………………………………………………257

    § 1 模糊数学基本知识…………………………………………………………… 257 § 2 模糊分类问题………………………………………………………………… 263 § 3 最佳方案的模糊决策………………………………………………………… 268

  • ﹒v﹒

    第二十三章 现代优化算法简介…………………………………………………………271 § 1 现代优化算法简介…………………………………………………………… 271 § 2 模拟退火算法………………………………………………………………… 271 § 3 蚁群算法……………………………………………………………………… 277

    第二十四章 时间序列模型………………………………………………………………280 § 1 确定性时间序列分析方法概述……………………………………………… 280

    § 2 平稳时间序列模型…………………………………………………………… 284 § 3 ARMA模型的特性…………………………………………………………… 285 § 4 时间序列建模的基本步骤…………………………………………………… 288

    附录一 Matlab入门………………………………………………………………………291 附录二 Matlab在线性代数中的应用……………………………………………………310 附录三 运筹学的 Lingo 软件……………………………………………………………314 附录四 判别分析…………………………………………………………………………317 参考文献……………………………………………………………………………………319

  • -1-

    前 言 今天,人类社会正处在由工业化社会向信息化社会过渡的变革。以数字化为特征的

    信息社会有两个显著特点:计算机技术的迅速发展与广泛应用;数学的应用向一切领域

    渗透。随着计算机技术的飞速发展,科学计算的作用越来越引起人们的广泛重视,它已

    经与科学理论和科学实验并列成为人们探索和研究自然界、人类社会的三大基本方法。

    为了适应这种社会的变革,培养和造就出一批又一批适应高度信息化社会具有创新能力

    的高素质的工程技术和管理人才,在各高校开设“数学建模”课程,培养学生的科学计

    算能力和创新能力,就成为这种新形势下的历史必然。

    数学建模是对现实世界的特定对象,为了特定的目的,根据特有的内在规律,对其

    进行必要的抽象、归纳、假设和简化,运用适当的数学工具建立的一个数学结构。数学

    建模就是运用数学的思想方法、数学的语言去近似地刻画一个实际研究对象,构建一座

    沟通现实世界与数学世界的桥梁,并以计算机为工具应用现代计算技术达到解决各种实

    际问题的目的。建立一个数学模型的全过程称为数学建模。因此“数学建模”(或数学

    实验)课程教学对于开发学生的创新意识,提升人的数学素养,培养学生创造性地应用

    数学工具解决实际问题的能力,有着独特的功能。

    数学建模过程就是一个创造性的工作过程。人的创新能力首先是创造性思维和具备

    创新的思想方法。数学本身是一门理性思维科学,数学教学正是通过各个教学环节对学

    生进行严格的科学思维方法的训练,从而引发人的灵感思维,达到培养学生的创造性思

    维的能力。同时数学又是一门实用科学,它具有能直接用于生产和实践,解决工程实际

    中提出的问题,推动生产力的发展和科学技术的进步。学生参加数学建模活动,首先就

    要了解问题的实际背景,深入到具体学科领域的前沿,这就需要学生具有能迅速查阅大

    量科学资料,准确获得自己所需信息的能力;同时,不但要求学生必需了解现代数学各

    门学科知识和各种数学方法,把所掌握的数学工具创造性地应用于具体的实际问题,构

    建其数学结构,还要求学生熟悉各种数学软件,熟练地把现代计算机技术应用于解决当

  • -2-

    前实际问题综合能力,最后还要具有把自己的实践过程和结果叙述成文字的写作能力。

    通过数学建模全过程的各个环节,学生们进行着创造性的思维活动,模拟了现代科学研

    究过程。通过“数学建模”课程的教学和数学建模活动极大地开发了学生的创造性思维

    的能力,培养学生在面对错综复杂的实际问题时,具有敏锐的观察力和洞察力,以及丰

    富的想象力。因此,“数学建模”课程在培养学生的创新能力方面有着其它课程不可替

    代的作用。

    几年的“数学建模”教学实践告诉我们,进行数学建模教学,为学生提供一本内容

    丰富,既理论完整又实用的“数学建模”教材,使学生少走弯路尤为重要。这也是我们

    编写这本教材的初衷。本教材可以说既是我们多年教学经验的总结,也是我们心血的结

    晶。本教材的特点是尽量为学生提供常用的数学方法,并将相应的 Matlab 程序提供给

    学生,使学生在进行书中提供的案例的学习中,在自己动手构建数学模型的同时上机进

    行数学实验,从而为学生提供数学建模全过程的训练,以便能够达到举一反三,取得事

    半功倍的教学效果。司守奎同志编写了全部的 Matlab 程序,参加本书编写的还有毛凯

    同志。

    全书共二十四章,各章有一定的独立性,这样便于教师和学生按需要进行选择。完

    成本教材的教学大约需要 60 学时,其中方法教学与上机实践的比例一般不应少于 1:1 。

    一本好的教材需要经过多年的教学实践,反复锤炼。由于我们的经验和时间所限,

    书中的错误和纰漏在所难免,敬请同行不吝指正。

    编者

    2003 年 12 月

  • -1-

    第一章 线性规划 §1 线性规划

    在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济

    效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记 LP)则是数学规划的一个重要分支。自从 1947 年 G. B. Dantzig 提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深

    入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性

    规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。 1.1 线性规划的实例与定义 例 1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。

    生产甲机床需用 BA、 机器加工,加工时间分别为每台 2 小时和 1 小时;生产乙机床需用 CBA 、、 三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为 A机器 10 小时、B 机器 8 小时和C 机器 7 小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?

    上述问题的数学模型:设该厂生产 1x 台甲机床和 2x 乙机床时总利润最大,则 21, xx应满足

    (目标函数) 21 34max xxz += (1)

    s.t.(约束条件)

    ⎪⎪⎩

    ⎪⎪⎨

    ≥≤

    ≤+≤+

    0,7

    8102

    21

    2

    21

    21

    xxx

    xxxx

    (2)

    这里变量 21, xx 称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式是问题的约束条件,记为 s.t.(即 subject to)。由于上面的目标函数及约束条件均为线性函数,故被称为线性规划问题。

    总之,线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最

    小的问题。 在解决实际问题时,把问题归结成一个线性规划数学模型是很重要的一步,但往往

    也是困难的一步,模型建立得是否恰当,直接影响到求解。而选适当的决策变量,是我

    们建立有效模型的关键之一。 1.2 线性规划的 Matlab 标准形式 线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以

    是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab 中规定线性规划的标准形式为

    xcx

    T min

    s.t. ⎪⎩

    ⎪⎨

    ≤≤=⋅

    ubxlbbeqxAeq

    bAx

    其中 c 和 x 为 n 维列向量, A、 Aeq 为适当维数的矩阵,b 、beq 为适当维数的列向量。

  • -2-

    例如线性规划 bAxxc

    xT ≥ s.t. max

    的 Matlab 标准型为 bAxxc

    xT −≤−− s.t. min

    1.3 线性规划问题的解的概念 一般线性规划问题的(数学)标准型为

    ∑=

    =n

    jjj xcz

    1max (3)

    s.t. ⎪⎩

    ⎪⎨

    =≥

    ==∑=

    njx

    mibxa

    j

    n

    jijij

    ,,2,10

    ,,2,11

    L

    L (4)

    可行解 满足约束条件(4)的解 ),,,( 21 nxxxx L= ,称为线性规划问题的可行解,而使目标函数(3)达到最大值的可行解叫最优解。

    可行域 所有可行解构成的集合称为问题的可行域,记为 R 。 1.4 线性规划的图解法

    0 2 4 6 8 1 00

    1

    2

    3

    4

    5

    6

    7

    8

    9

    1 0

    x 2 = 7

    2 x 1 + x 2 = 1 0

    x 1 + x 2 = 8

    z = 1 2

    ( 2 , 6 )

    图 1 线性规划的图解示意图

    图解法简单直观,有助于了解线性规划问题求解的基本原理。我们先应用图解法来

    求解例 1。对于每一固定的值 z,使目标函数值等于 z的点构成的直线称为目标函数等位线,当 z变动时,我们得到一族平行直线。对于例 1,显然等位线越趋于右上方,其上的点具有越大的目标函数值。不难看出,本例的最优解为

    Tx )6,2(* = ,最优目标值26* =z 。 从上面的图解过程可以看出并不难证明以下断言: (1)可行域R 可能会出现多种情况。R 可能是空集也可能是非空集合,当 R 非空

    时,它必定是若干个半平面的交集(除非遇到空间维数的退化)。R 既可能是有界区域,也可能是无界区域。

    (2)在R 非空时,线性规划既可以存在有限最优解,也可以不存在有限最优解(其目标函数值无界)。

  • -3-

    (3)若线性规划存在有限最优解,则必可找到具有最优目标函数值的可行域 R 的“顶点”。

    上述论断可以推广到一般的线性规划问题,区别只在于空间的维数。在一般的n 维

    空间中,满足一线性等式∑=

    =n

    iii bxa

    1

    的点集被称为一个超平面,而满足一线性不等式

    ∑=

    ≤n

    iii bxa

    1(或∑

    =

    ≥n

    iii bxa

    1)的点集被称为一个半空间(其中 ),,( 1 naa L 为一n 维行

    向量,b 为一实数)。若干个半空间的交集被称为多胞形,有界的多胞形又被称为多面体。易见,线性规划的可行域必为多胞形(为统一起见,空集Φ也被视为多胞形)。 在一般n 维空间中,要直接得出多胞形“顶点”概念还有一些困难。二维空间中的顶点可以看成为边界直线的交点,但这一几何概念的推广在一般n 维空间中的几何意义并不十分直观。为此,我们将采用另一途径来定义它。

    定义 1 称 n 维空间中的区域 R 为一凸集,若 Rxx ∈∀ 21, 及 )1,0(∈∀λ ,有Rxx ∈−+ 21 )1( λλ 。

    定义 2 设R 为n 维空间中的一个凸集, R 中的点 x 被称为 R 的一个极点,若不存在 Rxx ∈21、 及 )1,0(∈λ ,使得 21 )1( xxx λλ −+= 。

    定义 1 说明凸集中任意两点的连线必在此凸集中;而定义 2 说明,若 x 是凸集 R的一个极点,则 x 不能位于 R 中任意两点的连线上。不难证明,多胞形必为凸集。同样也不难证明,二维空间中可行域 R 的顶点均为 R 的极点( R 也没有其它的极点)。

    1.5 求解线性规划的 Matlab 解法 单纯形法是求解线性规划问题的最常用、最有效的算法之一。这里我们就不介绍

    单纯形法,有兴趣的读者可以参看其它线性规划书籍。下面我们介绍线性规划的 Matlab解法。

    Matlab 中线性规划的标准型为 xc

    xT min

    s.t. ⎪⎩

    ⎪⎨

    ≤≤=⋅

    ubxlbbeqxAeq

    bAx

    基本函数形式为 linprog(c,A,b),它的返回值是向量 x 的值。还有其它的一些函数调用形式(在 Matlab 指令窗运行 help linprog 可以看到所有的函数调用形式),如:

    [x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS) 这里 fval 返回目标函数的值,LB 和 UB 分别是变量 x 的下界和上界, 0x 是 x 的初始值,OPTIONS 是控制参数。

    例 2 求解下列线性规划问题 321 532max xxxz −+=

    s.t. 7321 =++ xxx 1052 321 ≥+− xxx 123 321 ≤++ xxx 0,, 321 ≥xxx

  • -4-

    解 (i)编写 M 文件 c=[2;3;-5]; a=[-2,5,-1;1,3,1]; b=[-10;12]; aeq=[1,1,1]; beq=7; x=linprog(-c,a,b,aeq,beq,zeros(3,1)) value=c'*x

    (ii)将M文件存盘,并命名为example1.m。 (iii)在Matlab指令窗运行example1即可得所求结果。 例3 求解线性规划问题

    321 32 min xxxz ++=

    ⎪⎩

    ⎪⎨

    ≥≥+

    ≥++

    0,,623

    824

    321

    21

    321

    xxxxx

    xxx

    解 编写Matlab程序如下: c=[2;3;1];

    a=[1,4,2;3,2,0];

    b=[8;6];

    [x,y]=linprog(c,-a,-b,[],[],zeros(3,1)) 1.6 可以转化为线性规划的问题 很多看起来不是线性规划的问题也可以通过变换变成线性规划的问题来解决。如: 例4 规划问题为

    bAxxxx n

    ≤+++

    t.s.||||||min 21 L

    其中T

    nxxx ][ 1 L= , A和b 为相应维数的矩阵和向量。 要把上面的问题变换成线性规划问题,只要注意到事实:对任意的 ix ,存在

    0, >ii vu 满足 iii vux −= , iii vux +=||

    事实上,我们只要取2

    || iii

    xxu += ,2|| ii

    ixxv −= 就可以满足上面的条件。

    这样,记T

    nuuu ][ 1 L= ,T

    nvvv ][ 1 L= ,从而我们可以把上面的问题变成

    ∑=

    +n

    iii vu

    1

    )(min

    ⎩⎨⎧

    ≥≤−

    0,)(

    t.s.vu

    bvuA

    例 5 |}|max{min iyx iiε

    其中 iii yx −=ε 。 对于这个问题,如果我们取 ||max0 iyi

    x ε= ,这样,上面的问题就变换成

  • -5-

    0min x 0011 ,, t.s. xyxxyx nn ≤−≤− L

    此即我们通常的线性规划问题。 §2 运输问题(产销平衡)

    例 6 某商品有m 个产地、n 个销地,各产地的产量分别为 maa ,,1 L ,各销地的需求量分别为 nbb ,,1 L 。若该商品由 i 产地运到 j 销地的单位运价为 ijc ,问应该如何调运才能使总运费最省?

    解:引入变量 ijx ,其取值为由 i 产地运往 j 销地的该商品数量,数学模型为

    ∑∑= =

    m

    i

    n

    jijij xc

    1 1

    min

    s.t.

    ⎪⎪⎪

    ⎪⎪⎪

    ==

    ==

    =

    =

    0

    ,,2,1,

    ,,1,

    1

    1

    ij

    m

    ijij

    n

    jiij

    x

    njbx

    miax

    L

    L

    显然是一个线性规划问题,当然可以用单纯形法求解。 对产销平衡的运输问题,由于有以下关系式存在:

    ∑∑ ∑ ∑∑ ∑== = == =

    =⎟⎠

    ⎞⎜⎝

    ⎛=⎟⎟

    ⎞⎜⎜⎝

    ⎛=

    m

    ii

    n

    j

    n

    j

    m

    iij

    m

    i

    n

    jijj axxb

    11 1 11 1

    其约束条件的系数矩阵相当特殊,可用比较简单的计算方法,习惯上称为表上作业法(由

    康托洛维奇和希奇柯克两人独立地提出,简称康—希表上作业法)。 §3 指派问题

    3.1 指派问题的数学模型 例 7 拟分配n 人去干n 项工作,每人干且仅干一项工作,若分配第 i 人去干第 j

    项工作,需花费 ijc 单位时间,问应如何分配工作才能使工人花费的总时间最少? 容易看出,要给出一个指派问题的实例,只需给出矩阵 )( ijcC = ,C 被称为指派

    问题的系数矩阵。 引入变量 ijx ,若分配 i 干 j 工作,则取 1=ijx ,否则取 0=ijx 。上述指派问题的

    数学模型为

    ∑∑= =

    n

    i

    n

    jijij xc

    1 1

    min

    s.t. ∑=

    =n

    jijx

    11

  • -6-

    ∑=

    =n

    iijx

    11

    1 0或=ijx 上述指派问题的可行解可以用一个矩阵表示,其每行每列均有且只有一个元素为

    1,其余元素均为 0;可以用 n,,1L 中的一个置换表示。 问题中的变量只能取 0 或 1,从而是一个 0-1 规划问题。一般的 0-1 规划问题求解

    极为困难。但指派问题并不难解,其约束方程组的系数矩阵十分特殊(被称为全单位模

    矩阵,其各阶非零子式均为 1± ),其非负可行解的分量只能取 0 或 1,故约束 10或=ijx可改写为 0≥ijx 而不改变其解。此时,指派问题被转化为一个特殊的运输问题,其中

    nm = , 1== ji ba 。 3.2 求解指派问题的匈牙利算法 由于指派问题的特殊性,又存在着由匈牙利数学家 Konig 提出的更为简便的解法

    —匈牙利算法。算法主要依据以下事实:如果系数矩阵 )( ijcC = 一行(或一列)中每一元素都加上或减去同一个数,得到一个新矩阵 )( ijbB = ,则以C 或 B 为系数矩阵的指派问题具有相同的最优指派。

    例 8 求解指派问题,其系数矩阵为

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    16221917171822241819211722191516

    C

    解 将第一行元素减去此行中的最小元素 15,同样,第二行元素减去 17,第三行元素减去 17,最后一行的元素减去 16,得

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    0631015712407401

    1B

    再将第 3 列元素各减去 1,得

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    *

    *

    *

    *

    2

    0531005711407301

    B

    以 2B 为系数矩阵的指派问题有最优指派

    ⎟⎟⎠

    ⎞⎜⎜⎝

    ⎛43124321

    由等价性,它也是例 7 的最优指派。 有时问题会稍复杂一些。

    例 9 求解系数矩阵C 的指派问题

  • -7-

    ⎥⎥⎥⎥⎥⎥

    ⎢⎢⎢⎢⎢⎢

    =

    61071041066141512141217766698979712

    C

    解:先作等价变换如下

    ⎥⎥⎥⎥⎥⎥

    ⎢⎢⎢⎢⎢⎢

    ⎥⎥⎥⎥⎥⎥

    ⎢⎢⎢⎢⎢⎢

    −−−−−

    2636040*08957510*00*0032202*05

    61071041066141512141217766698979712

    46767

    容易看出,从变换后的矩阵中只能选出四个位于不同行不同列的零元素,但 5=n ,最优指派还无法看出。此时等价变换还可进行下去。步骤如下:

    (1) 对未选出 0 元素的行打∨; (2) 对∨行中 0 元素所在列打∨; (3) 对∨列中选中的 0 元素所在行打∨; 重复(2)、(3)直到无法再打∨为止。

    可以证明,若用直线划没有打∨的行与打∨的列,就得到了能够覆盖住矩阵中所有零元素的最少条数的直线集合,找出未覆盖的元素中的最小者,令∨行元素减去此数,∨列元素加上此数,则原先选中的 0 元素不变,而未覆盖元素中至少有一个已转变为 0,且新矩阵的指派问题与原问题也等价。上述过程可反复采用,直到能选取出足够的 0 元素为止。例如,对例 5 变换后的矩阵再变换,第三行、第五行元素减去 2,第一列元素加上 2,得

    ⎥⎥⎥⎥⎥⎥

    ⎢⎢⎢⎢⎢⎢

    04140400811353800003420207

    现在已可看出,最优指派为 ⎟⎟⎠

    ⎞⎜⎜⎝

    ⎛5314254321

    §4 对偶理论与灵敏度分析

    4.1 原始问题和对偶问题 考虑下列一对线性规划模型: xcTmax s.t. 0, ≥≤ xbAx (P)

    和 ybTmin s.t. 0, ≥≥ ycyAT (D)

  • -8-

    称(P)为原始问题,(D)为它的对偶问题。 不太严谨地说,对偶问题可被看作是原始问题的“行列转置”: (1) 原始问题中的第 j 列系数与其对偶问题中的第 j 行的系数相同; (2) 原始目标函数的各个系数行与其对偶问题右侧的各常数列相同; (3) 原始问题右侧的各常数列与其对偶目标函数的各个系数行相同; (4) 在这一对问题中,不等式方向和优化方向相反。 考虑线性规划:

    0,s.t.min ≥= xbAxxcT 把其中的等式约束变成不等式约束,可得

    0, s.t. min ≥⎥⎦

    ⎤⎢⎣

    ⎡−

    ≥⎥⎦

    ⎤⎢⎣

    ⎡−

    xb

    bx

    AA

    xcT

    它的对偶问题是

    [ ] [ ] cyy

    AAyy

    bb TTTT ≤⎥⎦

    ⎤⎢⎣

    ⎡−⎥

    ⎤⎢⎣

    ⎡−

    2

    1

    2

    1 s.t.max

    其中 1y 和 2y 分别表示对应于约束 bAx ≥ 和 bAx −≥− 的对偶变量组。令 21 yyy −= ,则上式又可写成

    cyAyb TT ≤ s.t. max 原问题和对偶的对偶约束之间的关系:

    min max

    ⎪⎩

    ⎪⎨

    ⎧≤≥

    无限制

    变量 00

    ⎪⎩

    ⎪⎨

    =≥≤

    000

    行约束

    ⎪⎩

    ⎪⎨

    =≤≥

    000

    行约束 ⎪⎩

    ⎪⎨

    ⎧≤≥

    无限制

    变量 00

    4.2 对偶问题的基本性质 1o 对称性:对偶问题的对偶是原问题。 2o 弱对偶性:若 x 是原问题的可行解, y 是对偶问题的可行解。则存在

    ybxc TT ≤ 。 3o 无界性:若原问题(对偶问题)为无界解,则其对偶问题(原问题)无可行解。 4o 可行解是最优解时的性质:设 x̂ 是原问题的可行解, ŷ 是对偶问题的可行解,

    当 ybxc TT ˆˆ = 时, yx ˆ,ˆ 是最优解。 5o 对偶定理:若原问题有最优解,那么对偶问题也有最优解;且目标函数值相同。 6o 互补松弛性:若 yx ˆ,ˆ 分别是原问题和对偶问题的最优解,则

    0)ˆ(ˆ,0)ˆ(ˆ =−=− cyAxbxAy TTT 例 10 已知线性规划问题 54321 32532min xxxxx ++++=ω s.t. 432 54321 ≥++++ xxxxx

  • -9-

    332 54321 ≥+++− xxxxx 5,,2,1,0 L=≥ jx j

    已知其对偶问题的最优解为 5;53,

    54 *

    2*1 === zyy 。试用对偶理论找出原问题的最优

    解。 解 先写出它的对偶问题 21 34max yyz += 22 21 ≤+ yy ① 321 ≤− yy ② 532 31 ≤+ yy ③ 221 ≤+ yy ④ 33 21 ≤+ yy ⑤ 0, 21 ≥yy

    将*2

    *1 , yy 的值代入约束条件,得②,③,④为严格不等式;由互补松弛性得

    0*4*3

    *2 === xxx 。因 0,

    *2

    *1 >yy ;原问题的两个约束条件应取等式,故有

    43 *5*1 =+ xx

    32 *5*1 =+ xx

    求解后得到 1,1 *5*1 == xx ;故原问题的最优解为

    5;]'10001[ ** == ωX 。 4.3 灵敏度分析 在以前讨论线性规划问题时,假定 jiij cba ,, 都是常数。但实际上这些系数往往是估

    计值和预测值。如市场条件一变, jc 值就会变化; ija 往往是因工艺条件的改变而改变;

    ib 是根据资源投入后的经济效果决定的一种决策选择。因此提出这样两个问题:当这些系数有一个或几个发生变化时,已求得的线性规划问题的最优解会有什么变化;或者

    这些系数在什么范围内变化时,线性规划问题的最优解或最优基不变。这里我们就不讨

    论了。 4.4 参数线性规划 参数线性规划是研究 jiij cba ,, 这些参数中某一参数连续变化时,使最优解发生变化

    的各临界点的值。即把某一参数作为参变量,而目标函数在某区间内是这参变量的线性

    函数,含这参变量的约束条件是线性等式或不等式。因此仍可用单纯形法和对偶单纯形

    法进行分析参数线性规划问题。 §5 投资的收益和风险

    5.1 问题提出 市场上有 n 种资产 is ( ni ,,2,1 L= )可以选择,现用数额为 M 的相当大的资金

    作一个时期的投资。这 n 种资产在这一时期内购买 is 的平均收益率为 ir ,风险损失率为

    iq ,投资越分散,总的风险越少,总体风险可用投资的 is 中最大的一个风险来度量。

  • -10-

    购买 is 时要付交易费,(费率 ip ),当购买额不超过给定值 iu 时,交易费按购买 iu计算。另外,假定同期银行存款利率是 0r ,既无交易费又无风险。( %50 =r )

    已知 4=n 时相关数据如表 1。 表 1

    is ir (%) iq ip (%) iu (元)

    1s 28 2.5 1 103

    2s 21 1.5 2 198

    3s 23 5.5 4.5 52

    4s 25 2.6 6.5 40 试给该公司设计一种投资组合方案,即用给定资金M ,有选择地购买若干种资产

    或存银行生息,使净收益尽可能大,使总体风险尽可能小。 5.2 符号规定和基本假设 符号规定:

    is :第 i 种投资项目,如股票,债券

    iii qpr ,, :分别为 is 的平均收益率,交易费率,风险损失率

    iu : is 的交易定额

    0r :同期银行利率

    ix :投资项目 is 的资金 a :投资风险度 Q:总体收益 基本假设: 1. 投资数额M 相当大,为了便于计算,假设 1=M ; 2. 投资越分散,总的风险越小; 3. 总体风险用投资项目 is 中最大的一个风险来度量; 4. n 种资产 is 之间是相互独立的; 5. 在投资的这一时期内, iii qpr ,, , 0r 为定值,不受意外因素影响; 6. 净收益和总体风险只受 iii qpr ,, 影响,不受其它因素干扰。 5.3 模型的分析与建立 1. 总体风险用所投资的 is 中最大的一个风险来衡量,即

    },,2,1|max{ nixq ii L= 2.购买 is 所付交易费是一个分段函数,即

    交易费⎩⎨⎧

    ≤>

    =iiii

    iiii

    uxupuxxp

    ,,

    而题目所给定的定值 iu (单位:元)相对总投资M 很少, iiup 更小,可以忽略不计,这样购买 is 的净收益为 iii xpr )( − 。

    3. 要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型:

  • -11-

    目标函数为

    ⎪⎩

    ⎪⎨

    ⎧−∑

    =

    }max{min

    )(max0

    ii

    n

    iiii

    xq

    xpr

    约束条件为

    ⎪⎩

    ⎪⎨

    =≥

    =+∑=

    nix

    Mxp

    i

    n

    iii

    ,,1,0,0

    )1(0

    L

    4. 模型简化 a) 在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限 a ,使最

    大的一个风险 aM

    xq ii ≤ ,可找到相应的投资方案。这样把多目标规划变成一个目标的线

    性规划。 模型一 固定风险水平,优化收益

    ∑=

    −n

    iiii xpr

    0)(max

    s.t.

    ⎪⎪⎩

    ⎪⎪⎨

    =≥=+

    ∑=

    n

    iiii

    ii

    nixMxp

    aM

    xq

    0,,1,0,0,)1( L

    b) 若投资者希望总盈利至少达到水平 k 以上,在风险最小的情况下寻求相应的投资组合。

    模型二 固定盈利水平,极小化风险 }}{{maxmin ii xq

    s.t.

    ⎪⎪⎩

    ⎪⎪⎨

    =≥=+

    ≥−

    =

    =

    n

    iiii

    n

    iiii

    nixMxp

    kxpr

    0

    0

    ,,1,0,0,)1(

    )(

    L

    c) 投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合。因此对风险、收益分别赋予权重 s( 10 ≤< s )和 )1( s− ,s 称为投资偏好系数。

    模型三 ∑=

    −−−n

    iiiiii xprsxqs

    0)()1(}}{max{min

    s.t. ∑=

    =≥=+n

    iiii nixMxp

    0,,2,1,0,0,)1( L

    5.4 模型一的求解 模型一为: Txxxxxf ),,,,)(185.0,185.0,19.0,27.0,05.0(min 43210−−−−−=

  • -12-

    s.t.

    ⎪⎪⎪⎪

    ⎪⎪⎪⎪

    =≥≤≤≤≤

    =++++

    )4,,1,0(0026.0055.0015.0025.0

    1065.1045.102.101.1

    4

    3

    2

    1

    43210

    Lixaxaxaxax

    xxxxx

    i

    由于 a 是任意给定的风险度,到底怎样没有一个准则,不同的投资者有不同的风险度。我们从 0=a 开始,以步长 001.0=Δa 进行循环搜索,编制程序如下: clc,clear a=0; hold on while a

  • -13-

    ∑=

    =n

    jjj xcz

    1

    ||max

    ⎪⎩

    ⎪⎨

    ⎧==∑

    =

    取值无约束j

    n

    jijij

    x

    mibxa1

    ),,2,1(st.

    L

    3.线性回归是一种常用的数理统计方法,这个方法要求对图上的一系列点),(,),,(),,( 2211 nn yxyxyx L 选配一条合适的直线拟合。方法通常是先定直线方程为

    bxay += ,然后按某种准则求定 ba, 。通常这个准则为最小二乘法,但也可用其他准则。试根据以下准则建立这个问题的线性规划模型:

    ∑=

    +−n

    iii bxay

    1

    |)(|min

    4.某厂生产三种产品 I,II,III。每种产品要经过 BA, 两道工序加工。设该厂有两种规格的设备能完成 A工序,它们以 21, AA 表示;有三种规格的设备能完成 B 工序,它们以 321 ,, BBB 表示。产品 I 可在 BA, 任何一种规格设备上加工。产品 II 可在任何规格的 A设备上加工,但完成 B 工序时,只能在 1B 设备上加工;产品 III 只能在 2A 与 2B设备上加工。已知在各种机床设备的单件工时,原材料费,产品销售价格,各种设备有

    效台时以及满负荷操作时机床设备的费用如表 2,求安排最优的生产计划,使该厂利润最大。

    表 2 产 品

    设备 I II III

    设备有效台时 满负荷时的 设备费用(元)

    1A

    2A

    1B

    2B

    3B

    5

    7

    6

    4

    7

    10

    9

    8

    12

    11

    6000

    10000

    4000

    7000

    4000

    300

    321

    250

    783

    200 原料费(元/件) 单 价(元/件)

    0.25 1.25

    0.35 2.00

    0.50 2.80

    5.有四个工人,要指派他们分别完成 4 项工作,每人做各项工作所消耗的时间如

    表 3。 表 3

    工作 工人 A B C D

    甲 15 18 21 24 乙 19 23 22 18 丙 26 17 16 19 丁 19 21 23 17

    问指派哪个人去完成哪项工作,可使总的消耗时间为最小?

  • -14-

    6.某战略轰炸机群奉命摧毁敌人军事目标。已知该目标有四个要害部位,只要摧毁其中之一即可达到目的。为完成此项任务的汽油消耗量限制为 48000 升、重型炸弹48 枚、轻型炸弹 32 枚。飞机携带重型炸弹时每升汽油可飞行 2 千米,带轻型炸弹时每升汽油可飞行 3 千米。又知每架飞机每次只能装载一枚炸弹,每出发轰炸一次除来回路程汽油消耗(空载时每升汽油可飞行 4 千米)外,起飞和降落每次各消耗 100 升。有关数据如表 4 所示。

    表 4 摧毁可能性

    要害部位 离机场距离 (千米) 每枚重型弹 每枚轻型弹

    1 2 3 4

    450 480 540 600

    0.10 0.20 0.15 0.25

    0.08 0.16 0.12 0.20

    为了使摧毁敌方军事目标的可能性最大,应如何确定飞机轰炸的方案,要求建立这个问

    题的线性规划模型。 7.用 Matlab 求解下列线性规划问题:

    3213max xxxz −−=

    s.t.

    ⎪⎪⎩

    ⎪⎪⎨

    ≥=+−

    ≥++−≤+−

    0,,12

    324112

    321

    31

    321

    321

    xxxxx

    xxxxxx

    8.用 Matlab 求解下列规划问题: ||4||3||2||min 4321 xxxxz +++= s.t. 04321 =+−− xxxx 13 4321 =−+− xxxx

    2132 4321 −=+−− xxxx

    9.一架货机有三个货舱:前舱、中仓和后舱。三个货舱所能装载的货物的最大重量和体积有限制如表 5 所示。并且为了飞机的平衡,三个货舱装载的货物重量必须与其最大的容许量成比例。

    表 5 货舱数据 前舱 中仓 后舱 重量限制(吨) 10 16 8 体积限制(立方米) 6800 8700 5300

    现有四类货物用该货机进行装运,货物的规格以及装运后获得的利润如表 6。

    表 6 货物规格及利润表 重量(吨) 空间(立方米/吨) 利润(元/吨) 货物 1 18 480 3100 货物 2 15 650 3800 货物 3 23 580 3500 货物 4 12 390 2850

  • -15-

    假设: (1)每种货物可以无限细分; (2)每种货物可以分布在一个或者多个货舱内; (3)不同的货物可以放在同一个货舱内,并且可以保证不留空隙。 问应如何装运,使货机飞行利润最大?

  • -16-

    第二章 整数规划 §1 概论

    1.1 定义 规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,

    变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适

    用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。 1.2 整数规划的分类 如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类: 1o 变量全限制为整数时,称纯(完全)整数规划。 2o 变量部分限制为整数的,称混合整数规划。 1.2 整数规划特点 (i) 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。 ②整数规划无可行解。 例 1 原线性规划为 21min xxz += 0,0,542 2121 ≥≥=+ xxxx

    其最优实数解为:45min,

    45,0 21 === zxx 。

    ③有可行解(当然就存在最优解),但最优解值变差。 例 2 原线性规划为 21min xxz += 0,0,642 2121 ≥≥=+ xxxx

    其最优实数解为:23min,

    23,0 21 === zxx 。

    若限制整数得: 2min,1,1 21 === zxx 。 (ii) 整数规划最优解不能按照实数最优解简单取整而获得。 1.3 求解方法分类: (i)分枝定界法—可求纯或混合整数线性规划。 (ii)割平面法—可求纯或混合整数线性规划。 (iii)隐枚举法—求解“0-1”整数规划: ①过滤隐枚举法; ②分枝隐枚举法。 (iv)匈牙利法—解决指派问题(“0-1”规划特殊情形)。 (v)蒙特卡洛法—求解各种类型规划。 下面将简要介绍常用的几种求解整数规划的方法。

    §2 分枝定界法 对有约束条件的最优化问题(其可行解为有限数)的所有可行解空间恰当地进行系

    统搜索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子

    集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称

    为定界。在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,

  • -17-

    这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。 分枝定界法可用于解纯整数或混合的整数规划问题。在本世纪六十年代初由 Land

    Doig 和 Dakin 等人提出的。由于这方法灵活且便于用计算机求解,所以现在它已是解整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂

    选址问题、背包问题及分配问题等。 设有最大化的整数规划问题 A,与它相应的线性规划为问题 B ,从解问题 B 开始,

    若其最优解不符合 A的整数条件,那么 B 的最优目标函数必是 A的最优目标函数 *z 的上界,记作 z ;而 A的任意可行解的目标函数值将是 *z 的一个下界 z 。分枝定界法就是将 B 的可行域分成子区域的方法。逐步减小 z 和增大 z ,最终求到 *z 。现用下例来说明:

    例 3 求解下述整数规划 21 9040Max xxz +=

    ⎪⎩

    ⎪⎨

    ≥≤+≤+

    且为整数0,70207

    5679

    21

    21

    21

    xxxx

    xx

    解 (i)先不考虑整数限制,即解相应的线性规划 B ,得最优解为: 355.8779,8168.1,8092.4 21 === zxx

    可见它不符合整数条件。这时 z 是问题 A 的最优目标函数值 *z 的上界,记作 z 。而0,0 21 == xx 显然是问题 A的一个整数可行解,这时 0=z ,是

    *z 的一个下界,记作 z ,即 3560 * ≤≤ z 。

    (ii)因为 21, xx 当前均为非整数,故不满足整数要求,任选一个进行分枝。设选 1x进行分枝,把可行集分成 2 个子集:

    44.8092][1 =≤x , 514.8092][1 =+≥x 因为 4 与 5 之间无整数,故这两个子集的整数解必与原可行集合整数解一致。这

    一步称为分枝。这两个子集的规划及求解如下: 问题 1B : 21 9040Max xxz +=

    ⎪⎩

    ⎪⎨

    ≥≤≤≤+≤+

    0,4070207

    5679

    21

    21

    21

    xxxx

    xx

    最优解为: 349,1.2,0.4 121 === zxx 。 问题 2B : 21 9040Max xxz +=

    ⎪⎩

    ⎪⎨

    ≥≥≤+≤+

    0,570207

    5679

    21

    21

    21

    xxxx

    xx

    最优解为: 4.341,57.1,0.5 121 === zxx 。 再定界: 3490 * ≤≤ z 。

    (iii)对问题 1B 再进行分枝得问题 11B 和 12B ,它们的最优解为

  • -18-

    340,2,4: 112111 === zxxB 327.14,00.3x1.43,: 122112 === zxB

    再定界: 341340 * ≤≤ z ,并将 12B 剪枝。 (iv)对问题 2B 再进行分枝得问题 21B 和 22B ,它们的最优解为

    083,00.1x5.44,: 222121 === zxB

    22B 无可行解。 将 2221, BB 剪枝。

    于是可以断定原问题的最优解为: 340,2,4 *21 === zxx

    从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为: 开始,将要求解的整数规划问题称为问题 A,将与它相应的线性规划问题称为问

    题 B 。 (i)解问题 B 可能得到以下情况之一:

    (a) B 没有可行解,这时 A也没有可行解,则停止. (b) B 有最优解,并符合问题 A的整数条件, B 的最优解即为 A 的最优解,则停止。 (c) B 有最优解,但不符合问题 A的整数条件,记它的目标函数值为 z 。

    (ii)用观察法找问题 A的一个整数可行解,一般可取 njx j ,,1,0 L== ,试探,

    求得其目标函数值,并记作 z 。以 *z 表示问题 A的最优目标函数值;这时有 zzz ≤≤ * 进行迭代。

    第一步:分枝,在 B 的最优解中任选一个不符合整数条件的变量 jx ,其值为 jb ,以 ][ jb 表示小于 jb 的最大整数。构造两个约束条件

    ][ jj bx ≤ 和 1][ +≥ jj bx 将这两个约束条件,分别加入问题 B ,求两个后继规划问题 1B 和 2B 。不考虑整数条件求解这两个后继问题。 定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出最优目标函数值最大者作为新的上界 z 。从已符合整数条件的各分支中,找出目标函数值为最大者作为新的下界 z ,若无作用 z 不变。

    第二步:比较与剪枝,各分枝的最优目标函数中若有小于 z 者,则剪掉这枝,即以后不再考虑了。若大于 z ,且不符合整数条件,则重复第一步骤。一直到最后得到

    zz =* 为止。得最优整数解 njx j ,,1,* L= 。

    §3 10 − 型整数规划

    10 − 型整数规划是整数规划中的特殊情形,它的变量 jx 仅取值 0 或 1。这时 jx 称为 10 − 变量,或称二进制变量。 jx 仅取值 0 或 1 这个条件可由下述约束条件: 10 ≤≤ jx ,整数

  • -19-

    所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入 10 − 变量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。我们

    先介绍引入 10 − 变量的实际问题,再研究解法。 3.1 引入 10 − 变量的实际问题

    3.1.1 投资场所的选定——相互排斥的计划 例 4 某公司拟在市东、西、南三区建立门市部。拟议中有 7 个位置(点)

    )7,,2,1( L=iAi 可供选择。规定 在东区。由 321 ,, AAA 三个点中至多选两个; 在西区。由 54 , AA 两个点中至少选一个;

    在南区,由 76 , AA 两个点中至少选一个。 如选用 iA 点,设备投资估计为 ib 元,每年可获利润估计为 ic 元,但投资总额不能超过 B 元。问应选择哪几个点可使年利润为最大?

    解题时先引入 10 − 变量 )7,,2,1( L=ixi 令

    ⎩⎨⎧

    =.0

    ,1点没被选中当

    点被选中当

    iAiA

    ix 7,,2,1 L=i .

    于是问题可列写成:

    ii

    i xcz ∑=

    =7

    1Max

    ⎪⎪⎪

    ⎪⎪⎪

    =≥+≥+

    ≤++

    ≤∑=

    10,11

    2

    76

    54

    321

    7

    1

    或i

    iii

    xxxxx

    xxx

    Bxb

    3.1.2 相互排斥的约束条件 有两个相互排斥的约束条件

    2445 21 ≤+ xx 或 4537 21 ≤+ xx 。 为了统一在一个问题中,引入 10 − 变量 y ,则上述约束条件可改写为:

    ⎪⎩

    ⎪⎨

    =

    −+≤++≤+

    10)1(4537

    2445

    21

    21

    或yMyxx

    yMxx

    其中M 是充分大的数。 约束条件 01 =x 或 800500 1 ≤≤ x

    可改写为

    ⎩⎨⎧

    =≤≤

    10800500 1

    或yyxy

  • -20-

    如果有m 个互相排斥的约束条件: mibxaxa inini ,,2,111 LL =≤++

    为了保证这m 个约束条件只有一个起作用,我们引入m 个 10 − 变量 ),,2,1( miyi L=和一个充分大的常数M ,而下面这一组 1+m 个约束条件

    miMybxaxa iinini ,,2,111 LL =+≤++ (1) 11 −=++ myy mL (2)

    就合于上述的要求。这是因为,由于(2),m 个 iy 中只有一个能取 0 值,设 0* =iy ,

    代入(1),就只有 *ii = 的约束条件起作用,而别的式子都是多余的。 3.1.3 关于固定费用的问题(Fixed Cost Problem) 在讨论线性规划时,有些问题是要求使成本为最小。那时总设固定成本为常数,并

    在线性规划的模型中不必明显列出。但有些固定费用(固定成本)的问题不能用一般线

    性规划来描述,但可改变为混合整数规划来解决,见下例。 例 5 某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产

    方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成

    本就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。

    所以必须全面考虑。今设有三种方式可供选择,令

    jx 表示采用第 j 种方式时的产量;

    jc 表示采用第 j 种方式时每件产品的变动成本;

    jk 表示采用第 j 种方式时的固定成本。 为了说明成本的特点,暂不考虑其它约束条件。采用各种生产方式的总成本分别为

    ⎪⎩

    ⎪⎨⎧

    =

    >+=

    0 ,0

    0,

    j

    jjjjj x

    xxckP

    当 3,2,1=j .

    在构成目标函数时,为了统一在一个问题中讨论,现引入 10− 变量 jy ,令

    ⎪⎩

    ⎪⎨⎧

    ==

    >

    .00

    ,0

    ,1

    时种生产方式,即当不采用第

    时,种生产方式,即当采用第

    jxj

    jxjjy (3)

    于是目标函数 )()()(min 333322221111 xcykxcykxcykz +++++= (3)式这个规定可表为下述 3 个线性约束条件:

    3,2,1, =≤≤ jMyxy jjjε (4) 其中ε 是一个充分小的正常数,M 是个充分大的正常数。(4)式说明,当 0>jx 时 jy必须为 1;当 0=jx 时只有 jy 为 0 时才有意义,所以(4)式完全可以代替(3)式。

    3.2 10− 型整数规划解法之一(过滤隐枚举法) 解 10− 型整数规划最容易想到的方法,和一般整数规划的情形一样,就是穷举法,

    即检查变量取值为 0 或 1 的每一种组合,比较目标函数值以求得最优解,这就需要检查变量取值的

    n2 个组合。对于变量个数 n 较大(例如 100>n ),这几乎是不可能的。因此常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的最优解。这样的

    方法称为隐枚举法(Implicit Enumeration),分枝定界法也是一种隐枚举法。当然,对

  • -21-

    有些问题隐枚举法并不适用,所以有时穷举法还是必要的。 下面举例说明一种解 10− 型整数规划的隐枚举法。 例 6 321 523Max xxxz +−=

    ⎪⎪⎪

    ⎪⎪⎪

    =

    ≤+≤+

    ≤++≤−+

    10,,64

    34422

    321

    32

    21

    321

    321

    或xxxxx

    xxxxxxxx

    求解思路及改进措施: (i) 先试探性求一个可行解,易看出 )0,0,1(),,( 321 =xxx 满足约束条件,故为一

    个可行解,且 3=z 。 (ii) 因为是求极大值问题,故求最优解时,凡是目标值 3

  • -22-

    任一个点能落在高值区的概率分别为 多位)100(9999.099.01 1000000 L≈− ,

    999954602.099999.01 1000000 ≈− 。 解 (i)首先编写 M 文件 mente.m 定义目标函数 f 和约束向量函数 g,程序如下:

    function [f,g]=mengte(x); f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-... x(4)-2*x(5); g=[sum(x)-400 x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800 2*x(1)+x(2)+6*x(3)-200 x(3)+x(4)+5*x(5)-200];

    (ii)编写M文件mainint.m如下求问题的解: rand('state',sum(clock));

    p0=0;

    tic

    for i=1:10^6

    x=99*rand(5,1);

    x1=floor(x);x2=ceil(x);

    [f,g]=mengte(x1);

    if sum(g

  • -23-

    0 0 1 1 5; b=400,800,200,200; enddata max=@sum(col:c1*x^2+c2*x); @for(row(i):@sum(col(j):a(i,j)*x(j))

  • -24-

    @for(link:@bin(x)); end §6 生产与销售计划问题

    6.1 问题实例 例 9 某公司用两种原油( A和 B )混合加工成两种汽油(甲和乙)。甲、乙两种

    汽油含原油的最低比例分别为 50%和 60%,每吨售价分别为 4800 元和 5600 元。该公司现有原油 A和 B 的库存量分别为 500 吨和 1000 吨,还可以从市场上买到不超过 1500吨的原油 A。原油 A的市场价为:购买量不超过 500 吨时的单价为 10000 元/吨;购买量超过 500 吨单不超过 1000 吨时,超过 500 吨的部分 8000 元/吨;购买量超过 1000 吨时,超过 1000 吨的部分 6000 元/吨。该公司应如何安排原油的采购和加工。

    6.2 建立模型 (1)问题分析 安排原油采购、加工的目标是利润最大,题目中给出的是两种汽油的售价和原油 A

    的采购价,利润为销售汽油的收入与购买原油 A的支出之差。这里的难点在于原油 A的采购价与购买量的关系比较复杂,是分段函数关系,能否及如何用线性规划、整数规划

    模型加以处理是关键所在。 (2)模型建立 设原油 A的购买量为 x(单位:吨)。根据题目所给数据,采购的支出 )(xc 可表示

    为如下的分段线性函数(以下价格以千元/吨为单位):

    ⎪⎩

    ⎪⎨

    ≤≤+≤≤+

    ≤≤=

    15001000,630001000500,81000

    5000,10)(

    xxxx

    xxxc (5)

    设原油 A用于生产甲、乙两种汽油的数量分别为 11x 和 12x ,原油 B 用于生产甲、乙两种汽油的数量分别为 21x 和 22x ,则总的收入为 )(6.5)(8.4 22122111 xxxx +++ (千元)。于是本例的目标函数(利润)为

    )()(6.5)(8.4max 22122111 xcxxxxz −+++= (6) 约束条件包括加工两种汽油用的原油 A、原油 B 库存量的限制,原油 A购买量的

    限制,以及两种汽油含原油 A的比例限制,它们表示为 xxx +≤+ 5001211 (7)

    10002221 ≤+ xx (8) 1500≤x (9)

    5.02111

    11 ≥+ xxx

    (10)

    6.02212

    12 ≥+ xxx

    (11)

    0,,,, 22211211 ≥xxxxx (12) 由于(5)式中的 )(xc 不是线性函数,(5)~(12)给出的是一个非线性规划,而

    且,对于这样用分段函数定义的 )(xc ,一般的非线性规划软件也难以输入和求解。能不能想办法将该模型化简,从而用现成的软件求解呢?

  • -25-

    6.3 求解模型 下面介绍 3 种解法 (1)解法一 一个自然的想法是将原油 A的采购量 x 分解为三个量,即用 321 ,, xxx 分别表示以

    价格 10 千元 /吨、 8 千元 /吨、 6 千元 /吨采购的原油 A 的吨数,总支出为321 6810)( xxxxc ++= ,且

    321 xxxx ++= (13) 这时目标函数(6)变为线性函数:

    )6810()(6.5)(8.4max 32122122111 xxxxxxxz ++−+++= (14) 应该注意到,只有当以 10 千元/吨的价格购买 5001 =x (吨)时,才能以 8 千元/

    吨的价格购买 )0(2 >x ,这个条件可以表示为 0)500( 21 =− xx (15)

    同理,只有当以 8 千元/吨的价格购买 5002 =x (吨)时,才能以 6 千元/吨的价格购买)0(3 >x ,于是

    0)500( 32 =− xx (16) 此外, 321 ,, xxx 的取值范围是

    500,,0 321 ≤≤ xxx (17) 由于有非线性约束(15)、(16),因而(7)~(17)构成非线性规划模型。将该模

    型输入 LINGO 软件如下: model: sets: var1/1..4/:y; !这里y(1)=x11,y(2)=x21,y(3)=x12,y(4)=x22; var2/1..3/:x,c; endsets max=4.8*(y(1)+y(2))+5.6*(y(3)+y(4))-@sum(var2:c*x); y(1)+y(3)0; (x(1)-500)*x(2)=0; (x(2)-500)*x(3)=0; @for(var2:@bnd(0,x,500)); data: c=10 8 6; enddata end

    可以用菜单命令“LINGO|Options”在“Global Solver”选项卡上启动全局优化选型,并运行上述程序求得全局最有解:购买 1000 吨原油 A,与库存的 500 吨原油 A和1000 吨原油 B 一起,共生产 2500 吨汽油乙,利润为 5000(千元)。

    (2)解法二 引入 0-1 变量将(15)和(16)转化为线性约束。 令 11 =z , 12 =z , 13 =z 分别表示以 10 千元/吨、8 千元/吨、6 千元/吨的价格采

    购原油 A,则约束(15)和(16)可以替换为

  • -26-

    112 500500 zxz ≤≤ , (18)

    223 500500 zxz ≤≤ , (19)

    33 500zx ≤ , (20) 0,, 321 =zzz 或 1 (21)

    式(7)~(14),式(17)~(21)构成混合整数线性规划模型,将它输入 LINGO 软件如下: model: sets: var1/1..4/:y; !这里y(1)=x11,y(2)=x21,y(3)=x12,y(4)=x22; var2/1..3/:x,z,c; endsets max=4.8*(y(1)+y(2))+5.6*(y(3)+y(4))-@sum(var2:c*x); y(1)+y(3)0; @for(var1(i)|i #lt# 3:500*z(i+1)

  • -27-

    11 zw ≤ , 212 zzw +≤ , 323 zzw +≤ , 34 zw ≤ (22) 14321 =+++ wwww , 0≥kw ( 4,3,2,1=k ) (23)

    1321 =++ zzz , 10,, 321 或=zzz (24) 此时 x 和 )(xc 可以统一地表示为

    43244332211 15001000500 wwwbwbwbwbwx ++=+++= (25) )()()()()( 44332211 bcwbcwbcwbcwxc +++=

    432 1200090005000 www ++= (26) 式(6)~(13),式(22)~(26)也构成一个混合整数线性规划模型,可以用

    LINGO 求解。输入的 LINGO 模型如下: model: sets: var/1..4/:b,c,y,z,w; !这里y(1)=x11,y(2)=x21,y(3)=x12,y(4)=x22 端点数为4,即分段数为3; endsets data: b=0,500,1000,1500; c=0,5000,9000,12000; z=,,,0; !增加的虚拟变量z(4)=0; enddata max=4.8*(y(1)+y(2))+5.6*(y(3)+y(4))-@sum(var:c*w); y(1)+y(3)0; w(1)

  • -28-

    121 =+++ nzzz L , 10或=kz (28) 1121 =+++ +nwww L , 0≥kw ( 1,,2,1 += nk L ) (29)

    习 题 二

    1. 用分枝定界法解:

    21Max xxz +=

    ⎪⎪⎪

    ⎪⎪⎪

    ≤+−

    ≤+

    整数2121

    21

    21

    ,,0,312

    1451

    149

    xxxx

    xx

    xx

    2. 试将下述非线性的 10 − 规划问题转换成线性的 10 − 规划问题 3211max xxxxz −+=

    ⎩⎨⎧

    ==≤++−

    )3,2,1(10332 321

    jxxxx

    j ,或

    3. 某钻井队要从以下 10 个可供选择的井位中确定 5 个钻井探油,使总的钻探费用为最小。若 10 个井位的代号为 1021 ,,, sss L ,相应的钻探费用为 1021 ,,, ccc L ,并且井位选择上要满足下列限制条件:

    (1) 或选择 1s 和 7s ,或选择钻探 9s ; (2) 选择了 3s 或 4s 就不能选 5s ,或反过来也一样; (3) 在 8765 ,,, ssss 中最多只能选两个;试建立这个问题的整数规划模型。 4.有一条河流由于河床泥沙淤结,每当上游发生洪水时,就会破堤淹没两岸,造

    成人员和财产的损失,为减少总的损失,人们采取破堤泄洪的方法,图 2 是该河流一岸区域的信息示意图,在该区域边界上有很高的山,使该区域成为封闭区域。区域内又分

    成十五个小区,每个小区内标有三个数字,分别表示该区域的海拔高度 )m(h 、面积)km( 2S 和被完全淹没时土地、房屋和财产等损失总数 k (百万元),我们假设

    (a)各小区间有相对高度为 1.2m 的小堤相互隔离,例如第一区和第二区之间事实上有海拔 5.2m 小堤。

    (b)当洪水淹没一个小区且洪水高于该小区高度 mp 时,该小区的损失 ),( pkf 为该小区的 k 和 p 的函数:

    ⎩⎨⎧

    ≥≤≤

    =1,

    10,),(

    pkpkp

    pkf

    (c)假设决堤口,可选在大堤或小堤的任何地方,决堤口的数量不受限制,但已经决口,就不能再补合,从河流经大堤决口流入小区的洪水量按决口数成比例分配,如

    在小区之间小堤开一决口,则假设该两小区之间的这段小堤不复存在,若水位高过小堤,

    则将自动向邻近最低的小区泄洪,若这样的小区有多块时,则平均泄洪。 求

  • -29-

    (1)整个区域全部受损失的最小洪水量Q。 (2)当洪水量为 6/Q , 3/Q 时,分别制定泄洪方案,使总损失最小(在一种方

    案中,决堤同时进行),并计算出该方案的损失数。

    河 流

    图 2 河流一岸区域示意图

    表 1 校址选择数据

    备选校址 1B 2B 3B 4B 5B 6B

    覆盖的居民小区

    7

    51 ,A

    AA

    85

    21

    ,,

    AAAA

    5

    31 ,,A

    AA

    8

    42 ,A

    AA 63 , AA

    8

    64 ,A

    AA

    5.某市为方便小学生上学,拟在新建的 8 个居民小区 821 ,,, AAA L 增设若干所

    H3.6 S6.1 K1.4 1

    1 11

    H4.0 S8.4 K7.0 2

    2

    H4.7 S7.0 K5.8 3 3

    H4.4 S9.3 K3.3 4 1

    H3.8 S4.8 K2.0 5 55 1

    H3.3 S3.6 K9.4 6

    H3.2 S0.9 K0.9 7

    H2.5 S8.5 K6.0 8

    H5.0 S1.8 K7.2 9

    H4.4 S0.1 K1.6 10

    H3.0 S4.6 K3.0 11

    H2.5 S1.5 K4.1 12

    H2.4 S2.3 K4.1 13

    H3.8 S8.8 K5.3 14

    H3.8 S1.3 K4.4 15

    高 山

    大堤

    高 山

  • -30-

    小学,经过论证知备选校址有: 621 ,,, BBB L ,它们能够覆盖的居民小区如表 1。 试建立一个数学模型,确定出最小个数的建校地址,使其能覆盖所有的居民小区。 6.某公司新购置了某种设备 6 台,欲分配给下属的 4 个企业,已知各企业获得这

    种设备后年创利润如表 2 所示,单位为千万元。问应如何分配这些设备能使年创总利润最大,最大利润是多少?

    表 2 各企业获得设备的年创利润数 企业

    设备 甲 乙 丙 丁

    1 4 2 3 4 2 6 4 5 5 3 7 6 7 6 4 7 8 8 6 5 7 9 8 6 6 7 10 8 6

    7.有一场由四个项目(高低杠、平衡木、跳马、自由体操) 组成的女子体操团

    体赛,赛程规定:每个队至多允许 10 名运动员参赛,每一个项目可以有 6 名选手参加。

    每个选手参赛的成绩评分从高到低依次为:10;9.9;9.8;…;0.1;0。每个代表队的

    总分是参赛选手所得总分之和,总分最多的代表队为优胜者。此外,还规定每个运动员

    只能参加全能比赛(四项全参加) 与单项比赛这两类中的一类,参加单项比赛的每个运

    动员至多只能参加三个单项。每个队应有 4 人参加全能比赛,其余运动员参加单项比赛。

    表 3 运动员各项目得分及概率分布表

    运动员

    项目 1 2 3 4 5

    高低杠

    8.4~0.15

    9.5~0.5

    9.2~0.25

    9.4~0.1

    9.3~0.1

    9.5~0.1

    9.6~0.6

    9.8~0.2

    8.4~0.1

    8.8~0.2

    9.0~0.6

    10~0.1

    8.1~0.1

    9.1~0.5

    9.3~0.3

    9.5~0.1

    8.4~0.15

    9.5~0.5

    9.2~0.25

    9.4~0.1

    平衡木

    8.4~0.1

    8.8~0.2

    9.0~0.6

    10~0.1

    8.4~0.15

    9.0~0.5

    9.2~0.25

    9.4~0.1

    8.1~0.1

    9.1~0.5

    9.3~0.3

    9.5~0.1

    8.7~0.1

    8.9~0.2

    9.1~0.6

    9.9~0.1

    9.0~0.1

    9.2~0.1

    9.4~0.6

    9.7~0.2

    跳马

    9.1~0.1

    9.3~0.1

    9.5~0.6

    9.8~0.2

    8.4~0.1

    8.8~0.2

    9.0~0.6

    10~0.1

    8.4~0.15

    9.5~0.5

    9.2~0.25

    9.4~0.1

    9.0~0.1

    9.4~0.1

    9.5~0.5

    9.7~0.3

    8.3~0.1

    8.7~0.1

    8.9~0.6

    9.3~0.2

    自由体操

    8.7~0.1

    8.9~0.2

    9.1~0.6

    9.9~0.1

    8.9~0.1

    9.1~0.1

    9.3~0.6

    9.6~0.2

    9.5~0.1

    9.7~0.1

    9.8~0.6

    10~0.2

    8.4~0.1

    8.8~0.2

    9.0~0.6

    10~0.1

    9.4~0.1

    9.6~0.1

    9.7~0.6

    9.9~0.2

    续表 3 运动员各项目得分及概率分布表

    运动员

    项目 6 7 8 9 10

  • -31-

    高低杠

    9.4~0.1

    9.6~0.1

    9.7~0.6

    9.9~0.2

    9.5~0.1

    9.7~0.1

    9.8~0.6

    10~0.2

    8.4~0.1

    8.8~0.2

    9.0~0.6

    10~0.1

    8.4~0.15

    9.5~0.5

    9.2~0.25

    9.4~0.1

    9.0~0.1

    9.2~0.1

    9.4~0.6

    9.7~0.2

    平衡木

    8.7~0.1

    8.9~0.2

    9.1~0.6

    9.9~0.1

    8.4~0.1

    8.8~0.2

    9.0~0.6

    10~0.1

    8.8~0.05

    9.2~`0.05

    9.8~0.5

    10~0.4

    8.4~0.1

    8.8~0.1

    9.2~0.6

    9.8~0.2

    8.1~0.1

    9.1~0.5

    9.3~0.3

    9.5~0.1

    跳马

    8.5~0.1

    8.7~0.1

    8.9~0.5

    9.1~0.3

    8.3~0.1

    8.7~0.1

    8.9~0.6

    9.3~0.2

    8.7~0.1

    8.9~0.2

    9.1~0.6

    9.9~0.1

    8.4~0.1

    8.8~0.2

    9.0~0.6

    10~0.1

    8.2~0.1

    9.2~0.5

    9.4~0.3

    9.6~0.1

    自由体操

    8.4~0.15

    9.5~0.5

    9.2~0.25

    9.4~0.1

    8.4~0.1

    8.8~0.1

    9.2~0.6

    9.8~0.2

    8.2~0.1

    9.3~0.5

    9.5~0.3

    9.8~0.1

    9.3~0.1

    9.5~0.1

    9.7~0.5

    9.9~0.3

    9.1~0.1

    9.3~0.1

    9.5~0.6

    9.8~0.2

    现某代表队的教练已经对其所带领的 10 名运动员参加各个项目的成绩进行了大量

    测试,教练发现每个运动员在每个单项上的成绩稳定在 4 个得分上(见表 3) ,她们得

    到这些成绩的相应概率也由统计得出(见表中第二个数据。例如:8.4~0.15 表示取得

    8.4 分的概率为 0.15)。试解答以下问题:

    (1)每个选手的各单项得分按最悲观估算,在此前提下,请为该队排出一个出场

    阵容,使该队团体总分尽可能高;每个选手的各单项得分按均值估算,在此前提下,

    请为该队排出一个出场阵容,使该队团体总分尽可能高。

    (2)若对以往的资料及近期各种信息进行分析得到:本次夺冠的团体总分估计为

    不少于 236.2 分,该队为了夺冠应排出怎样的阵容?以该阵容出战,其夺冠的前景如

    何?得分前景(即期望值)又如何?它有 90%的把握战胜怎样水平的对手?

  • -32-

    第三章 非线性规划 §1 非线性规划

    1.1 非线性规划的实例与定义 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问

    题。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不象线性规划有

    单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一般算法,各个方法都

    有自己特定的适用范围。 下面通过实例归纳出非线性规划数学模型的一般形式,介绍有关非线性规划的基本

    概念。 例 1 (投资决策问题)某企业有n 个项目可供选择投资,并且至少要对其中一个

    项目投资。已知该企业拥有总资金 A元,投资于第 ),,1( nii L= 个项目需花资金 ia 元,并预计可收益 ib 元。试选择最佳投资方案。

    解 设投资决策变量为

    ⎩⎨⎧

    =个项目决定不投资第,

    个项目决定投资第

    ii

    xi 0,1

    , ni ,,1L= ,

    则投资总额为∑=

    n

    iii xa

    1

    ,投资总收益为∑=

    n

    iii xb

    1

    。因为该公司至少要对一个项目投资,并

    且总的投资金额不能超过总资金 A,故有限制条件

    ∑=

    ≤<n

    iii Axa

    1

    0

    另外,由于 ),,1( nixi L= 只取值 0 或 1,所以还有 .,,1,0)1( nixx ii L==−

    最佳投资方案应是投资额最小而总收益最大的方案,所以这个最佳投资决策问题归

    结为总资金以及决策变量(取 0 或 1)的限制条件下,极大化总收益和总投资之比。因

    此,其数学模型为:

    =

    == n

    iii

    n

    iii

    xa

    xbQ

    1

    1max

    s.t. ∑=

    ≤<n

    iii Axa

    1

    0

    .,,1,0)1( nixx ii L==− 上面例题是在一组等式或不等式的约束下,求一个函数的最大值(或最小值)问

    题,其中至少有一个非线性函数,这类问题称之为非线性规划问题。可概括为一般形式

    )(min xf qjxh j ,,1,0)(s.t. L=≤ (NP) pixgi ,,1,0)( L==

  • -33-

    其中T

    nxxx ][ 1 L= 称为模型(NP)的决策变量, f 称为目标函数, ig ),,1( pi L=和 ),,1( qjh j L= 称为约束函数。另外, 0)( =xgi ),,1( pi L= 称为等式约束,

    0)( ≤xh j ),,1( qj L= 称为不等式的约束。 对于一个实际问题,在把它归结成非线性规划问题时,一般要注意如下几点:

    (i)确定供选方案:首先要收集同问题有关的资料和数据,在全面熟悉问题的基

    础上,确认什么是问题的可供选择的方案,并用一组变量来表示它们。

    (ii)提出追求目标:经过资料分析,根据实际需要和可能,提出要追求极小化

    或极大化的目标。并且,运用各种科学和技术原理,把它表示成数学关系式。

    (iii)给出价值标准:在提出要追求的目标之后,要确立所考虑目标的“好”或

    “坏”的价值标准,并用某种数量形式来描述它。

    (iv)寻求限制条件:由于所追求的目标一般都要在一定的条件下取得极小化或

    极大化效果,因此还需要寻找出问题的所有限制条件,这些条件通常用变量之间的一些

    不等式或等式来表示。

    1.2 线性规划与非线性规划的区别 如果线性规划的最优解存在,其最优解只能在其可行域的边界上达到(特别是可行

    域的顶点上达到);而非线性规划的最优解(如果最优解存在)则可能在其可行域的任

    意一点达到。 1.3 非线性规划的 Matlab 解法 Matlab 中非线性规划的数学模型写成以下形式 )(min xf

    ⎪⎪⎩

    ⎪⎪⎨

    =≤=⋅

    0)(0)(

    xCeqxC

    BeqxAeqBAx

    ,

    其中 )(xf 是标量函数, BeqAeqBA ,,, 是相应维数的矩阵和向量, )(),( xCeqxC 是非线性向量函数。

    Matlab 中的命令是

    X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)

    它的返回值是向量 x ,其中 FUN 是用 M 文件定义的函数 )(xf ;X0 是 x 的初始值;A,B,Aeq,Beq 定义了线性约束 BeqXAeqBXA =≤ *,* ,如果没有线性约束,则A=[],B=[],Aeq=[],Beq=[];LB 和 UB 是变量 x 的下界和上界,如果上界和下界没有约束,则 LB=[],UB=[],如果 x 无下界,则 LB 的各分量都为-inf,如果 x 无上界,则 UB的各分量都为 inf;NONLCON 是用 M 文件定义的非线性向量函数 )(),( xCeqxC ;OPTIONS定义了优化参数,可以使用 Matlab 缺省的参数设置。

    例2 求下列非线性规划

    8)(min 232

    22

    1 +++= xxxxf s.t. 0232

    21 ≥+− xxx

    2033221 ≤++ xxx

    02221 =+−− xx

  • -34-

    32 232 =+ xx 0,, 321 ≥xxx

    解 (i)编写 M 文件 fun1.m 定义目标函数 function f=fun1(x); f=sum(x.^2)+8; (ii)编写M文件fun2.m定义非线性约束条件 function [g,h]=fun2(x); g=[-x(1)^2+x(2)-x(3)^2

    x(1)+x(2)^2+x(3)^3-20]; %非线性不等式约束 h=[-x(1)-x(2)^2+2

    x(2)+2*x(3)^2-3]; %非线性等式约束 (iii)编写主程序文件 example2.m 如下:

    options=optimset('largescale','off'); [x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[], ... 'fun2', options)

    就可以求得当 9478.0,2033.1,5522.0 321 === xxx 时,最小值 6511.10=y 。 1.4 求解非线性规划的基本迭代格式 记(NP)的可行域为 K 。 若 Kx ∈* ,并且 Kxxfxf ∈∀≤ ),()( *

    则称*x 是(NP)的整体最优解, )( *xf 是(NP)的整体最优值。如果有

    ** ,),()( xxKxxfxf ≠∈∀< 则称

    *x 是(NP