联系电话13327011431
MATLAB在最优化模型求解中的应用
石磊
(呼伦贝尔学院,呼伦贝尔021008)
摘要 最优化模型是较常见的数学模型,本文介绍了MATLAB软件在求解最优化模型方面的几点应用,给出了几种解决优化模型的函数格式和范例 关键词 最优化模型;MATLAB;命令 1 前言
优化问题,一般是指用“最好”的方式,使用或分配有限的资源,即劳动力、原材料、机器、资金等,使得费用最小或者利润最大。最优化模型就是根据优化问题的具体情况建立的数学模型。求解此类模型,一方面需要具有较好的数学知识和较强的计算机编程能力,另一方面,也可以利用成熟的算法求解。本文将介绍MATLAB在最优化模型求解中的几个应用。
2 利用MATLAB的优化工具箱求解最优化模型
MATLAB是Mathworks公司推出的一套功能强大的工程计算及数值分析软件, 目前它已经成为世界上应用最广泛的工程计算软件之一。其优化工具箱的应用包括: 线性、非线性最小化、方程求解、曲线拟合、二次规划等中大型课题的求解方法, 为优化方法在工程中的实际应用提供了更方便、快捷的途径。 2.1求解线性规划模型
利用MATLAB软件求解线性模型:
minz?cX
AX?b??s.t.?Aeq?X?beq ?vlb?X?vub?可使用的命令是linprog,其常用调用格式如下:
[x,fval]?linprog(c,A,b,Aeq,beg,vlb,vub)
其中x为最优解,fval为最优值 例1
minz?x1?2x2?x3?3x4
??2x2?x3?x4?3??x?6x?x?4?234s.t.? ?x1?x2?3x3?x4?6??xi?0,(i?1,2,3,4)编写M文件如下:
c=[1;-2;1;-3;];A=[1 1 3 1;0 -2 1 1;0 -1 6 -1];b=[6;3;4]; Aeq=[];beq=[]; %参数缺省
vlb=[0;0;0;0];vub=[inf;inf;inf;inf]; %变量变化范围
[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) %调用linprog函数求解 结果:最优解x??0,1,0,5?,最优值fval??17
T石磊,理学学士,助教,研究方向:应用数学
2.2求解无约束优化模型
利用MATLAB软件中求解一元函数无约束优化问题:
minf?x? x1?x?x2
使用的命令是fminbnd,其常用调用格式如下:
x?fminbnd?fun,x1,x2?
例2求f?2e?xsinx在0?x?8中的最小值与最大值。 建立M文件如下: f='2*exp(-x).*sin(x)';
fplot(f,[0,8]); %作图语句
[xmin,ymin]=fminbnd (f, 0,8) %求x,y的最小值 f1='-2*exp(-x).*sin(x)';
[xmax,ymax]=fminbnd (f1, 0,8) %求x,y的最大值
结果:
xmin =3.9270 ymin =-0.0279 xmax =0.7854 ymax =-0.6448
如果求解多元函数的无约束优化问题,形如
minF?X?
的多元函数,可以使用fminunc函数,命令格式为:
x?fminunc?fun,X0?
例3 求minf?x??4x1?2x2?4x1x2?2x2?1e1
22x??编写函数:
function f = fun1 (x)
f = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); 编写M文件如下: x0 = [-1, 1];
x=fminunc(‘fun1’,x0); y=fun1(x)
结果: x= 0.5000 -1.0000 y = 1.3029e-10 2.3求解非线性规划模型
利用MATLAB软件求解非线性模型:
minF?X?
AX?b??Aeq*X?beq?? s.t.?G?X??0?Ceq?X??0???VLB?X?VUB
其中X为n维变元向量,G?X?与Ceq?X?均为非线性函数组成的函数。用Matlab求解上述问题,基本步骤分三步:
1.首先建立M文件fun.m,定义目标函数F?X? function f=fun(X); f=F(X);
2.若约束条件中有非线性约束:G?X??0或Ceq?X??0,则建立M文件nonlcon.m定义函数
G?X?与Ceq?X?:
function [G,Ceq]=nonlcon(X) G=... Ceq=...
3.建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下: x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB) 例4
minf??x1?2x2?1212x1?x222
?2x1?3x2?6?s.t.?x1?4x2?5 ?x,x?0?12先建立M-文件
function f=fun3(x);
f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2 再建立主程序
x0=[1;1];
A=[2 3 ;1 4]; b=[6;5]; Aeq=[];beq=[]; VLB=[0;0]; VUB=[];
[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB) 运算结果为:
x = 0.7647 1.0588 fval = -2.0294 3 总结
本文介绍的函数命令只是MATLAB优化工具箱中众多命令中较常用的,这些命令都有多种调用格式,本文也只是给出了最常用的格式。优化函数在求解的时候,根据问题不同会采用不同的算法策略,关于MATLAB优化工具箱本文未尽之处,可以参见文献学习。
参考文献
[1] 赵静,但琦编著.数学建模与数学实验[M].北京:高等教育出版社,2008
[2]刘卫国编著.MATLAB程序设计与应用(第二版)[M].北京:高等教育出版社,2006 [3]徐全智,杨晋浩编著.数学建模(第二版)[M].北京:高等教育出版社,2009
联系方式
电话13327011431 邮箱地址:sl200111030@126.com 地址 内蒙古呼伦贝尔市海拉尔区呼伦贝尔学院数学学院 邮编021008