TWI755112B - 電腦程式碼之優化方法、優化系統及應用其之電子裝置 - Google Patents

電腦程式碼之優化方法、優化系統及應用其之電子裝置 Download PDF

Info

Publication number
TWI755112B
TWI755112B TW109136869A TW109136869A TWI755112B TW I755112 B TWI755112 B TW I755112B TW 109136869 A TW109136869 A TW 109136869A TW 109136869 A TW109136869 A TW 109136869A TW I755112 B TWI755112 B TW I755112B
Authority
TW
Taiwan
Prior art keywords
optimizers
branch paths
instruction
feature vector
computer program
Prior art date
Application number
TW109136869A
Other languages
English (en)
Other versions
TW202217552A (zh
Inventor
張家榮
蘇意喬
謝天元
游逸平
Original Assignee
財團法人工業技術研究院
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 財團法人工業技術研究院 filed Critical 財團法人工業技術研究院
Priority to TW109136869A priority Critical patent/TWI755112B/zh
Priority to US17/109,788 priority patent/US20220129254A1/en
Priority to EP21152851.8A priority patent/EP3989058A1/en
Application granted granted Critical
Publication of TWI755112B publication Critical patent/TWI755112B/zh
Publication of TW202217552A publication Critical patent/TW202217552A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一種電腦程式碼之優化方法、優化系統及應用其之電子裝置。電腦程式碼之優化方法包括以下步驟。提供數個優化器。各個優化器具有數個分支路徑。於各個分支路徑上設置一個計數器。當此些優化器運行經過此些分支路徑時,增加此些分支路徑所設置之此些計數器的數值。透過此些優化器對電腦程式碼進行編譯。取得此些計數器之數個計數值。集合此些計數值,以獲得電腦程式碼之一特徵向量。輸入特徵向量至一機器學習模型,以獲得適用於電腦程式碼之一優化器集合。

Description

電腦程式碼之優化方法、優化系統及應用其之電子裝置
本揭露是有關於一種電腦程式碼之優化方法、優化系統及應用其之電子裝置。
隨著軟體技術的發展,各式不同功能的電子裝置不斷推陳出新。在軟體開發的過程中,需要透過優化器(Optimizer)進行編譯,以清除冗餘指令與優化演算程序,達到加快處理速度的目的。
目前在程式碼編譯之優化發展領域中,已衍生數百種優化器。不同的優化器具備不同的功能。一款新開發的軟體程式可能需要選用多個優化器來進行編譯。某一優化器的優化結果並非對所有軟體程式都會受益。針對個別的軟體程式,必須尋找一組最好的優化器組合。然而,目前優化器的數量達到數十到數百種,從這些優化器去選擇適合的組合是軟體開發過程中相當難解的問題。尤其是這些優化器之間實質上會互相影響,並非單純挑選出最佳的幾個優化器進行組合即可得到最好的優化結果。
舉例來說,n種優化器中單獨採用A優化器、B優化器、C優化器對某一軟體程式無明顯優化結果。但同時採用A優化器、B優化器及C優化器的組合卻對此軟體程式就有相當好的優化結果。故n種優化器會產生2^n種組合,從這數量級獲得一個最佳優化器組合,這是一個相當複雜的問題(NP-complete problem)。
本揭露係有關於一種電腦程式碼之優化方法、優化系統及應用其之電子裝置。
根據本揭露之一實施例,提出一種電腦程式碼之優化方法。電腦程式碼之優化方法包括以下步驟。提供數個優化器。各個優化器具有數個分支路徑。於各個分支路徑上設置一個計數器。當此些優化器運行經過此些分支路徑時,增加此些分支路徑所設置之此些計數器的數值。透過此些優化器對電腦程式碼進行編譯。取得此些計數器之數個計數值。集合此些計數值,以獲得電腦程式碼之一特徵向量。輸入特徵向量至一機器學習模型,以獲得適用於電腦程式碼之一優化器集合。
根據本揭露之另一實施例,提出一種電腦程式碼之優化系統。電腦程式碼之優化系統包括一資料庫、一設置單元、一編譯單元、一取值單元、一集合單元及一機器學習分析單元。資料庫儲存數個優化器。各個優化器具有數個分支路徑。設置單元用以於各個分支路徑上設置一個計數器。當此些優化器運行經過此些分支路徑時,增加此些分支路徑所設置之此些計數器的數值。編譯單元用以透過此些優化器對電腦程式碼進行編譯。取值單元用以取得此些計數器之數個計數值。集合單元用以集合此些計數值,以獲得電腦程式碼之一特徵向量。機器學習分析單元用以輸入特徵向量至一機器學習模型,以獲得適用於電腦程式碼之一優化器集合。
根據本揭露之再一實施例,提出一種電子裝置。電子裝置包括一處理器。處理器用以執行一電腦程式碼之優化方法。優化方法包括以下步驟。提供數個優化器。各個優化器具有數個分支路徑。於各個分支路徑上設置一個計數器。當此些優化器運行經過此些分支路徑,此些分支路徑所設置之此些計數器的數值個別加1。透過此些優化器對電腦程式碼進行編譯。取得此些計數器之數個計數值。集合此些計數值,以獲得電腦程式碼之一特徵向量。輸入特徵向量至一機器學習模型,以獲得適用於電腦程式碼之一優化器集合。
為了對本揭露之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
請參照第1圖,其繪示根據一實施例之電腦程式碼(program source code)CD之優化方法的示意圖。在本實施例中,特徵抽取程序FE可以針對每一支電腦程式碼CD基於所有的優化器OP1、OP2、...的運行抽取出特徵向量FV。有了特徵向量FV後,即可利用機器學習模型MD預測出適用於該電腦程式碼CD之一優化器集合OC。機器學習模型MD例如是預先訓練好的神經網路(Neural Network, NN)模型。
電腦程式碼CD的特徵抽取程序FE極其特殊,優化器OP1、OP2、...與電腦程式碼CD之關係並不是顯而易見的,需要經過複雜的分析方法與處理,且電腦程式碼CD本身並不是線性向量結構。因此,需要經特定方法變換程式碼形式,才能使機器學習模型MD可以運用。
請參照第2圖,其繪示根據一實施例之電腦程式碼CD之優化系統100的方塊圖。優化系統100包括一資料庫110、一設置單元120、一編譯單元130、一取值單元140、一集合單元150及一機器學習分析單元160。資料庫110例如是一記憶體、一硬碟或一雲端儲存中心。設置單元120、編譯單元130、取值單元140、集合單元150及機器學習分析單元160例如是一電路、一晶片、一電路板或儲存程式碼之儲存裝置。
資料庫110儲存所有的優化器OP1、OP2、...。設置單元120、編譯單元130、取值單元140及集合單元150用以執行上述之特徵抽取程序FE,以抽取出特徵向量FV。有了特徵向量FV後,機器學習分析單元160即可利用機器學習模型MD預測出適用於該電腦程式碼CD之優化器集合OC。以下更透過一流程圖詳細說明上述各個元件之運作。
請參照第2圖及第3圖,第3圖繪示根據一實施例之電腦程式碼CD之優化方法的流程圖。本實施例之電腦程式碼CD之優化方法也可以運行於一電子裝置之處理器中。以下係搭配第2圖之優化系統100來說明第3圖之優化方法。在第3圖之步驟S110中,資料庫110提供所有的優化器OP1、OP2、...。每一優化器OP1、OP2、...本身也是一支軟體程式。因此,優化器OP1、OP2、...內可能含有if-else指令、switch case指令、while loop指令、for loop指令、do loop指令、分支指令、迴圈指令或其組合所形成之分支路徑。分支路徑例如是一二分支路徑、一二分支以上路徑或迴圈路徑。上述指令均為條件式指令。舉例來說,請參照第4圖,其示例說明if-else指令CM4之一例。如第4圖所示,離開節點N40後,進入if-else指令CM4。滿足條件CD4時,沿分支路徑PH41進入節點N41;不滿足條件CD4時,沿分支路徑PH42進入節點N42。
請參照第5圖,其示例說明switch case指令CM5之一例。如第5圖所示,離開節點N50後,進入switch case指令CM5。情況分類CD5例如是列舉三種情況S1、S2、S3,屬於情況S1時,沿分支路徑PH51進入節點N51;屬於情況S2時,沿分支路徑PH52進入節點N52;屬於情況S3時,沿分支路徑PH53進入節點N53。在一實施例中,情況分類也可能是兩種或四種以上的情況。
請參照第6圖,其示例說明while loop指令CM6之一例。如第6圖所示,離開節點N60後,進入while loop指令CM6。滿足條件CD6時,沿分支路徑PH61進入節點N61後執行某一動作A6;不滿足條件CD6時,沿分支路徑PH62進入節點N62,以離開迴圈。for loop指令類似於while loop指令CM6,在此不再重複敘述。
請參照第7圖,其示例說明do loop指令CM7之一例。如第7圖所示,離開節點N70後,進入do loop指令CM7。執行一次動作A7後,判斷是否滿足條件CD7。滿足條件CD7時,沿分支路徑PH71進入節點N71,以離開迴圈;不滿足條件CD7時,沿分支路徑PH72進入節點N72,以再次執行動作A7。
接著,在第3圖之步驟S120中,設置單元120於這些優化器OP1、OP2、...之各個分支路徑PH1、PH2、…上設置一個計數器C1、C2、…。請參照第8圖,其示例說明步驟S120之一例。採用所有的優化器OP1、OP2、...時,在編譯程序的前端(front-end)與後端(back-end)之間排列了所有的優化器OP1、OP2、OP3、OP4、...。優化器OP1、OP2、OP3、OP4、...可能含有if-else指令、switch case指令、while loop指令、for loop指令及do loop指令而形成分支路徑PH1、PH2、…。分支路徑PH1、PH2、…例如是係二分支路徑或三分支路徑。在此步驟中,設置單元120在所有優化器之所有分支路徑PH1、PH2、…均設置計數器C1、C2、…。
接著,在第3圖之步驟S130中,編譯單元130透過這些優化器OP1、OP2、...對電腦程式碼CD進行編譯。在編譯過程中,只要優化器OP1、OP2、...運行經過分支路徑PH1、PH2、…,該分支路徑PH1、PH2、…上的計數器C1、C2、…就會將計數值V1、V2、…增加(例如是加1、加2)。
然後,在第3圖之步驟S140中,集合單元150集合這些計數值V1、V2、…,以獲得特徵向量FV。這計數值V1、V2、…係按照一預定順序編排成電腦程式碼CD之特徵向量FV。
舉例來說,下表一示例說明這些優化器OP1、OP2、...對某一電腦程式碼CD進行編譯後,所獲得的特徵向量FV。
計數值 V1 V2 V3 V4 V5 V6 V7
特徵向量FV 0 12 3 7 2 5 6
表一
接著,在第3圖之步驟S150中,如第1圖所示,機器學習分析單元160輸入特徵向量FV至機器學習模型MD,以獲得適用於該電腦程式碼CD之優化器集合OC。舉例來說,優化器集合OC可能列示出適合的優化器為優化器OP1、優化器OP2、優化器OP4。
透過上述實施例,針對每一支電腦程式碼CD可以基於所有的優化器OP1、OP2、...的運行抽取出特徵向量FV。特徵向量FV代表著每一支電腦程式碼CD利用各個優化器OP1、OP2、...進行編譯時的運作情況。也就是說,特徵向量FV同時涵蓋了電腦程式碼CD的組成資訊、優化器OP1、OP2、...的組成資訊。
有了特徵向量FV後,即可利用機器學習模型MD預測出適用於該電腦程式碼CD之優化器集合OC。本實施例不需要倚靠編譯器專家對於優化器的認識,即可自動根據不同的優化器OP1、OP2、...,抽取出特徵向量FV,使其具泛化能力。
綜上所述,雖然本揭露已以實施例揭露如上,然其並非用以限定本揭露。本揭露所屬技術領域中具有通常知識者,在不脫離本揭露之精神和範圍內,當可作各種之更動與潤飾。因此,本揭露之保護範圍當視後附之申請專利範圍所界定者為準。
100:優化系統 110:資料庫 120:設置單元 130:編譯單元 140:取值單元 150:集合單元 160:機器學習分析單元 A6,A7:動作 C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15:計數器 CD:電腦程式碼 CD4,CD6,CD7:條件 CD5:情況分類 CM4:if-else指令 CM5:switch case指令 CM6:while loop指令 CM7:do loop指令 FE:特徵抽取程序 FV:特徵向量 MD:機器學習模型 N40,N41,N42,N50,N51,N52,N53,N60,N61,N62,N70,N71,N72:節點 OP1,OP2,OP3,OP4,…:優化器 OC:優化器集合 PH1,PH2,PH41,PH42,PH51,PH52,PH53,PH61,PH62,PH71,PH72:分支路徑 S1,S2,S3:情況 S110,S120,S130,S140,S150,S160:步驟 V1,V2,…:計數值
第1圖繪示根據一實施例之電腦程式碼(source code)之優化方法的示意圖。 第2圖繪示根據一實施例之電腦程式碼之優化系統的方塊圖。 第3圖繪示根據一實施例之電腦程式碼之優化方法的流程圖。 第4圖示例說明if-else指令之一例。 第5圖示例說明switch case指令之一例。 第6圖示例說明while loop指令之一例。 第7圖示例說明do loop指令之一例。 第8圖示例說明步驟S120之一例。
CD:電腦程式碼
FE:特徵抽取程序
FV:特徵向量
MD:機器學習模型
OP1,OP2:優化器
OC:優化器集合

Claims (18)

  1. 一種電腦程式碼之優化方法,包括: 提供複數個優化器,各該優化器具有複數個分支路徑; 於各該分支路徑上設置一個計數器,當該些優化器運行經過該些分支路徑時,增加該些分支路徑所設置之該些計數器的數值; 透過該些優化器對該電腦程式碼進行編譯;取得該些計數器之複數個計數值; 集合該些計數值,以獲得該電腦程式碼之一特徵向量;以及 輸入該特徵向量至一機器學習模型,以獲得適用於該電腦程式碼之一優化器集合。
  2. 如請求項1所述之電腦程式碼之優化方法,其中該些優化器之該些分支路徑的全部均被設置該些計數器。
  3. 如請求項1所述之電腦程式碼之優化方法,其中該些分支路徑包括if-else指令、switch case指令、while loop指令、for loop指令、do loop指令、分支指令、迴圈指令或其組合之路徑。
  4. 如請求項1所述之電腦程式碼之優化方法,其中各該分支路徑係為一二分支路徑、一二分支以上路徑或迴圈路徑。
  5. 如請求項1所述之電腦程式碼之優化方法,其中該些計數值係按照一預定順序編排成該特徵向量。
  6. 如請求項1所述之電腦程式碼之優化方法,其中該特徵向量係為一維向量。
  7. 一種電腦程式碼之優化系統,包括: 一資料庫,儲存複數個優化器,各該優化器具有複數個分支路徑; 一設置單元,用以於各該分支路徑上設置一個計數器,當該些優化器運行經過該些分支路徑時,增加該些分支路徑所設置之該些計數器的數值; 一編譯單元,用以透過該些優化器對該電腦程式碼進行編譯; 一取值單元,用以取得該些計數器之複數個計數值; 一集合單元,用以集合該些計數值,以獲得該電腦程式碼之一特徵向量;以及 一機器學習分析單元,用以輸入該特徵向量至一機器學習模型,以獲得適用於該電腦程式碼之一優化器集合。
  8. 如請求項7所述之電腦程式碼之優化系統,其中該設置單元將該些優化器之該些分支路徑的全部均設置該些計數器。
  9. 如請求項7所述之電腦程式碼之優化系統,其中該些分支路徑包括if-else指令、switch case指令、while loop指令、for loop指令、do loop指令、分支指令、迴圈指令或其組合之路徑。
  10. 如請求項7所述之電腦程式碼之優化系統,其中各該分支路徑係為一二分支路徑或一二分支以上路徑或迴圈路徑。
  11. 如請求項7所述之電腦程式碼之優化系統,其中該些計數值係按照一預定順序編排成該特徵向量。
  12. 如請求項7所述之電腦程式碼之優化系統,其中該特徵向量係為一維向量。
  13. 一種電子裝置,包括一處理器,該處理器用以執行一電腦程式碼之優化方法,該優化方法包括: 提供複數個優化器,各該優化器具有複數個分支路徑; 於各該分支路徑上設置一個計數器,當該些優化器運行經過該些分支路徑,該些分支路徑所設置之該些計數器的數值個別加1; 透過該些優化器對該電腦程式碼進行編譯; 取得該些計數器之複數個計數值; 集合該些計數值,以獲得該電腦程式碼之一特徵向量;以及 輸入該特徵向量至一機器學習模型,以獲得適用於該電腦程式碼之一優化器集合。
  14. 如請求項13所述之電子裝置,其中該些優化器之該些分支路徑的全部均被設置該些計數器。
  15. 如請求項13所述之電子裝置,其中該些分支路徑包括if-else指令、switch case指令、while loop指令、for loop指令、do loop指令、分支指令、迴圈指令或其組合之路徑。
  16. 如請求項13所述之電子裝置,其中各該分支路徑係為一二分支路徑或一二分支以上路徑或迴圈路徑。
  17. 如請求項13所述之電子裝置,其中該些計數值係按照一預定順序編排成該特徵向量。
  18. 如請求項13所述之電子裝置,其中該特徵向量係為一維向量。
TW109136869A 2020-10-23 2020-10-23 電腦程式碼之優化方法、優化系統及應用其之電子裝置 TWI755112B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW109136869A TWI755112B (zh) 2020-10-23 2020-10-23 電腦程式碼之優化方法、優化系統及應用其之電子裝置
US17/109,788 US20220129254A1 (en) 2020-10-23 2020-12-02 Optimization method, optimization system for computer programming code and electronic device using the same
EP21152851.8A EP3989058A1 (en) 2020-10-23 2021-01-21 Optimization method, optimization system for computer programming code and electronic device using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW109136869A TWI755112B (zh) 2020-10-23 2020-10-23 電腦程式碼之優化方法、優化系統及應用其之電子裝置

Publications (2)

Publication Number Publication Date
TWI755112B true TWI755112B (zh) 2022-02-11
TW202217552A TW202217552A (zh) 2022-05-01

Family

ID=74205697

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109136869A TWI755112B (zh) 2020-10-23 2020-10-23 電腦程式碼之優化方法、優化系統及應用其之電子裝置

Country Status (3)

Country Link
US (1) US20220129254A1 (zh)
EP (1) EP3989058A1 (zh)
TW (1) TWI755112B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113342346B (zh) * 2021-05-18 2022-03-25 北京百度网讯科技有限公司 深度学习框架的算子注册方法、装置、设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200537379A (en) * 2004-01-14 2005-11-16 Commissariat Energie Atomique A system for automatically generating optimized code
TW200839513A (en) * 2006-11-22 2008-10-01 Transitive Ltd Memory consistency protection in a multiprocessor computing system
TW201239765A (en) * 2011-01-25 2012-10-01 Micron Technology Inc State grouping for element utilization
US9274771B1 (en) * 2014-09-22 2016-03-01 Oracle International Corporation Automated adaptive compiler optimization
TW201935264A (zh) * 2018-02-08 2019-09-01 廣達電腦股份有限公司 電腦系統、編程方法及非暫態電腦可讀取媒體
TW202013178A (zh) * 2018-09-17 2020-04-01 美商雷神公司 動態分段位址空間佈局隨機化技術

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901990B1 (en) * 2017-06-30 2021-01-26 Tableau Software, Inc. Elimination of common subexpressions in complex database queries

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200537379A (en) * 2004-01-14 2005-11-16 Commissariat Energie Atomique A system for automatically generating optimized code
TW200839513A (en) * 2006-11-22 2008-10-01 Transitive Ltd Memory consistency protection in a multiprocessor computing system
TW201239765A (en) * 2011-01-25 2012-10-01 Micron Technology Inc State grouping for element utilization
US9274771B1 (en) * 2014-09-22 2016-03-01 Oracle International Corporation Automated adaptive compiler optimization
TW201935264A (zh) * 2018-02-08 2019-09-01 廣達電腦股份有限公司 電腦系統、編程方法及非暫態電腦可讀取媒體
TW202013178A (zh) * 2018-09-17 2020-04-01 美商雷神公司 動態分段位址空間佈局隨機化技術

Also Published As

Publication number Publication date
US20220129254A1 (en) 2022-04-28
EP3989058A1 (en) 2022-04-27
TW202217552A (zh) 2022-05-01

Similar Documents

Publication Publication Date Title
Shang et al. Democratizing data science through interactive curation of ml pipelines
CN105389402B (zh) 一种面向大数据的etl方法和装置
Ziaee A heuristic algorithm for solving flexible job shop scheduling problem
Cota et al. Bi‐criteria formulation for green scheduling with unrelated parallel machines with sequence‐dependent setup times
JP2017517082A (ja) 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ
Meyer et al. 3-SAT on CUDA: Towards a massively parallel SAT solver
TWI755112B (zh) 電腦程式碼之優化方法、優化系統及應用其之電子裝置
Li et al. Fusion-catalyzed pruning for optimizing deep learning on intelligent edge devices
CN109815267A (zh) 数据建模中特征的分箱优化方法及系统、存储介质及终端
US20190220778A1 (en) Information processing apparatus, information processing method, and computer readable medium
Atanassov et al. Comparative analysis of case based reasoning software frameworks jCOLIBRI and myCBR
La Cava et al. Semantic variation operators for multidimensional genetic programming
Herodotou et al. A What-if Engine for Cost-based MapReduce Optimization.
CN110399182B (zh) 一种cuda线程放置优化方法
JP5682081B2 (ja) インテリジェント・アーキテクチャ・クリエータ
Jeet et al. Software architecture recovery using genetic black hole algorithm
Liou et al. Genetic improvement of GPU code
CN110377525B (zh) 一种基于运行时特征和机器学习的并行程序性能预测系统
Mottaghi et al. Test suite reduction using data mining techniques: A review article
Wu et al. Local search for DAG scheduling and task assignment
Kashnikov et al. Compiler optimizations: Machine learning versus o3
US20170108907A1 (en) Design space reduction in processor stressmark generation
Rafael et al. Using an abstraction of the supervisor to solve a planning problem in manufacturing systems
Armstrong et al. An investigation of parallel memetic algorithms for VLSI circuit partitioning on multi-core computers
Kralev An analysis of a recursive and an iterative algorithm for generating permutations modified for travelling salesman problem