最优化赛题是数学建模大赛中最常见的问题类型之一。一般说来,凡是寻求最大、最小、最远、最近、最经济、最丰富、最高效、最耗时的目标,都可以划入优化问题的范畴。MATLAB 优化工具箱和全局优化工具箱对多个优化问题提供了完整的解决方案,前者涵盖了线性规划、混合整型线性规划、二次规划、非线性优化、非线性最小二乘的求解器,后者囊括了全局搜索、多初始点、模式搜索、遗传算法等求解算法。

本讲主要介绍如何使用优化工具箱求解数学建模中标准的优化模型。更多的内容,欢迎大家浏览 MathWorks 官网以及 MATLAB 软件文档。

1. 聊一聊最优化问题

最优化即在一定的条件下,寻求使目标最小(大)的设计参数或决策。在优化问题中有两个关键对象:目标函数和约束条件(可选)。常规优化问题,其数学表达可以描述为:

其中x 为长度n的决策变量向量,f(x) 为目标函数,G(x) 为约束函数。

求解目标函数的最小(大)值,一个高效而精确的解决方案不仅取决于约束条件和变量数量,更取决于目标函数和约束函数的特性。明确优化类型是确认优化方案的前提,让我们看一下这些特性如何划分:

常见的目标函数有:

线性规划:被广泛的应用于变量之间可线性表示的财务、能源、运营研究等现代管理领域中。

混合整数线性规划:扩展了线性规划问题,增加了最优解中部分或全部变量必须是整数的约束。例如,如果一个变量代表要认购的股票数量,则只应取整数值。同样,如果一个变量代表发电机的开/关状态,则只应取二进制值(0 或 1)。

二次规划:目标函数或约束函数为多元二次函数。此优化应用于财务金融中投资组合优化、发电厂发电优化、工程中设计优化等领域。

最小二乘:分为线性和非线性,通过最小化误差的平方和寻找变量的最优函数匹配。非线性最小二乘优化还可用于曲线拟合。

2. 优化求解器太多了,怎么选?

对 MATLAB 提供的各类优化问题的算法,我们称之为求解器(Solver)。根据其求解目标,被分为四大组:

  • 极小值优化组:找到目标函数出发点 x0 附近的局部极小值

  • 多目标优化组:找到最小化一组函数的最大值或指定的值

  • 方程求解组:找到非线性方程 f(x) = 0 出发点 x0 附近的解

  • 最小二乘法(曲线拟合)组:最小化平方和

仅优化工具箱就提供了近 20 种求解器,面对如此繁多的选项,用户往往一头雾水。幸好,MATLAB 提供了简单明了的参考工具 —— 优化决策表。可谓一表在手,优化不愁:

上表中*表示算法由全局工具箱提供。此外,多目标优化与方程组求解器并未被此表列举,更多求解器的选择方案,可以点击阅读原文查看。

3. 写出漂亮、高效的代码

确认优化策略后,就可以开工写代码了。下面让我们通过一个例子,了解编写高效优化算法代码的步骤和注意事项。

[题目]

- 目标函数

-  约束函数(所有变量为正)

[解答]

a. 首先,根据题目确认这是一个线性规划问题。而线性规划的通用数学表达式和MATLAB标准形式为:

创建符合标准格式的A、b、Aeq、beq、lb、ub参数,才可以顺利的运行优化算法。

b. 对于线性规划的优化求解步骤(也适用于其他优化方案),建议如下:

1 ) 选择优化求解器

2 ) 将所有变量合并为一个向量

3 ) 创建边界约束(lb,ub)

4 ) 创建线性不等式约束(A,b)

5 ) 创建线性等式约束(Aeq,beq)

6 ) 创建目标函数

7 ) 优化问题求解

8 ) 结果检验

c. MATLAB 代码和注释:

d. 优化结果:

e. 如果结果不满意,可以调整优化选项,迭代计算。

4. 整数规划求解神器

在优化问题中, 经常会遇到整数规划问题, 尤其是0-1规划问题, MATLAB 对于整数规划问题,有个专门的求解器 intlinprog。 该函数不仅可以求解一般的整数规划问题,还可以求解混合整数规划问题,也就是决策变量既可以是整数也可以是小数,只要指定是整数的决策变量的编号就是可以。 通过一个具体的例子, 来看看这个函数的使用。

求解的问题是:

求解的代码是:

运行代码, 可很快得到最优解 x = [1 0 1]。

5. 受欢迎的图形化应用

MATLAB 在数据分析领域如此受欢迎,除了其提供丰富的内置算法集,还有各类友好的应用界面。在优化工具箱中,也有这么一个强大的工具—— Optimization App,可以在 MATLAB Apps 窗口或者运行 optmitool 命令打开。它是一个交互式的图形化应用工具,无需手写代码,直接在图形界面中设置各类求解器、配置目标函数、约束条件,即可运行优化算法并使中间结果和最终结果可视化。

在 Optimization App 中,只需点击菜单栏中的 File > Generate Code,即可将 App 中的各项设置自动生成 MATLAB 代码,用户可实现算法的复用和二次开发。

