您的位置:首页 > 编程语言 > MATLAB

利用Matlab解决规划问题

2020-03-05 19:40 537 查看

利用Matlab解决规划问题

  • 整数规划
  • 非线性规划
  • 二次规划
  • 线性规划

    应用单纯形法求解

    将线性规划问题的一般形式转化为标准形式:
    1.若为maxf(x),则化为-maxf(x)
    2.将不等式约束化为等式约束:
    (1)若gi(X)<=bi,转为gi(X)+xk=bi
    (2)若gi(X)>=bi,转为gi(X)-xk=bi
    3.将任意变量转为非负变量(即xi>=0)
    4.将负的限定系数转为正值(Ax=b,若b为负值,则等式两边均乘以-1)
    e.g.
    minf(x)=-4x1-x2
    s.t.
    -x1+2x2<=4
    2x1+3x2<=12
    x1-x2<=3
    x1,x2>=0
    解:
    用M函数形式求解

    A=[-1,2,1,0,0;2,3,0,1,0;1,-1,0,0,1]
    c=[-4,-1,0,0,0]
    b=[4,12,0]
    [x,mf]=SimpleMthd0(A,c,b,[3 4 5])

    运行结果如下;
    x= 4.2000 1.2000
    mf=-18.0000

    利用优化工具linprog

    Matlab的优化工具箱里有现成函数linprog
    minf(x)
    s.t.(不等式约束)Ax<=b
    (等式约束)Aeqx=beq
    lb<=x<=ub
    基本格式

    [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)

    e.g.
    minf(x)=-2x1-x2+3x3-5x4
    s.t.
    x1+2x2+4x3-x4<=6
    2x1+3x2-x3+x4<=12
    x1+x3+x4<=4
    x1,x2,x3,x4>=0
    解:

    f=[-2 -1,3,-5]
    A=[1 2 4 -1;2 3 -1 1;1 0 1 1]
    b=[[6 12 4]
    lb=[0 0 0 0]
    [x,fval]=linprog(f,A,b,[],[],lb)

    输出结果如下:
    x=
    0.0000
    2.6667
    0.0000
    4.0000
    fval=-22.6667

    整数规划

    非线性规划

    二次规划

    • 点赞
    • 收藏
    • 分享
    • 文章举报
    Muz_zYe 发布了1 篇原创文章 · 获赞 0 · 访问量 95 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: