用 Matlab求解非线性规划 1.无约束优化问题 minf(x),其中向量x的n个分量x都是决策变量,称f(x)目标函数 用 Matlab求解:先建立函数文件 mbhs. m,内容是f(x)的表达式;再回到 Matlab命令区输入决策变量初值数据xO,再命令[x,fmin] fminunc( (mbhs.x0) 如:mn(2x2+3x2)的最优解是x=(0).用 Matlab计算,函数文件为 function f-mbhs(x) f=2*x(1)y2+3*x(2)2 再输入初值xO=[1l并执行上述命令,结果输出为ⅹ=?fmin=?略。 2.约束优化问题 mn s1.g(x)≤0,(=1,2,…,p) h,(x)=0,(=1,2,…,m L≤x≤U 其中:向量x的n个分量x都是决策变量,称∫(x)目标函数、g(x)等式约束函数、h1(x) 不等式约束函数、L下界、U上界。 用 Matlab求解:先把模型写成适用于 Matlab的标准形式 x∈Rn s.Ax≤b, Aegx= be q3 g(x)≤0, h(x)=0, L≤x≤U 约束条件中:把线性的式子提炼出来得前两个式子;后三个式子都是列向量 g1(x) (s: A,, b,, Aeg=[l, beg=0.g(x) 再建立两个函数文件:目标函数 mbhs. m;约束函数 shs. m
用 Matlab 求解非线性规划 1.无约束优化问题 min f (x) n xR ,其中向量 x 的 n 个分量 i x 都是决策变量,称 f (x) 目标函数。 用 Matlab 求解:先建立函数文件 mbhs.m,内容是 f (x) 的表达式;再回到 Matlab 命令区输入决策变量初值数据 x0,再命令[x,fmin]=fminunc(@mbhs,x0) 如: min (2 3 ) 2 2 2 1 2 x x x R + 的最优解是 (0,0) . T x = 用 Matlab 计算,函数文件为 function f=mbhs(x) f=2*x(1)^2+3*x(2)^2; 再输入初值 x0=[1;1]; 并执行上述命令,结果输出为 x =? fmin =? 略。 2.约束优化问题 . ( ) 0, ( 1,2,..., ), . . ( ) 0, ( 1,2,..., ), min ( ) L x U h x i m st g x i p f x i i x R n = = = 其中:向量 x 的 n 个分量 i x 都是决策变量,称 f (x) 目标函数、 g (x) i 等式约束函数、 h (x) i 不等式约束函数、L 下界、U 上界。 用 Matlab 求解:先把模型写成适用于 Matlab 的标准形式 . ( ) 0, ( ) 0, , . . , min ( ) L x U h x g x Aeq x beq st Ax b f x n x R = = 约束条件中:把线性的式子提炼出来得前两个式子;后三个式子都是列向量。 (如: = = = ( ) ( ) , , [], [], ( ) 1 2 6 2 1 g x g x A b Aeq beq g x p ) 再建立两个函数文件:目标函数 mbhs.m;约束函数 yshs.m
再回到 Matlab命令区,输入各项数据及决策变量初值数据x0,执行命令 [x, fmin]=fmincon(@mbhs, xO, A, b, Aeq, beq, L, U, @yshs) 例:单位球x2+y2+2≤1内,曲面z=x2+y2-0.5-01xy的上方,平面 x+y+z-008=0之上(不是上面),满足上述三个条件的区域记为D,求函数 sin(x+y-z)+ecos(2-1在D上的最大值、最大值点。 解:(1)目标函数文件 mbhs m function f=mbhs(x) f=exp(x(1)*x(2)*x(3)*sin(x(1)+x(2)x(3)exp(-x(1)*x(2)*cos(x(3)2-1) (2)约束函数文件 shs.m function g, h]=yshs(x) g=[x(1)2+x(2)2+x(3)2-1x(1)^2+x(2)2-0.5-0.1*x(x)*x(2)x(3) h=0; (3)数据准备 x0=[000.02,0.02]A=]b=[]Aeq=[1ll,lbeq=0.08 L=[-1;-1;-l]U=[l;1;1l (4)执行命令 [x, fmin] =fmincon(@mbhs, xO, A, b, Aeq, beq, L, U, @yshs) (5)结果???
再回到 Matlab 命令区,输入各项数据及决策变量初值数据 x0,执行命令 [x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs) 例:单位球 1 2 2 2 x + y + z 内,曲面 z x y 0.5 0.1xy 2 2 = + − − 的上方,平面 x + y + z − 0.08 = 0 之上(不是上面),满足上述三个条件的区域记为 D,求函数 sin( ) cos( 1) 2 + − + − − e x y z e z xyz xy 在 D 上的最大值、最大值点。 解:(1)目标函数文件 mbhs.m function f=mbhs(x) f=-exp(x(1)*x(2)*x(3))*sin(x(1)+x(2)-x(3))-exp(-x(1)*x(2))*cos(x(3)^2-1); (2)约束函数文件 yshs.m function [g,h]=yshs(x) g=[x(1)^2+x(2)^2+x(3)^2-1;x(1)^2+x(2)^2-0.5-0.1*x(x)*x(2)-x(3)]; h=[]; (3)数据准备 x0=[0.0;0.02;0.02];A=[];b=[];Aeq=[1,1,1];beq=0.08; L=[-1;-1;-1];U=[1;1;1]; (4)执行命令 [x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs) (5)结果 ???