• 线性规划中的单纯形法与内点法(原理、步骤以及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)
    

     

     

  • 相关阅读:
    字符串案例1
    字符串1
    标准类制作
    构造方法
    封装
    成员变量和局部变量
    类和对象的案例

    案例
    方法的参数传递
  • 原文地址:https://www.cnblogs.com/Mr-ZeroW/p/optimization.html
Copyright © 2020-2023  润新知