资源简介

Matlab向量化编程实现,代码非常简洁(除了注释只有36行,和算法步骤很匹配,熟悉向量化编程的话非常易读懂),最大的好处除了得到最优解和最优目标函数值之外,还能把每一步的单纯形表数据保存下来,直接就能得到和笔算一样的单纯形表,配例还给出了将单纯形表写入Excel的代码。

资源截图

代码片段和文件信息

function [xzSTres_case] = SimplexMax(cAbind_B)
% 单纯形法求解标准形线性规划问题: max cx s.t. Ax=b x>=0
% 输入参数: c为目标函数系数 A为约束方程组系数矩阵 b为约束方程组常数项 ind_B为基变量索引
% 输出参数: x最优解 z最优目标函数值 ST存储单纯形表数据 res_case=0表示有最优解,res_case=1表示有无界解

[mn] = size(A);              %m约束条件个数 n决策变量数
ind_N = setdiff(1:n ind_B);  %非基变量的索引
ST = [];
format rat
% 循环求解
while true
    x0 = zeros(n1);
    x0(ind_B) = b;               %初始基可行解
    cB = c(ind_B);               %计算cB
    Sigma = zeros(1n);
    Sigma(ind_N) = c(ind_N) - cB*A(:ind_N);   %计算检验数
    [~ k] = max(Sigma);         %选出最大检验数 确定进基变量索引k
    Theta = b ./ A(:k);         %计算θ
    Theta(Theta<=0) = 10000;
    [~ q] = min(Theta);         %选出最小θ
    el = ind_B(q);               %确定出基变量索引el 主元为A(qk)
    vals = [cB‘ind_B‘bATheta];
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9417  2019-04-04 21:47  SimplexTable1.xlsx

     文件        459  2019-03-14 09:39  test_simplex1.m

     文件       1517  2019-03-16 15:30  SimplexMax.m

----------- ---------  ---------- -----  ----

                11393                    3


评论

共有 条评论