女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

混合算法求解作業(yè)車間調(diào)度問題代碼解讀+完整JAVA代碼

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-24 16:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前兩篇文章中,我們介紹了FJSP問題,并梳理了一遍HA算法。這一篇文章對小編實現(xiàn)的(很亂很爛的)代碼進行簡單解讀。

往期回顧:

種群進化+鄰域搜索的混合算法(GA+TS)求解作業(yè)車間調(diào)度問題(JSP)-算法介紹

混合算法(GA+TS)求解作業(yè)車間調(diào)度問題(JSP)-禁忌搜索部分

代碼下載請關(guān)注公眾號,后臺回復【FJSPHA】即可,不包括【】

代碼框架

代碼分為5個包,第一部分Data為用到的各類結(jié)構(gòu),第二部分GA為GA部分+第一個TS,第三部分主函數(shù),第四、五部分是兩個TS。

算例放置在input文件夾中,這里準備了Mk系列算例,Kacem系列算例和論文中的簡單算例test.txt。

Main

算例輸入:

Main中還有一個輸出為CSV的函數(shù),需要一個jar包,已經(jīng)放在下載鏈接里了,不需要的同學也可以刪除。

Data

一堆亂七八糟的結(jié)構(gòu)。這里簡單講一下Solution類和Graph類。

Solution類中包含多個print函數(shù),比較重要的包括繪制甘特圖以及check解是否合法。

operationMatrix是解的主題,存放某個工件的某道工序的開始、結(jié)束時間,所在加工機器。

Graph類表示析取圖。nodeList是每臺機器上的node。其中起始點、終止點我單獨提取出來設(shè)置了兩個類。Graph中還包含了獲取critical path的DFS和update starting time & end time的Bellman算法。

GA

MyHybridAlgorithm類是GA的主函數(shù)。小編在實現(xiàn)的時候進行了多種測試,比如迭代的noImprove次數(shù)達到limit時進行擾動:

選擇哪種Tabu:

讀者在閱讀的時候請自己注意。

算法相關(guān)的參數(shù)我都做了初始化,請自行查找修改:

交叉、變異等操作包含在ChromosomeOperation類中,計算適應度的函數(shù)在CaculateFitness類中,TabuSearch1類是基于編碼的tabu,這里都不多展示了。

NeighbourSearch

這個包包含的是基于析取圖的tabu。NeighbourAlgorithms類相當于Main,包含解轉(zhuǎn)化為圖的函數(shù):

TabuSearch2類為tabu主函數(shù)。NeighbourGraph類存放析取圖鄰域搜索產(chǎn)生的解。

DeleteNeighbourGraph類為析取圖中暫時去掉某個點后的情況,PM、PJ、SM、SJ代表precede、succeed、machine、job四條邊對應的點,deleteNode為刪去的點。

其中還有findLandR位置的二分查找函數(shù),insert時的估值函數(shù):

NeighbourSearch2

這個包為第三個基于甘特圖的tabu。

RTS類為tabu的主函數(shù)。解通過:ArrayList<ArrayList<Operation>> 的形式表示。

replan函數(shù)中包含了在甘特圖上進行swap操作后更新解的方法,有詳細注釋:

總結(jié)

到這里已經(jīng)大致梳理了一遍代碼,但其中還有很多細節(jié)沒有講到,包括很多東西實現(xiàn)的不好,歡迎隨時和我交流。

由于是自己研究時寫的代碼,其中很多東西會比較亂,但是代碼中做了很多注解,仔細閱讀應該能看得懂的!

