首页 > 编程知识 正文

Matlab数学建模优化模型例题,基于matlab的优化设计

时间:2023-05-04 07:44:32 阅读:158950 作者:3890

MATLAB % E6 % B1 % 82 % E8 % a7 % a3 % E6 % e9 % E4 % BC % 98 % E5 % 8c % e9 % 97 % ae9 % a2 % ef % BC % 88 % 25 % 207 % 84 % c % A8 MATLAB % E4 % b8 % ad % E7 % 94 % A8 % E4 % ba % 8e7% ba % BF % E6 % 80 % a7 % E8 % a7 % 84 % E5 % 88 % 20 % 87 % BD % 5 % 20 % 0a % 20 % 25x 3360 % E8 % a1 % A8 % E7 % a4 % ba % E6 % 9c % E4 % BC % 98 % E8 % a7 % a3 % ef % BC % 8cf val 3360 % E8 % 3 % E7 % E7 %9A8 % E7 % bb % 20 B4 % a5 % ef % BC % 8c1 % E4 % bb % a3 % E8 % a1 % A8 % E6 % E5 % 8a % E3 % 80 % 0a % 20 % 20 % 25 obc % 81 % E4 % E4 % 25 % 25 % bb % bb % 93 % E6 % EC % 84 % E4 % 25 % 20a % 84 % E6 % 8b % 89 % E6 % A0 % BC % E6 % 9c % E6 % a5 % B9 % E5 % ad % 90 % E3 % 82 % f % BC % 89c % e9 % 20a % 84 % E7 % B3 % bb % E6 % 95 % B0 % ef % BC % 8c % E5 % a6 % 82 % E6 % 9c % E6 % B1 % 82 % E6 % BC % f % 8d % E6 % 95 % 20 % B3 % bb % E6 % B0 % E7 % 9f % a9 % e9 % b5 % ef % BC % 8cb 360 % E4 % b8 % 8d % E7 % ad % 89 % E5 % BC 7 % a9 % E7 % E7 % B9 % ec9 % ec9 % EC % 205 % b8 % b8 % E5 % 90 % e9 % 87 % 8f % ef % BC %8clb % E3 % 80 % 81ub % E8 % a1 % % E7 % 9a % 84 % E5 % 88 % 9d % E5 % a7 % 8b % E5 % 25 % 20f % E6 % 80 % a7 % E8 % a7 % 84 % E5 % 88 % 92 % E4 % BC % 98 % E5 2 % B3 % ef % BC % 8c % E5 % a4 % a7m % E6 % B3 % 95 % 205 % B0 % e9 % 9b % 86 % E4 % b8 % ad % E4 % ba % 86 % E8 % BF % 99 % 3d %5b5 %2C2 %3B2 %2C3 % 3b1 % 2c5 % 5d % 3b % 20b % 3d % 3d % 253 % 20 fval % 5d % 3d linprog % 28c % 2ca % 2cb % 2c % 5b % 20 % 0a % 20c % 3d % 5b0% 3b 0.1 % 3b 0.2 % 3b 0.3 % 3b 0.8 % 3d % 20 aeq % 3d % 5b1%2C2 %2C1 % 21 % 252 % 2000 % 3b 100 % 5d % 8c % 2c % 5b % 20 % 2030.0000 % 2010.0000 % 200 % 2050.0000 % 200 fval % 20 % 3d % 2016 % 20 % E4 % b8 % e9 % 9d % a2 % E8 % a7 % a7 ef % BC % 8c % E7 % BF % 20 % 89 % B9 % E6 % AE % 8a % E7 % 9a % 84 % E6 % 83 % E5 % b5 % ef % BC % E5 % 8d % B3 % E6 % B4 % E6 % 98 % af % E4 % 25 % 207 % 8d % E7 % 89 % B9 % E6 % ae8a % E7 % 84 % E7 % 9a % 84 % E7 % BF % E6 % 80 % a7 % E8 % a7 % 84 % E7 % a7 % 84 % E4 % E6 % E7 % E4 1 % 82 % E8 % aa % 20c % E4 % b8 % 94 % E6 % 9c % 80 % E6 % 96 % B0 % E7 % 89 % E7 % 9a % 84 MATLAB % E5 % B7 % B2 % E7 % bb8f E8 % be83 % E6 % 25 % 20ef % BC % 9a % 5bx % 2c fval %2cexitflag % 5d %3dint linprog % 28c %2cint con % 2ca % 2cb %2caeq % 2c