此外,面对越来越复杂的优化问题,如何加快算法的运行也是我们经常听到的问题。针对这个需求,可以结合 MATLAB 并行计算工具箱,利用电脑的多核硬件资源,实现算法加速,有兴趣的用户可以点击阅读原文观看视频做更多的了解。

【数学建模】五:MATLAB优化模型求解方法(1):标准模型相关推荐

  1. 数学建模专栏 | 第五篇:MATLAB优化模型求解方法(上):标准模型

    最优化赛题是数学建模大赛中最常见的问题类型之一.一般说来,凡是寻求最大.最小.最远.最近.最经济.最丰富.最高效.最耗时的目标,都可以划入优化问题的范畴.MATLAB 优化工具箱和全局优化工具箱对多个 ...

  2. 【数学建模】14 微分方程模型求解方法

    目录 1 MATLAB数值微积分 2 微分方程数值解 3 MATLAB求解常微分方程 4 课后习题 1 MATLAB数值微积分 (1)差分与微分 • taylor 符号泰勒展开 • polyder 多 ...

  3. 数学建模专栏 | 第七篇:MATLAB连续模型求解方法

    连续模型是指模型是连续函数的一类模型总称,具体建模方法主要是微分方程建模.微分方程建模是数学建模的重要方法,因为许多实际问题的数学描述将导致求解微分方程的定解问题.把形形色色的实际问题化成微分方程的定 ...

  4. 数学建模算法之优化模型【线性规划问题、非线性规划问题、整数规划问题、二次规划问题】

    1. 线性规划问题(LP) 线性规划问题是要最小化或最大化一个受限于一组有限的线性约束的线性函数. Matlab 中规定线性规划的标准形式为 第一个式子为目标函数,s.t. 式是约束条件.其中 c 和 ...

  5. 数学建模matlab 优化模型,数学建模实验中三种优化模型的分析

    1. 引言 在20世纪中期,数学建模 [1] 就在欧美国度首次被发现,而在中国的呈现稍晚些,但是大约在80年代初始咱们国家也就有了.它的核心即是创立数学模型 [2] ,使得问题获得最优化的解决.而数学 ...

  6. u=q k 的交通流模型图 matlab,数学建模回归分析matlab版.ppt

    <数学建模回归分析matlab版.ppt>由会员分享,可在线阅读,更多相关<数学建模回归分析matlab版.ppt(51页珍藏版)>请在装配图网上搜索. 1.2020/11/2 ...

  7. dna序列分类数学建模matlab,数学建模DNA序列分类模型(终稿).doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp生物学 数学建模DNA序列分类模型(终稿).doc32页 本文 ...

  8. 数学建模:现代优化算法之遗传算法

    数学建模:现代优化算法之遗传算法 开始了开始了!!! 数学建模 数学建模:现代优化算法之遗传算法 前言 一.Genetic Algorithms(GA算法) 1.模型及算法 2.模型计算法 (1)编码 ...

  9. 卓金武——从数学建模到MATLAB

    卓金武--从数学建模到MATLAB 2013-9-4 09:48| 发布者: ilovematlab| 查看: 9647| 评论: 40 摘要: 人物简介--卓金武(Steven),MathWorks ...

  10. 数学建模学习记录——数学规划模型

    数学建模学习记录--数学规划模型 一.线性规划问题 MatLab中线性规划的标准型 MatLab中求解线性规划的命令 二.整数线性规划问题 三.非线性规划问题 MatLab中非线性规划的标准型 Mat ...

最新文章

  1. response的contentType 常见几种类型
  2. Docker 简介与安装
  3. 关于OUTLOOK 2007邮件无法打印的问题解决方法
  4. 高配人生背后:25岁前最该看透的事儿
  5. Winform中使用FastReport实现简单的自定义PDF导出
  6. oracle索引中丢失in或out参数,oracle 11g给表建触发器错误“索引中丢失 IN 或 OUT 参数:: 1...
  7. 全球19家值得关注的物联网安全初创企业
  8. Shell入门(十)之echo
  9. 类似flashget的浮动窗口的实现
  10. Tensroflow练习,包括强化学习、推荐系统、nlp等
  11. iOS 让UIButton根据文字内容自动计算宽高
  12. javascript中常用的对象创建方式有哪些?
  13. NASA-TLX (Task Load Index)量表学习总结
  14. 丹纳赫:全球实业型赋能投资标杆
  15. python期末考试及答案单引号、双引号和三引号_python脚本中单引号’ 双引号“ 三个单引号‘’‘ 三个双引号”“” 差别 及反斜杠的用法...
  16. 5G无线网络优化覆盖
  17. 【转载】数据中心网络架构浅谈
  18. android 微信分享 源码,记录Android微信分享功能的吐槽与思考
  19. php中的isset函数
  20. Flutter配置镜像

热门文章

  1. matlab教程分析,MATLAB数据分析教程
  2. 工业上的数控机床所属计算机应用的什么领域,工业上的数控机床所属的计算机应用领域是______。...
  3. C++之log4cpp库
  4. 后勤管理系统-在线报修系统
  5. ArcPad 10 的安装部署
  6. Firefox必备的24款web开发插件
  7. 330UF16V 10*7.7片式铝电解电容封装
  8. 高速公路坐标高程计算软件3.5发布
  9. 极品抓鸡教程36课笔记
  10. Windows Builder 使用总结