zoukankan      html  css  js  c++  java
  • MATLAB学习(七)求解优化问题:线性规划 非线性规划 拟合与插值 多目标规划...

    Minf(x)=-5x1  -4x2  -6x3

                   x1   -x2    +x3  <=20

                 3x1  +2x2 +4x3 <=42

                   3x1 +2x2           <=30

                0<=x1,0<=x2,0<=x3

    >> c=[-5,-4,-6];
    >> A=[1 -1 1
    3 2 4
    3 2 0];
    >> b=[20;42;30];
    >> lb=zeros(3,1);
    >> [x,fval,exitflag,output,lambda]=linprog(c,A,b,[],[],lb)
    Optimization terminated.
    
    x =
    
        0.0000
       15.0000
        3.0000
    
    
    fval =
    
      -78.0000
    
    
    exitflag =
    
         1
    
    
    output = 
    
             iterations: 6
              algorithm: 'interior-point-legacy'
           cgiterations: 0
                message: 'Optimization terminated.'
        constrviolation: 0
          firstorderopt: 5.8705e-10
    
    
    lambda = 
    
        ineqlin: [3x1 double]
          eqlin: [0x1 double]
          upper: [3x1 double]
          lower: [3x1 double]
    
    >> 
    

    function[c,ceq]=mycon(x)
    c1=1.5+x(1)*x(2)-x(1)-x(2);
    c2=-x(1)*x(2)-10;
    c=[c1;c2];       % 非线性不等式约束
    ceq = [];        % 非线性等式约束
    

      

    >> optf=@(x) exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
    >> x0=[10;10];lb=[0;0];ub=[inf;inf];
    >> options=optimset('Algorithm','active-set','Display','off');
    >> [x,fval] = fmincon(optf,x0,[],[],[],[],lb,ub,@mycon,options)
    
    x =
    
             0
        1.5000
    
    
    fval =
    
        8.5000
    
    >> 
    

      

    >> x=0:.1:5;
    >> y=sin(x);
    >> f=@(b,x)  b(1)*cos(b(2)*x+b(3))+b(4);
    >> [a,ss]=lsqcurvefit(f,[1,1,1,1],x,y)
    
    Local minimum found.
    
    Optimization completed because the size of the gradient is less than
    the default value of the function tolerance.
    
    <stopping criteria details>
    
    
    a =
    
       -1.0000    1.0000    1.5708   -0.0000
    
    
    ss =
    
       8.7594e-29
    
    >> xf=0:0.05:8;
    yfit=f(a,xf);
    plot(xf,sin(xf),'ro',xf,yfit,'b-')
    

      

    >> zf=@(a,x) a(1)*x(:,1).^2+a(2)*x(:,2).^2+a(3) %构造拟合函数类型
    
    zf = 
    
        @(a,x)a(1)*x(:,1).^2+a(2)*x(:,2).^2+a(3)
    
    >> [X0,Y0]=meshgrid(-2:.2:2);
    x0=X0(:);y0=Y0(:);
    z0=zf([1,1,-1],[x0,y0]);
    >> %用上面的点去拟合估计曲面函数中的参数a:
    >> [b,re]=nlinfit([x0,y0],z0,zf,[0,0,0]);
    b %显示b,发现恰好是1、1、-1
    
    b =
    
        1.0000    1.0000   -1.0000
    

      

     

    >> [X,Y] = meshgrid(-3:.25:3);Z = peaks(X,Y);
    [XI,YI] = meshgrid(-3:.125:3);
    ZI = interp2(X,Y,Z,XI,YI);
    mesh(X,Y,Z), hold, mesh(XI,YI,ZI+15), hold off
    axis([-3 3 -3 3 -5 20])
    已锁定最新绘图
    >> 
    

      

     

     

  • 相关阅读:
    关于博客园创始人的心路历程,感触很深!
    Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL
    在Django中运行脚本文件以及打印出SQL语句。
    Django中的跨表查询,多表查询。
    Django中的ORM介绍,字段以及字段的参数。
    9.2安全的 Web API 与 Web API 2.2 个人帐户
    9.1WebApi的身份验证和授权
    3.1创建项目
    2.4使用属性在 ASP.NET Web API 2 路由创建一个 REST API
    2.3属性在 ASP.NET Web API 2 路由
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13270734.html
Copyright © 2011-2022 走看看