下載的壓縮包里包括我學習過程中看過的大部分文獻,包括主要參考的文獻,大家可以進一步閱讀研究。

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4709

    瀏覽量

    95332
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2989

    瀏覽量

    109527
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70671
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    HarmonyOS AI輔助編程工具(CodeGenie)代碼測試

    放置于方法名稱上或框選完整的待測試方法代碼塊,右鍵選擇CodeGenie > Generate UT,開始生成單元測試用例。 說明 最多支持解讀20000字符以內(nèi)的代碼片段。Ar
    發(fā)表于 07-14 17:33

    【經(jīng)驗分享】玩轉(zhuǎn)FPGA串口通信:從“幻覺調(diào)試”到代碼解析

    FPGA開發(fā),思路先行!玩FPGA板子,讀代碼是基本功!尤其對從C語言轉(zhuǎn)戰(zhàn)FPGA的“寶貝們”來說,適應流水線(pipeline)編程可能需要點時間。上篇點燈代碼解讀了基礎(chǔ),而如果能親手寫出串口通訊
    的頭像 發(fā)表于 06-05 08:05 ?289次閱讀
    【經(jīng)驗分享】玩轉(zhuǎn)FPGA串口通信:從“幻覺調(diào)試”到<b class='flag-5'>代碼</b>解析

    OLED代碼分享

    OLED代碼
    發(fā)表于 04-29 17:04 ?1次下載

    Java開發(fā)者必備的效率工具——Perforce JRebel是什么?為什么很多Java開發(fā)者在用?

    Perforce JRebel是一款Java開發(fā)效率工具,旨在幫助java開發(fā)人員更快地編寫更好的應用程序。JRebel可即時重新加載對代碼的修改,無需重啟或重新部署應用程序,就能讓開發(fā)者即時看到
    的頭像 發(fā)表于 04-27 13:44 ?255次閱讀
    <b class='flag-5'>Java</b>開發(fā)者必備的效率工具——Perforce JRebel是什么?為什么很多<b class='flag-5'>Java</b>開發(fā)者在用?

    18個常用的強化學習算法整理:從基礎(chǔ)方法到高級模型的理論技術(shù)與代碼實現(xiàn)

    本來轉(zhuǎn)自:DeepHubIMBA本文系統(tǒng)講解從基本強化學習方法到高級技術(shù)(如PPO、A3C、PlaNet等)的實現(xiàn)原理與編碼過程,旨在通過理論結(jié)合代碼的方式,構(gòu)建對強化學習算法的全面理解。為確保內(nèi)容
    的頭像 發(fā)表于 04-23 13:22 ?400次閱讀
    18個常用的強化學習<b class='flag-5'>算法</b>整理:從基礎(chǔ)方法到高級模型的理論技術(shù)與<b class='flag-5'>代碼</b>實現(xiàn)

    沐渥科技:氮氣柜故障代碼解讀及處理建議

    氮氣柜的故障代碼因品牌和型號不同而有所差異,但通常涵蓋一些常見問題。以下是沐渥科技對故障代碼解讀及處理建議:一、代碼解讀和原因分析1、E1
    的頭像 發(fā)表于 03-20 13:18 ?591次閱讀
    沐渥科技:氮氣柜故障<b class='flag-5'>代碼</b><b class='flag-5'>解讀</b>及處理建議

    提取LSM6DSV16X內(nèi)置低功耗融合算法輸出的四元數(shù)后,轉(zhuǎn)換成歐拉角后遇到一個問題求解

    各位大佬好,在提取LSM6DSV16X內(nèi)置低功耗融合算法輸出的四元數(shù)后,轉(zhuǎn)換成歐拉角后遇到一個問題,當Y軸與重力方向平行時,輸出的角度與慣性測量單元繞自身Y軸轉(zhuǎn)過的角度對應不上,且抖動增加,請問有什么解決方法嗎?
    發(fā)表于 03-14 06:55

    代碼與傳統(tǒng)開發(fā)的區(qū)別 低代碼與無代碼開發(fā)的區(qū)別

    在軟件開發(fā)領(lǐng)域,傳統(tǒng)開發(fā)、低代碼開發(fā)以及無代碼開發(fā)是三種不同的開發(fā)方式,每種方式都有其獨特的優(yōu)勢和適用場景。 一、低代碼開發(fā)與傳統(tǒng)開發(fā)的區(qū)別 低代碼開發(fā)是一種新興的應用程序開發(fā)方法,旨
    的頭像 發(fā)表于 01-31 10:48 ?614次閱讀

    村田電容標簽材質(zhì)代碼如何看?

    村田電容的標簽上通常包含一系列代碼,用以表示電容的具體參數(shù)和特性。以下是如何解讀村田電容標簽上的材質(zhì)代碼的步驟: ?一、識別基本型號 村田電容的型號通常以字母開頭,如GRM、GR3、GRJ等,這些
    的頭像 發(fā)表于 01-13 14:14 ?808次閱讀

    Java代碼之美,從遵循樣式規(guī)范開始

    作者:京東零售 劉仲偉 在軟件開發(fā)的世界里,代碼不僅是程序的基石,更是程序員交流的通用語言。而Java,作為一門廣泛應用于企業(yè)級應用的編程語言,其代碼的可讀性和一致性對于項目的長期維護和團隊協(xié)作
    的頭像 發(fā)表于 11-27 11:42 ?572次閱讀
    <b class='flag-5'>Java</b><b class='flag-5'>代碼</b>之美,從遵循樣式規(guī)范開始

    對比Python與Java編程語言

    Python與Java都是目前非常流行的編程語言,它們各有其獨特的優(yōu)勢和適用場景。以下是對這兩種編程語言的對比: 一、語法和易用性 Python 語法簡潔,代碼更易讀,非常適合初學者。 動態(tài)類型系統(tǒng)
    的頭像 發(fā)表于 11-15 09:31 ?1062次閱讀

    代碼整潔之道-大師眼中的整潔代碼是什么樣

    幾個月前寫了一篇文章“如何寫出難以維護的代碼”,從中能大概了解到不好維護的代碼是什么樣,有哪些壞味道,那肯定有人會反問,難以維護的代碼見的太多了,也知道長什么樣,但是對于好維護的代碼
    的頭像 發(fā)表于 09-09 16:30 ?647次閱讀
    <b class='flag-5'>代碼</b>整潔之道-大師眼中的整潔<b class='flag-5'>代碼</b>是什么樣

    java反編譯能拿到源碼嗎

    Java反編譯是一種將編譯后的Java字節(jié)碼(.class文件)轉(zhuǎn)換回Java代碼的過程。雖然反編譯可以幫助理解代碼的邏輯和結(jié)構(gòu),但它并不
    的頭像 發(fā)表于 09-02 11:03 ?1792次閱讀

    java反編譯的代碼可以修改么

    Java反編譯是一種將編譯后的Java字節(jié)碼(.class文件)轉(zhuǎn)換回源代碼的過程。反編譯后的代碼可以進行修改,但是需要注意,反編譯代碼的質(zhì)
    的頭像 發(fā)表于 09-02 11:00 ?1271次閱讀

    ida反編譯出來代碼能直接用嗎

    IDA反編譯出來的代碼通常 不能直接使用 ,這主要基于以下幾個方面的原因: 一、代碼的不完整性 IDA反編譯生成的代碼可能缺少原始源代碼中的
    的頭像 發(fā)表于 09-02 10:55 ?1435次閱讀