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

猜你喜欢

转载自blog.csdn.net/weixin_40211315/article/details/80199863