• 计算机算法设计与分析:线性规划问题和单纯形算法


    第1关:单纯性算法解一般线性方程组

    任务描述
    本关任务:编写一个利用两阶段单纯性算法求一般线性规划的程序。

    相关知识
    单纯形算法的第1步:选出使目标函数增加的非基本变量作为入基变量。
    查看单纯形表的第 1 行(也称之为z行)中标有非基本变量的各列中的值。
    选出使目标函数增加的非基本变量作为入基变量。

    单纯形算法的第2步:选取离基变量。
    在单纯形表中考察由第 1 步选出的入基变量所相应的列。
    在一个基本变量变为负值之前,入基变量可以增到多大。
    如果入基变量所在的列与基本变量所在行交叉处的表元素为负数,那么该元素将不受任何限制,相应的基本变量只会越变越大。
    如果入基变量所在列的所有元素都是负值,则目标函数无界,已经得到了问题的无界解。
    如果选出的列中有一个或多个元素为正数,要弄清是哪个数限制了入基变量值的增加。
    受限的增加量可以用入基变量所在列的元素(称为主元素)来除主元素所在行的“常数列”(最左边的列)中元素而得到。所得到数值越小说明受到限制越多。
    应该选取受到限制最多的基本变量作为离基变量,才能保证将入基变量与离基变量互调位置后,仍满足约束条件。

    单纯形算法的第3步:转轴变换。
    转轴变换的目的是将入基变量与离基变量互调位置。
    给入基变量一个增值,使之成为基本变量;
    修改离基变量,让入基变量所在列中,离基变量所在行的元素值减为零,而使之成为非基本变量。

    单纯形算法的第4步:转回并重复第1步,进一步改进目标函数值。
    不断重复上述过程,直到z行的所有非基本变量系数都变成负值为止。

    编程要求

  • 相关阅读:
    vue 下载的插件从哪里上传?npm发布插件详细记录
    Linux用户管理— 用户组管理命令
    glibc 里的线程 id
    cap理论、base 定理、分布式事务的理解与相互关系
    c#使用自带库对字符串进行AES加密、解密
    OTP语音芯片 NV080D在智能空气检测仪的应用
    【计算机网络】运输层:拥塞控制
    【Java】泛型通配符
    业务型 编辑器组件的封装(复制即可使用)
    CentOS7 卸载/home 扩大/root空间
  • 原文地址:https://blog.csdn.net/Junds0/article/details/127646578