




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件算法設(shè)計(jì)實(shí)驗(yàn)報(bào)告題目:作業(yè)調(diào)度問題 院(系):計(jì)算機(jī)科學(xué)與工程專業(yè):班級(jí):學(xué)生:學(xué)號(hào): 2015年11月問題描述:n個(gè)作業(yè){1,2,…,n}要在由n臺(tái)機(jī)器M1,...,Mn完成加工作業(yè)調(diào)度問題,要求確定這n個(gè)作業(yè)的最優(yōu)加工順序,使得從第一個(gè)作業(yè)在機(jī)器,到最后一個(gè)作業(yè)在機(jī)器上加工完成所需的時(shí)間最少。算法設(shè)計(jì):貪心算法思想:貪心選擇性質(zhì):所謂貪心選擇性質(zhì)是指應(yīng)用同一規(guī)則f,將原問題變?yōu)橐粋€(gè)相似的。但規(guī)模更小的子問題,而后的每一步都是當(dāng)前看似最佳的選擇。這種選擇依賴于已做出的選擇,但不依賴于未作出的選擇。從全局來看,運(yùn)用貪心策略解決的問題在程序中無回溯過程。局部最優(yōu)解:我們通過特點(diǎn)2向大家介紹了貪心策略的數(shù)學(xué)描述。由于運(yùn)用貪心策略解題在每一步都取得了最優(yōu)解,但能夠保證局部最優(yōu)解的不一定是貪心算法。設(shè)7個(gè)獨(dú)立作業(yè){1,2,3,4,5,6,7}由3臺(tái)機(jī)器M1,M2和M3加工處理。各作業(yè)所需的處理時(shí)間分別為{2,14,4,16,6,5,3}。按算法greedy產(chǎn)生的作業(yè)調(diào)度如下圖所示,所需的加工時(shí)間為17。序號(hào)1234567時(shí)間214416653序號(hào)4256371時(shí)間161465432假設(shè)有三臺(tái)機(jī)器,建立最小堆程序中標(biāo)識(shí)符說明類別名稱作用類Fac4_7_1
類MinHeap最小堆類用于優(yōu)先隊(duì)列類jobNode定義作業(yè)結(jié)點(diǎn)(序號(hào)及加工時(shí)間)類MachineNode定義機(jī)器結(jié)點(diǎn)(機(jī)器號(hào)和可用時(shí)間)方法mergesort按處理作業(yè)加工時(shí)間降序排序方法greedy貪心法解多機(jī)調(diào)度問題數(shù)組a[]按作業(yè)順序填寫加工時(shí)間算法實(shí)現(xiàn):運(yùn)行環(huán)境:Myeclipse8.5 javaproject2.源代碼://基于最小堆的貪心算法解多機(jī)調(diào)度問題,//heapsortonminheapimportjava.io.*;classMinHeap{//Min-heapimpmentationstaticjobNode[]Heap;//Pointertotheheaparraystaticintsize;//Maximumsizeoftheheapstaticintn;//NumberofintentsnowinheapheapsoetpublicMinHeap(jobNode[]h,intnum,intmax)//constructor{Heap=h;n=num;size=max;buildheap();}publicintheapsize()//returncurrentsizeoftheheap{returnn;}publicstaticbooleanisLeaf(intpos)//trueifposisaleafposition{return(pos>=n/2)&&(pos<n);}publicstaticvoidAssert_notFalse(booleanp,Stringq){if(!p)System.out.println((String)q);}publicstaticintkey(int[]q,intp){returnq[p];}//returnpositionforleftchildofpospublicstaticintleftchild(intpos){Assert_notFalse(pos<n/2,"positionhasnoleftchild");return2*pos+1;}//returnpositionforrightchildofpospublicstaticintrightchild(intpos){Assert_notFalse(pos<(n-1)/2,"positionhasnorightchild");return2*pos+2;}publicstaticintparent(intpos)//returnpositionforparent{Assert_notFalse(pos>0,"positionhasnoparent");return(pos-1)/2;}publicstaticvoidbuildheap()//HeapifycontentsofHeap{for(inti=n/2-1;i>=0;i--)siftdown(i);}publicstaticvoidswap(jobNode[]q,inti,intj){jobNodetemp;temp=q[i];q[i]=q[j];q[j]=temp;}privatestaticvoidsiftdown(intpos)//putintentinitscorrentplace{Assert_notFalse((pos>=0)&&(pos<n),"illegalheapposition");while(!isLeaf(pos)){intj=leftchild(pos);if(j<(n-1)&&Heap[j].key()>Heap[j+1].key())j++;//jisnowindexofchildwithgreatervalueif(Heap[pos].key()<=Heap[j].key())return;//Doneswap(Heap,pos,j);pos=j;}//Movedown}publicstaticvoidinsert(jobNodeval)//Insertvalueintoheap{Assert_notFalse(n<size,"Heapisfull");intcurr=n++;Heap[curr]=val;//starttendofheap//Nowsiftupuntilcurr'sparent'skey<curr'skeywhile(curr!=0&&Heap[curr].key()<Heap[parent(curr)].key()){swap(Heap,curr,parent(curr));curr=parent(curr);}}publicstaticjobNoderemovemin()//removeminimumvalue{Assert_notFalse(n>0,"Removingfromemptyheap");swap(Heap,0,--n);//swapminimumwithlastvalueif(n!=0)//Notonlastintentsiftdown(0);//PutnewheaprootvalincorrentplacereturnHeap[n];}//RemoveintentatspecifiedpositionpublicstaticjobNoderemove(intpos){Assert_notFalse((pos>0)&&(pos<n),"illegalheapposition");swap(Heap,pos,--n);//swapwithlastvalueif(n!=0)//Notonlastintentsiftdown(pos);//putnewheaprootvalincorrentplacereturnHeap[n];}publicstaticvoidoutMinHeap(){for(inti=0;i<=n-1;i++)System.out.print(Heap[i].time+"");System.out.println();}staticvoidheapsort()//heapsort{System.out.println("建最小堆之后排序");for(inti=1;i<size-1;i++)//nowsortSystem.out.print(removemin()+"");System.out.println();//removeminplacesminvalueatendofheap}}//classMinHeapclassjobNodeimplementsComparable{intid;inttime;jobNode(inti,inttt){id=i;time=tt;}publicintcompareTo(Objectx){intxt=((jobNode)x).time;if(time<xt)return-1;if(time==xt)return0;return1;}publicintkey(){returntime;}}publicclassFac4_7_1{publicstaticvoidmergeSort(jobNode[]a,intleft,intright){jobNode[]b=newjobNode[a.length];if(left<right){inti=(left+right)/2;mergeSort(a,left,i);mergeSort(a,i+1,right);merge(a,b,left,i,right);copy(a,b,left,right);}}publicstaticvoidcopy(jobNode[]a,jobNode[]b,inti,intj){for(intk=i;k<=j;k++)a[k]=b[k];}publicstaticvoidmerge(jobNode[]c,jobNode[]d,intl,intm,intr){//合并c[l:m]和c[m+1:r]到d[l:m]inti=l,j=m+1,k=l;while((i<=m)&&(j<=r))if(c[i].time-c[j].time>0)d[k++]=c[i++];elsed[k++]=c[j++];if(i>m)for(intq=j;q<=r;q++)d[k++]=c[q];elsefor(intq=i;q<=m;q++)d[k++]=c[q];}publicstaticvoidmain(Stringargs[]){intm1=0,m=3;inta[]={2,14,4,16,6,5,3};intn1=a.length-1;intsum=0;if(n1<m){for(inti=0;i<=n1;i++)if(sum<a[i])sum=a[i];System.out.println("為每個(gè)作業(yè)分配一臺(tái)機(jī)器,最長時(shí)間為");System.out.println(sum);}else{jobNode[]d=newjobNode[n1+1];for(inti=0;i<=n1;i++)d[i]=newjobNode(i,a[i]);mergeSort(d,m1,n1);MinHeapabc=newMinHeap(d,m1,3);for(inti=m1;i<m;i++){jobNodex1=d[i];abc.insert(x1);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC TS 62443-6-2:2025 EN Security for industrial automation and control systems - Part 6-2: Security evaluation methodology for IEC 62443-4-2
- 個(gè)人雇傭鐘點(diǎn)工勞務(wù)合同
- 文化創(chuàng)意產(chǎn)業(yè)數(shù)字化升級(jí)投資合同
- 信息安全保障服務(wù)合同
- 個(gè)人收入證明收入證明協(xié)議年
- 設(shè)備材料買賣合同
- 智能車輛研發(fā)合作協(xié)議
- 青島二手房買賣合同的
- 爆破工程承包合同與爆破承包合同
- 裝飾材料購銷合同
- 三方公司合作協(xié)議書范本
- 護(hù)理責(zé)任組長續(xù)聘競聘
- 2024-2025學(xué)年第二學(xué)期教學(xué)教研工作安排表
- 2025年貴州云上產(chǎn)業(yè)服務(wù)有限公司招聘筆試參考題庫含答案解析
- 2025-2030年中國天然氣行業(yè)發(fā)展分析及發(fā)展趨勢預(yù)測報(bào)告
- 《雷達(dá)信號(hào)處理基礎(chǔ)》課件
- 2025屆貴州省興義市三年級(jí)數(shù)學(xué)第一學(xué)期期末達(dá)標(biāo)檢測試題含解析
- 人教版地理七年級(jí)下冊(cè)7.1.2 亞洲的自然環(huán)境(課件39張)
- 外研版(三起)小學(xué)英語三年級(jí)下冊(cè)Unit 1 Animal friends Get ready start up 課件
- 《公路建設(shè)項(xiàng)目文件管理規(guī)程》
- 春節(jié)文化研究手冊(cè)
評(píng)論
0/150
提交評(píng)論