JSP中求關鍵路徑演算法及java實現

2021-07-02 15:32:51 字數 1848 閱讀 6158

在jsp問題中,關鍵路徑決定著車間作業的完工時間,通過引入基於關鍵路徑的鄰域規則,使鄰域解大大減少,從而大大減少優化過程的複雜度。

關鍵塊是關鍵路徑中工序在同一臺機器連續組成的工序集合。

已知:

int o = new int[n][m];  //o代表工序,值為各工序編號,i為工件編號,j為該工件工序編號

int u = new int[n][m]; //工件i的第j個工序是第幾台機器

int p = new int[n][m]; //工件i的第j個工序的處理時間

int starttime = new int[n][m]; //starttime儲存第i個工件的第j個工序的開始時間

int finishtime = new int[n][m]; //finished儲存第i個工件的第j個工序的完成時間

演算法:

step 1: 根據最大完工時間,求得最大完工時間所在的工序編號,並將該工序編號加入到關鍵路徑鍊錶中,該工序表示為o

step 2: 求prejob(o), premac(o)

step 3: 若prejob(o) != null && premac(o) != null,取50%概率選擇其一,將新的工序加入插入到關鍵路徑鍊錶,並將該工序表示為o

否則若prejob(o) != null,將prejob(o)插入到關鍵路徑鍊錶,並將該工序表示為o

否則若premac(o) != null,將premac(o)插入到關鍵路徑鍊錶,並將該工序表示為o

step 4: 判斷當前關鍵工序的開始時間是否等於0,如果不是,轉step2, 否則結束

說明:prejob(o):工序o在本工件上的前一工序,且該工序的結束時間等於o的開工時間

premac(o):  工序o所在機器在o前面緊挨的工序,即該工序的結束時間等於o的開工時間

實現**:

//接下來計算關鍵路徑

//求得最大時間所在的工序編號

int maxindex = 0;

for(int i = 0; i < n; ++i)

} //將這個工序加入關鍵路徑鍊錶中

arraylistkeypath = new arraylist();

keypath.add(0, maxindex);

int index_i = maxindex / n;

int index_j = maxindex % m;

//開始遞推尋找,直到首工序

while(starttime[index_i][index_j] != 0)

for(int i = 0; i < n; ++i)

} if(prejobindex != -1 && premacindex != -1)

else

} else if(prejobindex != -1)

else if(premacindex != -1)

}

//接下來對關鍵路徑的工序進行分塊

//思路**於文件倒排索引的reduce實現

kpb = new arraylist();

int premac = -1;

kpblock kpblock = new kpblock();

for(int i = 0; i < keypath.size(); ++i)

premac = curmac;

kpblock.block.add(curope);

}kpb.add(kpblock); //加上最後一塊

class kpblock

Dijkstra最短路徑演算法的java實現

迪傑斯特拉演算法是由荷蘭計算機科學家狄克斯特拉於1959 年提出的,因此又叫狄克斯特拉演算法。是從乙個頂點到其餘各頂點的最短路徑演算法,解決的是有向圖中最短路徑問題。迪傑斯特拉演算法主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。如下圖 令graph v,e 為乙個帶權無向圖。gr...

Java中this關鍵字原理及作用

一 this關鍵字的作用 當方法的區域性變數和類的變數名重名時,在不使用this的情況下會有什麼結果?person string name 定義當前person名字 引數name是目標名字 成員變數name是自己名字 public void sayhello string name demo01pe...

JSP中如何使用JQuery及相對路徑問題

首先引入jquery對應的js檔案,然後引入自己的js檔案,這裡要注意先後順序 在引入這兩個js檔案的時候,遇到相對路徑的問題 問題描述 在新建立的jsp頁面中,自動會生成如下 string path request.getcontextpath string basepath request.ge...