基本可行解matlab求解代码
1.基本可行解的定义
2.求解代码
function [xs,Bs,x_num]=BFS(A,b)
xs = [];%存储基本可行解 行向量
Bs = {};%存储可行基矩阵 行向量
x_num = 0;%基本可行解个数
B = [];
x = [];
k = 1;
[row,col] = size(A);
m = rank(A);%矩阵A的秩
all_num = nchoosek(col,row);%组合数 计算所有可能的总数
all_col = nchoosek(1:col,m);%计算出所有可能组合的按列下标排列结果,返回一个矩阵
if m < row
error('矩阵A不满足条件');
else
for i = 1:all_num
B = A(:,all_col(i,:));
if rank(B) == m
x = inv(B)*b;
if x >= 0
for j=1:col
xs(k,j) = 0;
end
xs(k,all_col(i,:)) = x;
Bs{1,k} = B;
k = k+1;
end
end
end
x