Tecnomatix Plant Simulation 14 學習之路(二)
本篇部落格主要介紹基礎遺傳演算法的實現,例子參考部落格一推薦的周金平老師教材第三章,這裡做簡單介紹
問題描述:
將n個裝置(M1,…Mn)放置到n個位置(A,B…)上,其中每個位置上能且僅能放置一臺裝置,已知n個裝置兩兩之間的物料搬運量大小W(i, j),以及固定的n個位置佈局,並且每個位置之間的距離D(i, j)知曉。求將n個作業單位分配到n個工作地點,使得總的物流量最小。即使得下式最小(裝置搬運過程為順序執行,例如某次已經存在M1—M2,則不考慮M2—M1)
裝置物料搬運量從至表
位置佈局的距離從至表
Plant Simmulation平臺建模:
step1
首先,在軟體平臺搭建以下模型
step2
定義全域性變數Number_Of_Machine,裝置數量,八臺
PartNo(記錄後續模擬模型過程中搬運的零件個數),也就是搬運的物料數目
X_pos_init, Y_pos_init 定義產生裝置及快取座標。
step3
建立從至表資料,固定生成裝置及快取初始位置
(本圖建立時候只有表格對角線以右部分,左下角為程式建立,下篇部落格會對該程式說明,這裡只是介紹步驟)
step4
從至表資料校核,設定方法在InitPartsTable中完成,完整程式碼如下:
其中包括了刪除之前緩衝物件以及建立新物件的操作。
step5
定義機器序列表(預設時2、3列為空值,只設置了第一列機器名)
step6
定義零件加工順序表,如圖所示,從Mus資料夾中把Entity物件複製到Models資料夾目錄下,改名為Parts
在Source設定如圖所示
在PartsTable設定如下,新增兩列_From和_To,並修改資料型別(表格中具體內容由程式碼生成,下篇部落格會介紹到)
在Parts下新建_From和_To變數,如圖所示
step7
初始化設定,在Init設定,特別地,如果未設定GA,請註釋第5至第7行程式碼(使用 '/*.....*/')
step8
調入策略和離開策略,操作如圖所示
其中,Leave的策略已經載入至InitPartsTable中,程式碼為:Machine.ExitCtrl := &Leave。
通過step1-8,進行模擬模擬畫面呈現如下,則表示模型順利建成:
GA工具的運用:
由工作模型可知,該序列為數值型,例如54321876就是表示從左開始每臺裝置依次佈置到A…H工作地去
在GASequence設定如下圖:
設定資料型別為整型,定義完成資料型別後,即可將Init方法的第5行至第7行註釋釋放。
在GAwizard設定如下:
step1
如圖所示,勾選“配置方法”,點選編輯,編寫程式碼
step2
如下圖所示,在適應度一欄勾選按表,點選開啟,在表格第一列輸入HandlingCost,加權值為1
step3
點選物件,選擇GA控制元件,再點選任務,輸入絕對地址'.Models.A.GASequence'
step4
評估中勾選生成HTML報告,完成GAwizard設定。此後,Reset,執行GAwizard
最終效果如下:
可以看到,實際結果跟教材略有出入(也可能是我哪裡不小心弄錯了??)
寫到最後,先介紹幾個常見的小技巧
提示輸入: ctrl + space(空格),注意要在美式鍵盤下才能使用,或者取消ctrl + space的輸入法切換功能即可
物件重新命名 :F2
方法執行:F5
方法單步執行: F11
刪除物件:delete