(H,f,A,b,Aeq,beq,lb,ub,x0,options)
%上述参数与线性规划中的参数含义相同,H为实对称矩阵,在求解前需要把二次规划化为标准形式。


下面通过两个例子来看一次如何通过matlab求解二次规划
例1:

>> H=[4,-1;-1,2];>> f=[-3;-5];>> a=[1,1;-1,2];>> b=[5;4];>> lb=[0;0];>> [x,fval]=quadprog(H,f,a,b,[],[],lb)x = 1.5714 2.7857fval = -10.3214

从而原问题的最优值为:-6.3214
例2:

>> H=[2,1,1;1,2,0;1,0,2];>> f=[-5;-3;-6];>> a=[5,4,7];>> b=[22];>> lb=[0;0;0];>> [x,fval]=quadprog(H,f,a,b,[],[],lb)x = 0.5725 0.9237 2.2061fval = -11.0305

原问题的最优值为:11.0305

3.非线性规划

在matlab软件中,函数fmincon用于求解非线性规划问题。
[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
%nonlcon表示非线性约束条件(需要写自定义函数),x0为初值。


例1:

%编写目标函数function f=fun1(x)f=exp(x(1))*(x(1)^2+2*x(2)^2+3*x(1)*x(2)+5*x(1)+4*x(2)+2);%编写非线性约束条件函数function[c,ceq]=fun2(x)c=[3+x(1)*x(2)-x(1)-x(2);x(1)*x(2)-12];ceq=[];%编写主程序>> Aeq=[1,2];>> beq=[0];>> x0=[-1;1];>> [x,fval]=fmincon(@fun1,x0,[],[],Aeq,beq,[],[],@fun2)%运行结果x = -3.0000 1.5000fval = -0.3485

fmincon函数是默认从给定的x0为中心开始搜索,直至找到函数的z最小值,并返回距离x0最近的函数最小值对应的值,在计算的时候就必须预先判定函数最小值的对应的x值的大概范围,确保定的初值x0在所求的x附近,以减少计算量。
在利用调用f(x)就可以求得最小值了
如果给的是周期函数
那给不同的值一般应该会得到不同x值
但应该f(x)值是一致的

例2:

%编写目标函数function f=fun1(x)f=-0.201*x(1)^4*x(2)*x(3)^2/10^7;%编写非线性约束条件函数function[c,ceq]=fun2(x)c=[x(1)^2*x(2)-675;x(1)^2*x(3)^2/10^7-0.419];ceq=[];>> x0=[4;5;50];>> lb=[0;0;0];>> ub=[36;5;125];>> [x,fval]=fmincon(@fun1,x0,[],[],[],[],lb,ub,@fun2)%运行结果x = 28.0299 0.8591 73.0273fval = -56.8478

fmincon求解优化问题,最优解不一定唯一。选择不同的迭代初始值x0,可能得到不同的局部最优解(局部最优解不一定为全局最优解)
例3

%编写目标函数function f=fun1(x)f=-(x(2)+x(1)*cos(x(3)))*x(1)*sin(x(3));%主程序>> Aeq=[2,1,0];>> beq=[100];>> lb=[0;0;0];>> ub=[100;100;pi/2];>> x0=[25;20;1];>> [x,fval]=fmincon(@fun1,x0,[],[],Aeq,beq,lb,ub)%运行结果x = 33.3333 33.3333 1.0472fval = -1.4434e+03 4.无约束优化

一、无约束一元函数最优解

在matlab中用于一元无约束优化计算的是fminbnd()函数。
公式:[x,fval,exitflag,output]=fminbnd(fun,x1,x2,options)

例:

>> f=@(x)(x^3+cos(x)+x*log(x))/exp(x);>> [x,fval]=fminbnd(f,0,2)x = 0.5223fval = 0.3974

二、无约束多元函数最优解

在matlab中用于多元无约束优化计算的是fminunc()函数fminsearch函数。
公式[x,fval,exitflag,output,grad,hessian] =fminunc(fun,x0,options)
公式[x,fval,exitflag,output]=fminsearch(fun,x0,options)
当目标函数阶数大于2时,fminunc()比fminsearch()更有效;当目标函数高度不连续时,fminsearch()更具稳健性。

>> f=@(x)x(1)^3+x(2)^3-3*x(1)*x(2);>> [x,fval]=fminunc(f,[0.5,3])x = 1.0000 1.0000fval = -1.0000

>> f=@(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;>> [x,fval]=fminsearch(f,[-1,3])x = 1.0000 1.0000fval = 1.4253e-10

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。