⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fis.m

📁 这是关于单纯行算法的例程
💻 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 + -