资源描述:
《管理运筹学实验(2008)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、蒈虿袅膂莄螈羇莇芀螇聿膀蕿螆蝿莆薅螆羁艿蒁螅肄蒄莇螄膆芇蚆螃袆肀薂螂羈芅蒈袁肀肈莄袀螀芃艿袀袂肆蚈衿肅莂薄袈膇膅蒀袇袇莀莆袆罿膃蚅袅肁莈薁羄膃膁蒇羄袃莇莃薀羅腿荿蕿膈蒅蚇薈袇芈薃薈羀蒃葿薇肂芆莅薆膄聿蚄蚅袄芄薀蚄羆肇蒆蚃腿芃蒂蚂袈肅莈蚂羁莁蚆蚁肃膄薂蚀膅荿蒈虿袅膂莄螈羇莇芀螇聿膀蕿螆蝿莆薅螆羁艿蒁螅肄蒄莇螄膆芇蚆螃袆肀薂螂羈芅蒈袁肀肈莄袀螀芃艿袀袂肆蚈衿肅莂薄袈膇膅蒀袇袇莀莆袆罿膃蚅袅肁莈薁羄膃膁蒇羄袃莇莃薀羅腿荿蕿膈蒅蚇薈袇芈薃薈羀蒃葿薇肂芆莅薆膄聿蚄蚅袄芄薀蚄羆肇蒆蚃腿芃蒂蚂袈肅莈蚂羁莁蚆蚁肃膄薂蚀膅荿蒈虿袅膂莄螈羇莇芀螇聿膀蕿螆蝿莆薅螆羁艿蒁螅肄蒄莇螄膆芇
2、蚆螃袆肀薂螂羈芅蒈袁肀肈莄袀螀芃艿袀袂肆蚈衿肅莂薄袈膇膅蒀袇袇莀莆袆罿膃蚅袅肁莈薁羄膃膁蒇羄袃莇莃薀羅腿荿蕿膈蒅蚇薈袇芈薃薈羀蒃葿薇肂芆莅薆膄聿蚄蚅袄芄薀蚄羆肇蒆蚃腿芃蒂蚂袈肅莈蚂羁莁蚆蚁肃膄薂蚀膅荿蒈虿袅膂莄螈羇莇芀螇聿膀蕿螆蝿莆薅螆羁艿蒁螅肄蒄莇螄膆芇蚆螃袆肀薂螂羈管理运筹学实验(2008)一、实验目的1.了解、使用MATLAB中的优化命令求解线性规划、非线性规划、二次规划等问题;2.编制程序“一维搜索中的Fibonacci算法”.二、实验原理1.实际问题的最优化问题,在数学上表现为求极值问题;2.极值问题总体上可分为两大类:一类为线性规划(目标函数和约束都
3、为线性的)另一类为非线性规划(目标与约束之一为非线性的);3.解决极值问题的数学方法有:一维搜索中的Fibonacci法、黄金分割法;多元极值中的最速下降法、牛顿法、广义牛顿法、外点法和内点法等.这些方法有的是直接利用函数,有些利用函数的一阶导数,或二阶导数等.三、Matlab优化命令举例Matlab中提供了许多优化命令,这些命令都是根据数学上的基本算法,经过改进而编制的.使用方便,是人们解决问题的好帮手.1.线性优化(一元、多元函数)完整格式:[x,fval]=linprog(f,a,b,aeq,beq,lb,ub,x0)简单格式:[x,fval]=linpr
4、og(f,a,b)用于解以下线性规划问题,以下各命令格式中的意义相同,有些省略.例1求解线性规划,。解命令程序如下f=[-5;-4;-6];a=[1,-1,1;3,2,4;3,2,0];b=[20;42;30];lb=zeros(3,1);第4页共4页[x,fval]=linprog(f,a,b,[],[],lb)%注:上述命令基本上可用于目标规划的求解.例如f=[0003002002001000]';%价值系数a=[21000000];%不等式约束b=[11]';%不等式资源限制ae=[1-11-10000;12001-100;81000001-1];%等式约
5、束be=[01056]';%等式资源限制lb=zeros(8,1);%变量下限x=linprog(f,a,b,ae,be,lb)%未取初值2.非线性优化(1)一元非线性极小值(有界区间上的函数最小值)只有区间约束,结果为极小值格式:[x,fval]=fminbnd(fun,x1,x2)例2求函数在上的最小值.解法一*用在线定义函数的方法求解,即fun=inline('(x^3+cos(x)+x*log(x))/exp(x)');[x,fval]=fminbnd(fun,0,1);解法二目标函数(可带参数)做成一个m程序myfun.mfunctiony=myfun
6、(x,a)y=(x^3+cos(x)+a*x*log(x))/exp(x);然后用a=1.2;[x,fval]=fminbnd(@(x)myfun(x,a),0,1)(2)多元函数极小值(i)无约束第4页共4页格式1:[x,fval]=fminsearch(fun,x0)(较适合非线性次数<=2)格式2:[x,fval]=fminunc(fun,x0)(较适合非线性次数>2)例3求的最小值.x0=[0,0]T解法一用在线定义函数的方法,命令如下fun=inline('2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2');[x,
7、fval]=fminsearch(fun,[0;1])%无约束的初值自由度较大也可[x,fval]=fminunc(fun,[0;1])或[x,fval]=fminsearch(@(x)(x(1)-2)^2+(x(2)+1)^2,[0;1]);[x,fval]=fminsearch(@(x)(x(1)-2)^2+(x(2)+1)^2,[0;1]);解法二函数文件(可带参数)myfun.mfunctiony=myfun(x)y=2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2;然后发命令[x,fval]=fminsearch(@
8、(x)myfun(x),