zoukankan      html  css  js  c++  java
  • 线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)

    线性规划(Linear Programming Problem:LPP)是凸优化以及现实生活中经常遇到的问题,解决线性规划问题常用的方法有单纯形法(Simlex Method)(普通单纯形法,大M法,两阶段法,对偶单纯形法)以及内点法(karmarkar method)

    matlab中求解线性规划使用 linprog(f, A, b, Aeq, beq, lb, ub)以及revised(c, b, a, inq, 1)

    注:f为目标函数(min形式)系数矩阵,A为限制条件系数矩阵,b为右端值矩阵(元素可以小于零),Aeq为等式约束的系数矩阵,beq为等式约束的右端值矩阵,lb和ub为未知数的下限和上限

    1.LPP 

    2.Simplex Method

    每一次迭代的tableau 格式如下:

    =====================================================================

    =====================================================================

    换入基、换出基的选择:

    原理:

    所以标准型可以换成以下的形式:

    迭代的思想:

    解的情况讨论:

     

    ========================================================================

    ========================================================================

    2.1 Simplified Simplex Method (普通单纯形)

    LPP中的约束条件全是等式约束

    standard form

     注:这里的右端值b必须全部非负

     下面举例说明该种方法的应用以及matlab的两种实现

    Solution 

    首先引入变量(slack or surplus)将原问题转为标准格式:

    下面开始迭代:

    first tableau

     

    将x1作为基变量换出x4

    second tableau

    将x2作为基变量换出x3

    third tableau

    可以看到

    所有的z_j-c_j都是非负的,所以此时的x值是最优值,答案为:

    matlab实现

    linprog() : 

    注意:linprog()解决问题的标准格式如下:

    所以需要转换原问题为最小化问题!!!

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

     下面贴出运行结果

    revised():

    注意:该函数不是内置函数,需要自行下载函数,附上网址:http://cn.mathworks.com/matlabcentral/fileexchange/26554-revised-simplex-method?focused=5147615&tab=function

    c = [2 1];
    A = [3 4; 6 1];
    b = [6 3];
    inq = [-1 -1];
    revised(c, b, A, inq, 0)
    

     

     

  • 相关阅读:
    .NET Remoting 应用实例
    EXT.NET 使用总结(3)--动态图表
    2013,2014
    TreeMap put 操作分析
    C#排序算法小结
    高性能的JavaScript--数据访问(1)
    javascript生成对象的三种方法
    Android开发中经常使用的Content-Type简介
    git diff提示filemode发生改变(old mode 100644、new mode 10075)
    UIWebView的使用
  • 原文地址:https://www.cnblogs.com/Mr-ZeroW/p/optimization.html
Copyright © 2011-2022 走看看