1. 程式人生 > >Tecnomatix Plant Simulation 14 學習之路(二)

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