前言
Matlab 中有很多工具箱是可以通过简单操作实现很多很强大的功能的,熟练使用Matlab的工具箱可以极大地便利我们日常的学习生活,在数学建模比赛中更是可以节约敲代码、debug的时间,在前期也能降低学习成本。本篇文章将重点介绍OptimizationToolbox工具箱的功能,以及通过实例教大家如何快速上手这个工具箱。本文基于的是Matlab的官方文档,使用的Matlab版本为R2021a。本文不涉及任何数学原理或公式推导,这里不教如何制冷,只教如何使用冰箱! 未下载好工具箱的同学可以通过点击任意门中的工具箱下载学习如何下载。
Optimization Toolbox工具箱功能介绍
- 本工具箱提供寻找满足让目标函数在限制条件下最大或最小时的参数。该工具箱可以解决以下问题,线性规划(linear programming/LP)、混合整数线性规划(mixed-integer linear programming /MILP)、二次规划( quadratic programming/QP)、二阶锥规划(second-order cone programming/SOCP)、nonlinear programming /非线性规划(NLP)、约束线性最小二乘/constrained linear least squares、非线性最小二乘/nonlinear least squares和非线性方程/nonlinear equations,注意:本工具箱的求解器中包含遗传算法,因此也可以很轻松地实现遗传算法(翻译可能有错,以英文为准).
- 可以用函数和矩阵或指定反映基础数学的变量表达式来定义优化问题,通过选择目标和约束函数的类型可以自动列出一些更快和更准确的解决方案。
- 工具箱求解器可以解决连续和离散问题,执行权衡分析,并将优化方法合并到算法和应用程序中。该工具箱允许自行执行设计优化任务,包括参数估计、组件选择和参数调优,在投资组合优化、能源管理和贸易以及生产计划等应用中找到最佳的解决方案。
界面介绍
如何打开工具箱
- 命令行输入
optimtool  回车键确认后会弹出一个提示框(如下)  点击中间的按钮即可。
工具箱界面详细介绍
  
简单实例(快速上手)
明确优化的目标函数以及约束条件
接下来我将以下面这个例子来简单介绍如何使用这个工具箱 寻找最优解使得F = 100*(y-x^2 )^2 -(1-x)^2 取最小值 约束条件为 x^2+ y^2 ≤2 -2 ≤ x,y ≤ 2
输入参数
将初始点为x0(0,0)以及R = 2(将使用的参数)保存到工作区
- 在红色框输入后同时按下
CTRL 和ENTER 即可保存到工作区,保存成功时右侧工作区可以见到这两个参数(蓝色框)这里我选择使用一个矩阵来代替x,y.
选择求解器(优化器)
- 根据自己的实际情况选择即可,选择完目标函数和约束条件后,工具箱会自动选择一个求解器(优化器).

编写目标函数以及约束函数
- 注意: 函数的返回值不能更改,只更改形参以及内容即可.
- 注意约束函数中的不等式的书写方式

确定目标和约束函数的参数
- 在
Objective function 中选择Local function 并选择你编写好的目标函数如果有多个点击new 即可 - 选择参数初值
Intial point - 选择约束函数方法和第一点一样
- 选择函数输入
- 选择需要画图展示的内容(工具箱执行优化后展示的内容),这里展示的是目标函数在每次迭代中的值
 
执行优化
在以上最好后选中Optimize Live Editor Task 部分,然后同时按下CTRL 和ENTER 即可,或在空白处点击鼠标右键选择Run Section 即可 
- 点击后工具箱开始优化,并将结果展示出来(展示的为你前面选择需要展示的图)

查看结果
除了在自动画出的图中查看结果也可以通过运行Results 部分查看结果
- 选中这个部分后同时按下
CTRL 和ENTER 即可. 
工具箱下载
-
首先点击工具栏中的Apps ,然后点击Gets More Apps ,等待弹出的窗口。  -
在搜索框中输入 Optimization Toolbox  -
在搜索结果中点击蓝字进入详情页(这两个工具箱都下载)  -
进入详情页后点击Add ,然后选择Add to matlab ,按提示安装即可。(由于我已经安装了,所以这没有显示Add 按钮) 
总结
Matlat的工具箱有着强大的能力,而或许会有部分同学在看到全是英文的就放弃研究了,而学习这种最佳的方式应该是看官方文档,而官方文档也是全英的,所以希望通过这篇文章能够帮助有需要的同学简单了解如何使用这个工具箱,同时可以借助这篇文章研究下官方文档,本文并没有介绍完全工具箱所有的功能(功能太多)!还想学习什么工具箱可以评论下噢!都看到这了,要个赞不过分吧
|