第四讲 非线性规划和多目标规划模型 数学建模
讲义
NUDT
2023SP
4.1 非线性规划 目标函数或约束条件中至少有一个是决策变量的非线性函数
的规划问题,称为非线性规划 (Nonlinear Programming,缩写 NLP ).
非线性规划问题的一般形式:
例: 非线性规划
例: 非线性规划
非线性规划问题的求解
迭代法 是 NLP 的主要求解方法:从一个初始解出发,在可行域中沿着使得目标函数降低的方向前进到下一个解,不断迭代,优化最优函数的值.
很多时候只能求得局部最优解(极值),而非全局最优解(最值).
常见求解方法:Lagrange 乘子法 、罚函数法 、近似规划法 等.
尽可能建立线性模型,避免使用非线性模型
.
非线性规划转化为线性规划 分析:
对于任意 ,令: .
则 , 且 .
记 , ,于是上述问题可改写为
例: 最小最大问题
分析:
例:飞行管理问题(CUMCM 1995A)
在高空中一个边长为 160 公里的正方形区域内,经常有若干架飞机作水平飞行.
区域内每架飞机的位置和速度均由计算机记录其数据.
当一架欲进入该区域的飞机到达区域边缘时,要立即计算并判断其是否会与区域内的飞机碰撞.
如果会碰撞,则要计算如何调整各架(包括新进入的)飞机飞行的方向角,以避免碰撞.
现假定条件如下:
不碰撞的标准为任意两架飞机的距离大于 8 公里;
每架飞机飞行方向角调整的幅度不应超过 30 度;
所有飞机飞行速度均为 800 公里/小时;
欲进入飞机在到达区域边缘时,与区域内飞机的距离应在 60 公里以上;
最多需考虑 6 架飞机;
不必考虑飞机离开此区域后的状况.
请你建立数学模型,基于给定的数据进行计算(方向角误差不超过 0.01 度),要求飞机飞行方向角调整的幅度尽量小 .
假设:
飞机的方向角调整,只在新到的飞机刚进入时,所有飞机(包括正进入的飞机)调整一次后,就不再调整
,飞机在该区域内沿固定方向匀速飞行;
两架飞机之间的距离采用欧式距离
,即
模型一
飞机在区域内的飞行时间
对第 架飞机,记
初始位置:
飞行方向:
飞行速度:
在指定区域内飞行的总时间:
设区域的边长为 .
任意两架飞机间的距离 在 时刻,
不碰撞约束
模型二
两飞机不相撞的条件为,两架飞机的飞行方向相对角大于其内公切线与圆心连线的夹角
,即:
内公切线与圆心连线的夹角 满足
新的非线性规划模型
相对速度的角度调整量 相对速度
两架飞行方向分别为 和 的飞机的相对速度方向角为 ,
当这两架飞机的各自调整角度 和 时,其相对速度方向角调整量为 .
两架飞机飞行方向的夹角
可以通过初始时刻的位置和飞行方向直接计算得到 .
但上式中计算得到的 一般属于 ,可将其变换到 内,即
模型的比较
进一步考虑到角度的周期性,不碰撞的约束条件可写成: ,
进而模型可转化为
转变为线性规划完成求解 令
即
带入上述模型可以转化为线性规划模型求解.
小结
非线性规划中非线性部分的处理是问题求解最关键的部分也体现创新的源头;
巧妙地设计决策变量或充分挖掘问题中隐藏的约束条件往往会有效果;
充分利用模型特点,制定有针对性的求解方法能有效缓解非线性所带来的困难.
求解工具:Lingo
a comprehensive tool designed to make building and solving Linear
, Nonlinear (convex
& nonconvex/Global
), Quadratic
, Quadratically Constrained
, Second Order Cone
, Semi-Definite
, Stochastic
, and Integer optimization
models faster, easier and more efficient.
语法简单,程序语言与模型贴近,编程效率高
费用高
求解工具:Gurobi
主要支持整数规划和平方规划
性能优异,价格高昂(高校免费)
提供各种语言的接口,包括:C/C++、Java、R、Python、Matlab 等
求解工具:杉树求解器 COPT
国内自主研发的针对大规模优化问题的数学规划求解器套件
适用于大规模混合整数规划、线性规划(单纯形法和内点法)、半定规划、(混合整数)二阶锥规划、(混合整数)凸二次规划、(混合整数)凸二次约束规划问题
支持各种主流编程接口:C++、C#、Python、Julia、Java、AMPL、GAMS、Pyomo、PuLP、CVXPY
学术用户 1 年试用
优化求解器
商用工具
IBM ILOG CPLEX
FICO Xpress
MINOS
CONOPT
SNOPT
KNITRO
MOSEK
BARON
阿里MindOPT
华为天筹AI求解器OPTV
开源工具
SCIP (Solving Constraint Integer Programs)
Coin-OR 开源项目套件 CLP/CBC/CGL/SYMPHONY
lpsolve
glpk (GNU Linear Programming Kit)
CMIP (中国科学院)
LEAVES (上海财经大学)
OR-Tools (Google)
集成工具
MATLAB Optimization Toolbox
Python Scipy
SAS
Excel
4.2 多目标规划问题 多目标规划问题 (Multi-Objective Programming,缩写:MOP )的一般形式:
多目标规划的应用
经济学
消费行为的研究:
受收入能力的限制,消费者购买更多的某一种商品,可能要以牺牲其他商品的消费为代价.
产能边界的研究:
受生产资料的限制,更多地生产一种商品,只能以减少其他商品的生产为代价.
宏观经济政策制定:
货币政策需要平衡一些相互竞争的目标,例如:低通货膨胀、低失业率、低贸易逆差,等等.
金融学
投资组合问题:
一方面投资组合收益的预期越高越好,另一方面希望风险越低越好.
设计制造
能源系统规划:
总是需要在性能和成本之间进行权衡.
产品和工艺设计:
好的设计通常涉及多个标准(目标),如投资、运营成本、利润、产品质量、生产效率、工艺安全、操作时间等.
飞机设计:
综合考虑成本、飞行性能、可靠性、燃油经济性、乘坐舒适性等.
太阳能灌溉系统设计:
综合考虑建造成本、灌溉效率、环境污染、生态效益等.
例:设计一个造纸厂
目标:
产能开发
纸张的质量
环境友好
减少对周边环境的持续影响
约束:
资金投入、人力资源、建造时间
多目标规划问题的求解
处理多目标规划问题的关键在于对多个目标进行权衡处理 ,求解的主要思路是转化为单目标规划问题
.
为此,需要综合考虑多个目标的以下特点或关系:
优先级/重要性 的高低先后
是否存在冲突或矛盾
量纲 是否相同
数量级 是否一致
多目标规划转为单目标规划的方法
评价函数法
功效系数法
约束法
分层序列法
1. 评价函数法
构造一个评价函数 来集中反映不同目标的重要性等因素,并极小化此评价函数.
构造评价函数的常见方法:
线性加权法
理想点法
平方和加权法
min-max 法(极小极大法)
乘除法
评价函数法——线性加权法
按目标函数 的重要程度
给出一组权重 ,满足:
评价函数:
求解单目标规划问题:
权重的计算:层次分析法
层次分析法(Analytic Hierarchy Process, AHP )对同一层次上的要素,依据其相对重要性,建立比较矩阵
,求出该矩阵的最大特征值对应的特征向量,以该特征向量的分量作为每个要素的权重.
相对重要性的评估往往依赖于专家的经验或主观判断,总体上是主观判断的体现
.
评 价 尺 度 定 义 同 等 重 要 稍 微 重 要 颇 为 重 要 极 为 重 要 绝 对 重 要 相 邻 尺 度 之 中 间 值 说 明 两 要 素 的 贡 献 程 度 具 同 等 重 要 性 经 验 与 判 断 稍 微 偏 好 某 一 要 素 经 验 与 判 断 强 烈 偏 好 某 一 要 素 实 际 显 示 强 烈 偏 好 某 一 要 素 有 足 够 证 据 肯 定 绝 对 偏 好 某 一 要 素 介 于 两 种 判 断 之 间
权重的计算:熵权法
熵是系统无序程度的一个度量.
对于某项指标(要素),可以用熵值来判断某个指标的离散程度.
信息熵值越小,指标的离散程度越大,该指标对综合评价的影响(即权重)就越大.
如果某项指标的值全部相等,则该指标在综合评价中不起作用.
具体来说,利用熵权法确定权重的大致过程如下:
给定样本 ,记 为 的第 个指标(要素)的值.
对数据进行标准化
经验分布
每个指标的信息熵
各个指标的权重
评价函数法——理想点法
令 .
评价函数:
求解单目标规划问题:
原理:距理想点最近的点作为最优解!
评价函数法——平方和加权法
设定单目标规划的下界(想象中的最好值):
定义评价函数:
其中 为事先给定的一组权系数,满足:
求解单目标规划问题:
评价函数法——min-max 法(极小极大法)
悲观主义决策: 在最不利的情况下找出一个最有利的策略!
评价函数:
非线性规划问题:
该问题可以转化为线性规划问题来求解.
评价函数法——乘除法
目标的规划问题: 且
评价函数:
非线性规划问题:
如 为投资金额,而 为投资后的总收益,则最优结果应是单位投资的总收入最大!(性价比
最高)
2. 功效系数法
对不同类型的目标函数统一量纲,分别得到一个功效函数,然后求所有功效系数乘积或和的最优解.
例如,线性型功效系数法 :
还有其他类型的方法,如指数型功效系数法.
3. 约束法
在多个目标中选定一个主要目标
,而对其他目标设定一个期望值
,在要求结果不比此期望值坏的条件下(相当于增加了新的约束条件),求主要目标的最优值.
例: 对优化问题 ,选定 为主要目标,则可将其转化为类似如下的形式:
4. 分层序列法
将优化问题 转化为如下的序列
本质上是把多个目标按其重要程序排序,逐个求解.
缺点:当前面的问题最优解唯一时,后面的求解将失去意义!
改进:宽容分层序列法:给前面的最优值设定一定的宽容值 ,即此目标值再差~ 也是可以接受的.
MCM2021A:FAST主动反射面的形状调节
约束规模与求解策略
该模型的的等式和不等式约束共有 2661 个
反射面板边长应满足变化幅度不超过 0.07%: 共包括 1973 个约束(不等式约束)
下拉索长度保持不变约束: 共有 688 个约束(等式约束)
促动器伸缩量约束: 共有 688 × 2 = 1376 个
模型是一个目标函数和约束条件均为二次函数的非线性规划模型,采用序列二次规划算法 求解,将该问题转化为多个二次规划问题求解
特别的,分析发现,促动器的伸缩量与目标函数无关,当主索节点确定后,实际上促动器的顶端位置也确定了,计算时采取先确定主索节点,在检验促动器是否满足要求方式简化计算.
4.3 综合案例:投资的收益与风险-CUMCM 98A
市场上有 种资产(如股票、债券等) 供投资者选择.
某公司有数额为 的一笔相当大的资金可用作一个时期内的投资.
公司财务分析人员对这 种资产进行了评估,估算出在这一时期内购买 的平均收益率
为 ,并预测出购买 的风险损失率
为 .
考虑到投资越分散,总的风险越小,公司确定:当用这笔资金购买若干种资产时,总体风险可用所投资的 中最大的风险来度量.
设购买 所付交易费费率
为 ,并且当购买额不超过给定值 时,交易费按购买 计算.
另外假定同期银行存款利率
为 ,且既无交易费又无风险.
请设计一种投资组合方案 (用给定的资金购买若干种资产或存银行生息),使得净收益尽可能大,而总体风险尽可能小.
当 时,财务分析人员已经分析得到了一些数据,如下表所示:
模型建立与求解
设购买 的投资比例为 ,所需的交易费为 ,
则
当然,若存银行的资金比例为 ,则 ,即银行没有手续费.
投资净收益目标 可表达为 .
由题意可知,投资风险为
相应的约束为投资所用总额不能超过总资金 :
则该问题对应的优化模型:
由于最低投资额 较小,假设投资额度总会大于 ,
则第一个约束条件可变为
相应的目标函数可表达为
1. 线性权和法 新的目标函数为 ,结果如下表所示
2.约束法 1)固定风险水平,优化收益
: , ,结果如下:
2)固定收益,最小化风险
,即 ,
结果如下:
3. 分层序列法 根据不同的目标优先原则,可考虑采用四种方案,相应的结果分别为:
方 案 不 考 虑 利 润 , 最 小 风 险 为 最 小 风 险 控 制 在 , 最 大 利 润 不 考 虑 风 险 , 最 大 利 润 最 大 利 润 控 制 在 , 最 小 风 险
课后思考题 ( ) 洗衣机洗衣过程通常由加水、洗涤、脱水等若干个环节构成,试为洗衣机设计一种程序,如,共需多少轮、每轮加多少水等,使得既能保证洗涤效果,又节约用水?