最优化问题的Matlab优化工具箱求解总结

第一次发文,个人总结,可以一起讨论,如有问题,感谢指出。

1.常规算法

MATLAB

目标函数

约束条件

决策变量

非线性

多目标

上下界

线性

非线性

整数

无初始值

linprog

intlinprog

fmincon

patternsearch

fgoalattain

fminsearch

fminunc

fminimax

最大值

quadprog

二次

fseminf

含参

缺点

改进

依赖初始值

枚举法或蒙特卡罗法得到初始值,或改用启发式算法

难以解决复杂整数规划

patternsearch取整,或改用启发式算法

多目标规划需要权重和目标值

改用启发式算法

 取整方式为:先将线性等式约束、不等式约束都放入非线性约束中;再在非线性约束函数和目标函数中对决策变量取整后计算;最后得到的最优解也进行取整。即将目标函数变为阶梯型函数,只可用于patternsearch。


2. 启发式算法

MATLAB

目标函数

约束条件

决策变量

非线性

多目标

上下界

线性

非线性

整数

无初始值

ga

二选一

gamultiobj

帕累托解集

二选一

simulannealbnd

罚函数

取整

particleswarm

罚函数

取整

类型

处理

复杂约束

罚函数法(若约束过强找不到合适解,可以放缩)

整数约束

在自定义的约束函数和目标函数中对决策变量取整后,对求得的最优解取整

多目标

改进算法

 罚函数法中,等式约束往往太强,可以将等式约束f(x)=0转化为f(x)\leq 0f(x)\geq 0,再放缩统一为f(x)\leq \epsilon-f(x)\leq \epsilon

遗传算法中非线性约束和整数约束只能选一个,罚函数配合整数约束的求解速度快于取整配合非线性约束。

改进算法,例如,简单处理中,模拟退火算法中可以将接受新解的准则改为:若新解的每个目标函数值都优于原解的对应目标函数值,则接受;否则,若要求每个目标函数计算的接受概率判断的结果都为接受,则接受;否则不接受。最优解的更新要求最优解的每个目标函数值都优于原最优解的。同理,粒子群算法的种群或个体的最优解更新都要求新最优解的每个目标函数值都优于原最优解的。另也可以结合NSII。

matlab优化工具箱的求解效率高,可以查找帮助文档和源代码进行复现,以便应对其他不能直接使用的情况。

 

你可能感兴趣的:(最优化,数学建模,matlab,数学建模)