📄 fis.m
字号:
Aarry=[3 2 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 600
0 0 0 3 2 1 0 0 0 0 1 0 0 0 0 0 0 0 0 800
0 0 0 0 0 0 3 2 1 0 0 1 0 0 0 0 0 0 0 375
1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 600
0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 500
0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 325
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 400
3 3 3 -2 -2 -2 0 0 0 0 0 0 0 0 0 0 1 0 0 0
3 3 3 0 0 0 -4 -4 -4 0 0 0 0 0 0 0 0 -1 1 0
-4 -3 -1 -4 -3 -1 -4 -3 -1 0 0 0 0 0 0 0 0 0 500 0];
X=[0 0 0 0 0 0 0 0 0 0 0 0];
%定义用到的数组
sum=0;
flag = 0;
for k=1:1:19 %判别是否问题求解成功否
if Aarry(10,k) < 0
flag = 1;
end
end
while flag
sum=sum+1;
time=cputime;
flag = 0;
a = Aarry(10:10,1:20);
temp2=a(1);
k_j=1;
for k =1:1:20
if temp2 > a(k)
temp2 = a(k);
k_j = k; %找到最负列
end
end
rote=6666655;
k_i=0;
for k = 1:9
if (Aarry(k,k_j)>0)
temp3=Aarry(k,20)/Aarry(k,k_j);
if rote>temp3
k_i = k; %找到枢点元素的行
rote = temp3;
end
end
end
temp=Aarry(k_i,k_j); %为枢点元素
for n = 1:1:20
Aarry(k_i,n)=Aarry(k_i,n)/temp;
end %求得
for p = 1:10
if p~=k_i
Aarry(p,:)=Aarry(p,:)-Aarry(k_i,:)*Aarry(p,k_j);
end
end %完成一次枢点变换,这一列着有一个非零元素
for k=1:1:19 %判别是否收缩成立
if Aarry(10,k) < 0
flag = 1 ;
end
end
end
%**********求解完毕*********
for i=1:19 %%已经找到最优解,从A矩阵中提取X和最优值f
flag0=0; %%标志一列中零元素的个数
Flag1=0; %%标志一列中值为1的元素个数
t=0;
for j=1:10
if Aarry(j,i)==0
flag0=flag0+1;
end
if Aarry(j,i)==1
Flag1=1;
t=j;
end
end
if (flag0==9)&(Flag1==1) %%找到一列中唯一是1的元素,记录位置,并赋予X的值
X(i)=Aarry(t,20);
end
end
x=X(:)
the_best_ans=Aarry(10,20)
sum
time
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -