一、优化问题分类、形式、库函数
优化问题的问题描述中,往往会有“最”,时间最短、效率最高等等。
分类:
1、线性规划
2、二次规划(即多个变量的二次函数在这些变量上受线性约束的优化(最小化或最大化)问题)
3、非线性规划
4、组合最优化(TSP、作业调度问题、背包问题)
5、动态规划(离散的时间)
6、图论中的优化问题(与组合优化关系密切)
7、最小二乘问题(线性、非线性)(确定参数、函数形式,一般描述为误差最小,可以看做非线性规划问题)
8、变分问题
9、多目标规划(变成单目标后再使用软件处理)
形式:
常用工具:
Matlab的优化工具箱optim(只能求最小化)
flag=1:有有限最优解
flag为负数:不可行/无界(建模有问题)
flag=0:算不出来(算不出来并不意味着无解,可以在输入参数中再加入一个猜测解,或者使用近似算法求解)
二、离散优化模型的例子
关键是找到决策变量
1、下料问题:一维、二维、三维(货车装箱)
2、排班问题:
3、车辆路径问题:
三、优化问题的基本思想、方法
并非所有的优化模型,都可以使用Matlab的库函数解出来。下面介绍一些其他求解算法的设计思想:
1、模拟–蒙特卡洛
问题中出现不确定性、与概率相关的现象时,往往可以用模拟的方法解决。有时会套上最优化的背景,也就是这里说的用蒙特卡洛求解最优化问题。
例:
买彩票的人数多少会影响获奖人数及获奖比例等。
2、数据插值、拟合、参数估计(给出问题的近似解)
例:
本质上是一个变分问题。山区地形图其实是一个连续的函数(z=f(x,y)),在已知头尾两点及中间某点的情况下,要求构建一条曲线。
3、图论
例:
4、分支定界、分治算法
例:
变量选择:在A7-A8之间选一点T,则A7-A8之间的钢管有两种铺设方式——A7-T铺设,A8-T铺设(暂不考虑A7,A8两点的钢管来自哪个厂家)
5、网格化算法、穷举法
网格化算法,也即连续变量离散化。
例:
在该问题中,连续变量与离散变量混杂,建模并不方便。因此,可以考虑将连续变量离散化。
(该题也可以用分支定界的方法做)
6、智能算法(算法要有一定的针对性,不要随随便便就用智能算法)
四、遗传算法介绍
遗传算法在最优化问题中,适用性非常广泛,但是针对性却不好。
适应度函数:对于最优化问题来说,如果是求目标函数的最大值,则可以定义函数值越大适应度越大。
例1:
例2:
(感觉右下角这个映射关系好像不是很对)
这种方式,一定程度上保留了一些比较好的部分组合。
变异时可以某两个对调,或者把8265变成5628这样。
Matlab的遗传工具箱:
这篇的内容实在是有点杂,就是仅起一个提醒和提纲的作用,具体内容还是要仔细去学呀~