资源简介
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
评论
共有 条评论