供应链优化岗鲍进1、什么是仿真?系统仿真时现代企业科学管理的技术之一,是将对象系统模型化,把模型作为实验装置,用来分析已存在的系统或者计划系统的一种技术。系统仿真时工程师、经理人和决策人对有关操作、流程、或是动态系统的方案进行试验、评估、以及视觉化的工具。2、什么是模型?为解决特定问题,对真实系统进行抽象和简化的产物。它只包含真实系统中,解决问题所必需的元素Flexsim软件主窗口布局Flexsim软件主窗口由下面五部分构成菜单工具栏对象库模型视图仿真控制栏4工具栏中常用到的按钮包括FlowItem:临时实体库Tree:打开模型树Ortho:打开模型正投影视图Persp:打开模型透视图4对象(Objects)Flexsim采用对象对实际过程中的各元素建模连接(Connections)Flexsim中通过对象之间的连接定义模型的流程方法(Methods)对象中的方法定义了模型中各对象所需要完成的作业Flexsim采用面向对象的技术大部分Flexsim对象都是FixedResource或TaskExecutor对象的子对象◦子对象拥有其父对象所有的接口和相应的功能◦用户相对比较容易很快掌握子对象的使用离散类(DiscreteObjects)◦资源类(FixedResources)Source,Queue,Processor,Sink,Combiner,Separator,MultiProcessor,Conveyor,MergeSort,FlowNode,Rack,andReservoir◦执行类(TaskExecuter)Dispatcher,Operator,Transporter,Elevator,Robot,Crane,ASRSvehicle◦网络类(Node)NetworkNode,TrafficControl◦图示类(VisualObject)VisualTool,Recorder连续类(FluidObjects)◦FluidTank,FluidGenerator,FluidTerminator,FluidMixer,FluidBlender,FluidSplitt-er,FluidPipe,FluidProcessor,ItemToFluid,FluidToItem,andTheTickerFixedResource类对象一般是离散仿真模型中的主干对象此类对象决定了模型的流程TaskExecuter对象可从FixedResource对象中获取并执行任务,如物料搬运或生产操作等。一个TaskExecuter对象可以向其他TaskExecutor对象指派任务,或者管理模型中所有的TaskExecuters对象。TaskExecuters对象不参与模型中的流程指派。NetworkNode对象一般用来设定TaskExecutor对象的行动路线NetworkNoadeTrafficControl图示类对象可用在仿真模型中显示各种信息、标识、图片或图表等VisualTool和Recorder对象可用来提高仿真模型的直观感,同时可用来实时显示和搜集模型的输出数据连续类的对象主要是用于设计具有流体类的系统仿真,但它又不仅仅局限于流体,事实上它能够仿真的具有连续属性的事件,如测量重量、容量的变化。作为连续类的11个对象中提供了2个ItemToFluid、FluidToItem具有连续与离散之间接合功能的对象。临时实体指模型中存在临时产生的对象临时实体可用来表示生产或服务中的原料、产品或产品集,如零件、部件、托盘、容器等;也可以是任务执行者临时实体可点击工具栏按钮Flowitem定义可对每个临时实体定义对象类别(Itemtype)Flexsim模型中的对象之间是通过端口来连接的三种类型的端口◦输入端口(inputports)FixedResource之间的连接◦输出端口(outputports)FixedResource之间的连接◦中心端口(centerports)连接TaskExecuter和FixedResource按下“s”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者“s”连接仅用于中心端口之间的连接(即连接TaskExecuter和FixedResource)“s”连接用“w”取消(按下“w”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者)按下“a”键的同时用鼠标从一个对象拖拉到另一个对象上以连接二者“a”连接用于除中心端口之外的所有其他的连接“a”连接用“q”取消注:a连接是有方向的,而s连接是没有方向的方法是用来完成一项任务的一系列规则集好的方法应是可以重复使用的Flexsim采用一系列方法集来完成所建模型的作业ArrivalMethod◦DetermineshowandwhenFlowItemsEnterthemodelTriggerMethod◦Determineswhat,where,andwhentoassigninformationtoFlowItemsFlowMethod◦Determineshow,where,andwhentomoveFlowItemsthroughthemodelNavigationMethod◦Modelnavigation,andflythroughFlowItemBinMethod◦DefinestheFlowItemCharacteristicsTaskExecuterMoveMethod◦Derterminswho,andhowFlowItemsmovefromoneFixedResourcetoanother1构建模型布局2定义对象流程3编辑对象参数4运行仿真模型5分析仿真结果22生产线同时生产三种产品,然后被送到监测车间的缓存区。检测车间有三台监测系统分别对这三种产品进行检测后,通过各自的传送带将产品运输出去2223产品到达检测车间的时间服从均值为20,方差为2的正态分布到达检测车间的产品类别(1,2,3)服从均匀分布缓存区容量为25件产品传送带传输速度为1m/s2324从对象库中拖放所需的对象到建模视图中242525这里的连线都是用a连接26定义产品的流出设置缓存区参数设置检测设备参数2627双击Source对象,打开其参数对话框2728从Inter-Arrivaltime下拉框中选择StatisticalDistribution2829修改选项的默认参数◦点击Template按钮◦将其中蓝色的exponential(0,20,1)改为normal(20,2,1)。即为服从均值为20,方差为2的正态分布2930选择SourceTriggers选项卡,在OnCreation下拉框中选择SetItemtypeandColor来改变产品类型和颜色使用默认值即可,即为duniform(1,3)服从1到3的均匀分布。3031双击Queue,其参数对话框将会出现将MaximumContent对应值改为25.点击Apply确认3132转到Flow选项卡,在“Output”框中,选择“SendToPort”下拉框中的“ByItemtype(direct)”选项依次点击Apply和OK按钮,关闭Queue对象的参数对话框32输送线的默认速度是1m/s,故不需要重设33双击第一个Processor对象在参数对话框“ProcessTime”下拉框中选择“StatisticalDistribution”选项将函数参数中由默认值10改为30同样设置其他两个Processor对象3334重置模型运行仿真◦注:如果编码中使用c++代码需要先进行编译,点击Compile按钮3435现在模型视图处于由上到下的垂直投影图中,该投影图在建模时经常使用,若在模型显示方面经常使用透视图。选择工具栏中的Persp按钮可打开一个新的透视图3536鼠标右键单击对象,从弹出菜单选择Properties,然后从属性对话框中选择Statistics选项卡Statistics选项卡中里面又包括Throughput,State,Content,Staytime四个子选项卡Throughput和State选项卡中可以动态显示对象状态的变化情况3637仿真文件编写过程中要注意经常保存仿真文件保存修改◦主窗口File菜单Save…如果需要备份可以使用另存为◦主窗口File菜单SaveModelAs…371、通过实例1,我们还需要了解的概念有:实体类型值、端口等2、在上面的实例的基础上,希望能够实现蓝色的实体走中间的处理器,怎么办(即蓝绿实体处理器交换)?在上面的基础上,我们给建立的模型中添加搬运工、货架和叉车。(讲课的时候做给大家看。课后大家可以在flexsim–help-gettingstarted里面的lesson3)将仿真所需的对象模型从对象库中拖拽到仿真视图窗口,其中包括两个Source,三个Rack,四条Conveyor,三个Combiner,一个Sink,三个Operator双击进入各个对象属性,修改对象General中实体外形,颜色,大小等连接各个实体其中用“A”连接的Source1-Conveyor1-Combiner1-Conveyor2-Combiner2-Conveyor3-Combiner3-Conveyor4-sinkSource2-Rack1Source2-Rack2Source2-Rack3Rack1-Combiner1Rack2-Combiner2Rack3-Combiner3用“S”连接Operater1-Rack1Operater2-Rack2Operater3-Rack3产生货物产生周转箱之类的容器1、生成器-source(产生货物实体)2、生成器—Trigger在时刻0的时候产生100个实体。在时刻1000的时候产生100个实体。产生9种类型的实体,且赋给各个类型实体不同的颜色3、生成器—Flow在senttoport里面编程代码,从而实现将实体类型为1、2、3,发配到货架A等,:intvalue=getitemtype(item);switch(value){case1:case2:case3:return1;case4:case5:case6:return2;case7:case8:case9:return3;default:return0;4、Rack此处勾上,起到电子标签亮灯的作用PlaceinBay和placeinLevel选择如图(三个货架的设置一致)将此处的值改为-1(负值),起到货架上的商品不会自动输出的作用在General里修改货架的颜色等因为是使用operator将货架上的货物取出,需要对货架进行设置。将此处打勾5、容器(周转箱/托盘)第一步:点击临时实体库第二步:点击“NewItem”新增一个临时实体第三步:点击“properties”,得到右边的信息框第四步:修改名称为’packinglist’第五步:点击“LableTable”第六步:如图设置参数6、Resoure-产生容器实体SourceTAB页:将Flowitemclass选为上一页中设置的新实体Basket;SourceTAB页:将Inter-Arrivaltime设置大些,案例设置为50;TriggerTAB页:在OnExit中编写代码:在容器离开发生器时,在容器上生成拣货单的labletable。代码如下页:treenodepackinglist=label(item,“packinglist”);//将当前item上的labletable“packinglist”取出intlineitems=duniform(3,12);//随机生成3至12间的随机整数settablesize(packinglist,lineitems,2);//设packinglist的行数为lingitem