91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

若能在系數矩陣(bij)中找出n個獨立的0元素;則令解矩陣(xij)中對應這n個獨立的0元素取值為1,其它元素取值為0。將其代入目標函數中得到zk=0,它一定是最小。這就是以(bij)為系數矩陣的指派問題的最優解。也就得到了問題的最優解。

資源截圖

代碼片段和文件信息

function?[zans]=success(marix)

count=0;
%//////////////////////////////////////////////////
????????????%輸入效率矩陣?marix?為方陣;
????????????%若效率矩陣中有?M則用一充分大的數代替;
????????????%輸出z為最優解,ans為?最優分配矩陣;
%//////////////////////////////////////////////////

[hl]=size(marix);
aamarix=marix;
if?h>l
????marix=zeros(h);
????for?i=1:h
????????for?j=1:l
????????????marix(ij)=aamarix(ij);
????????end
????end
elseif?l>h
????marix=zeros(l);
????for?i=1:h
????????for?j=1:l
????????????marix(ij)=aamarix(ij);
????????end
????end
end

a=marix;
b=a;

%確定矩陣維數
s=length(a);
%確定矩陣行最小值,進行行減
ml=min(a‘);
for?i=1:s
????a(i:)=a(i:)-ml(i);
end
%確定矩陣列最小值,進行列減
mr=min(a);
for?j=1:s
????a(:j)=a(:j)-mr(j);
end
%?start?working
num=0;


me=a;


while(num~=s)??%終止條件是“(0)”的個數與矩陣的維數相同
????%index用以標記矩陣中的零元素,若a(ij)=0,則index(ij)=1否則index(ij)=0
????index=ones(s);
???%?sum(sum(index))
??%??sum(sum(a))
????me=a;
???%?index=a&index;
???index=me&index;
???%?sum(?sum(index))
????index=~index;
%????sum(sum(index))
????%flag用以標記劃線位,flag=0?表示未被劃線,
????%flag=1?表示有劃線過,flag=2?表示為兩直線交點
????%ans用以記錄?a?中“(0)”的位置
????%循環后重新初始化flagans
????flag?=?zeros(s);
????ans0?=?zeros(s);
????%一次循環劃線全過程,終止條件是所有的零元素均被直線覆蓋,
????%即在flag>0位index=0
????
???
????
????while(sum(sum(index)))
????????%按行找出“(0)”所在位置,并對“(0)”所在列劃線,
????????%即設置flag同時修改index將結果填入ans
???????k?=0;?
???????p?=?0;
???????for?i=1:s
????????????t=0;
????????????
????????????l=0;
????????????for?j=1:s
????????????????if(flag(ij)==0&&index(ij)==1)
????????????????????l=l+1;
????????????????????t=j;
????????????????end
????????????end
????????????if(l==1)
????????????????k?=?1;
????????????????flag(:t)=flag(:t)+1;
????????????????index(:t)=0;
????????????????ans0(it)=1;
????????????else
????????????????k=0;
????????????end
????????end
????????%按列找出“(0)”所在位置,并對“(0)”所在行劃線,
????????%即設置flag同時修改index將結果填入ans
????????
????????for?j=1:s
????????????t=0;
????????????r=0;
????????????for?i=1:s
????????????????if(flag(ij)==0&&index(ij)==1)
????????????????????r=r+1;
????????????????????t=i;
????????????????end
????????????end
????????????if(r==1)
????????????????p?=?1;
????????????????flag(t:)=flag(t:)+1;
????????????????index(t:)=0;
????????????????ans0(tj)=1;
????????????else
????????????????p=0;
????????????end
????????end
????????
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

????????if?(0?==p?&&?k?==0)????%44?
????????????sto1?=?s+1;
???????????
????????????pos?=?1;
????????????for?numb?=?1:s;%55
????????????????sto?=0;
??

評論

共有 條評論