91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

往期回顧:

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

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

代碼下載請(qǐng)關(guān)注公眾號(hào),后臺(tái)回復(fù)【FJSPHA】即可,不包括【】

代碼框架

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

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

Main

算例輸入:

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

Data

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

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

operationMatrix是解的主題,存放某個(gè)工件的某道工序的開(kāi)始、結(jié)束時(shí)間,所在加工機(jī)器。

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

GA

MyHybridAlgorithm類(lèi)是GA的主函數(shù)。小編在實(shí)現(xiàn)的時(shí)候進(jìn)行了多種測(cè)試,比如迭代的noImprove次數(shù)達(dá)到limit時(shí)進(jìn)行擾動(dòng):

選擇哪種Tabu:

讀者在閱讀的時(shí)候請(qǐng)自己注意。

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

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

NeighbourSearch

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

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

DeleteNeighbourGraph類(lèi)為析取圖中暫時(shí)去掉某個(gè)點(diǎn)后的情況,PM、PJ、SM、SJ代表precede、succeed、machine、job四條邊對(duì)應(yīng)的點(diǎn),deleteNode為刪去的點(diǎn)。

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

NeighbourSearch2

這個(gè)包為第三個(gè)基于甘特圖的tabu。

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

replan函數(shù)中包含了在甘特圖上進(jìn)行swap操作后更新解的方法,有詳細(xì)注釋?zhuān)?/p>

總結(jié)

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

由于是自己研究時(shí)寫(xiě)的代碼,其中很多東西會(huì)比較亂,但是代碼中做了很多注解,仔細(xì)閱讀應(yīng)該能看得懂的!

下載的壓縮包里包括我學(xué)習(xí)過(guò)程中看過(guò)的大部分文獻(xiàn),包括主要參考的文獻(xiàn),大家可以進(jìn)一步閱讀研究。

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

    關(guān)注

    23

    文章

    4785

    瀏覽量

    98128
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    3002

    瀏覽量

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

    關(guān)注

    30

    文章

    4971

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    普源DM858數(shù)字萬(wàn)用表故障代碼解讀與常見(jiàn)維修方案

    故障。正確解讀故障代碼并采取科學(xué)維修措施,是保障設(shè)備穩(wěn)定運(yùn)行的關(guān)鍵。 ? 一、常見(jiàn)故障代碼解讀 1. “OL”提示頻繁出現(xiàn):通常表示輸入信號(hào)超出當(dāng)前量程范圍??赡茉虬ㄐ盘?hào)幅度過(guò)大、
    的頭像 發(fā)表于 01-15 16:29 ?172次閱讀
    普源DM858數(shù)字萬(wàn)用表故障<b class='flag-5'>代碼</b><b class='flag-5'>解讀</b>與常見(jiàn)維修方案

    Arm Neoverse CPU上大代碼Java應(yīng)用的性能測(cè)試

    Java 是互聯(lián)網(wǎng)領(lǐng)域廣泛使用的編程語(yǔ)言。Java 應(yīng)用的一些特性使其性能表現(xiàn)與提前編譯的原生應(yīng)用(例如 C 程序)大相徑庭。由于 Java 字節(jié)碼無(wú)法直接在 CPU 上執(zhí)行,因此通常運(yùn)行時(shí)在
    的頭像 發(fā)表于 11-05 11:25 ?778次閱讀
    Arm Neoverse CPU上大<b class='flag-5'>代碼</b>量<b class='flag-5'>Java</b>應(yīng)用的性能測(cè)試

    Java 25正式發(fā)布,重要特性詳解(附代碼示例):靈活構(gòu)造函數(shù)體、模塊導(dǎo)入聲明、AOT方法分析等

    Java 25現(xiàn)已發(fā)布,更多新特性來(lái)了!配合Perforce JRebel,代碼修改即時(shí)生效,無(wú)需重啟服務(wù),即可實(shí)現(xiàn)“改完就看效果”。新特性+快工具,讓你的Java開(kāi)發(fā)體驗(yàn)雙倍提升!
    的頭像 發(fā)表于 10-29 13:16 ?1504次閱讀
    <b class='flag-5'>Java</b> 25正式發(fā)布,重要特性詳解(附<b class='flag-5'>代碼</b>示例):靈活構(gòu)造函數(shù)體、模塊導(dǎo)入聲明、AOT方法分析等

    外殼防護(hù)等級(jí)(IP代碼)全解讀

    什么是外殼防護(hù)等級(jí)(IP代碼)IP代碼,全稱(chēng)為“國(guó)際防護(hù)等級(jí)”,是由國(guó)際電工委員會(huì)制定的全球通用標(biāo)準(zhǔn)。這一標(biāo)準(zhǔn)旨在為電子設(shè)備外殼的防護(hù)能力提供一個(gè)清晰、統(tǒng)一的評(píng)判體系。簡(jiǎn)單來(lái)說(shuō),IP代碼就是電子設(shè)備
    的頭像 發(fā)表于 10-14 12:13 ?1273次閱讀
    外殼防護(hù)等級(jí)(IP<b class='flag-5'>代碼</b>)全<b class='flag-5'>解讀</b>

    【產(chǎn)品介紹】Altair PBS Professional HPC工作負(fù)載管理器和作業(yè)調(diào)度管理系統(tǒng)

    AltairPBSProfessional行業(yè)領(lǐng)先的HPC工作負(fù)載管理器和作業(yè)調(diào)度管理系統(tǒng)PBSProfessional是一款快速、強(qiáng)大的工作負(fù)載管理器和作業(yè)調(diào)度管理系統(tǒng),旨在提高生產(chǎn)
    的頭像 發(fā)表于 09-19 17:03 ?648次閱讀
    【產(chǎn)品介紹】Altair PBS Professional HPC工作負(fù)載管理器和<b class='flag-5'>作業(yè)</b><b class='flag-5'>調(diào)度</b>管理系統(tǒng)

    HarmonyOSAI編程智能代碼解讀

    CodeGenie > Explain Code,開(kāi)始解讀當(dāng)前代碼內(nèi)容。 說(shuō)明 最多支持解讀20000字符以內(nèi)的代碼片段。 使用該功能需先完成CodeGenie登錄授權(quán)。 本文主
    發(fā)表于 09-02 16:29

    Perforce JRebel 簡(jiǎn)介:即時(shí)加載代碼變更,加速Java應(yīng)用開(kāi)發(fā)

    Perforce JRebel 專(zhuān)為Java開(kāi)發(fā)提速而生!支持跳過(guò)構(gòu)建與重新部署,實(shí)時(shí)加載代碼變更,支持100+框架,無(wú)縫集成主流IDE與應(yīng)用服務(wù)器。
    的頭像 發(fā)表于 08-14 14:35 ?824次閱讀
    Perforce JRebel 簡(jiǎn)介:即時(shí)加載<b class='flag-5'>代碼</b>變更,加速<b class='flag-5'>Java</b>應(yīng)用開(kāi)發(fā)

    HarmonyOS AI輔助編程工具(CodeGenie)代碼智能解讀

    。 選中.ets文件或者.cpp文件中需要被解釋的代碼行或代碼片段,右鍵選擇CodeGenie > Explain Code,開(kāi)始解讀當(dāng)前代碼內(nèi)容。 說(shuō)明 ?最多支持
    發(fā)表于 07-17 17:02

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

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

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

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

    OLED代碼分享

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

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

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

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

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

    沐渥科技:氮?dú)夤窆收?b class='flag-5'>代碼解讀及處理建議

    氮?dú)夤竦墓收?b class='flag-5'>代碼因品牌和型號(hào)不同而有所差異,但通常涵蓋一些常見(jiàn)問(wèn)題。以下是沐渥科技對(duì)故障代碼解讀及處理建議:一、代碼解讀和原因分析1、E1
    的頭像 發(fā)表于 03-20 13:18 ?1251次閱讀
    沐渥科技:氮?dú)夤窆收?b class='flag-5'>代碼</b><b class='flag-5'>解讀</b>及處理建議

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

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