《建模与仿真综合性实验报告(吴增亮)》由会员分享,可在线阅读,更多相关《建模与仿真综合性实验报告(吴增亮)(37页珍藏版)》请在金锄头文库上搜索。
1、建模与仿真建模与仿真项目名称:项目名称:综合性实验报告综合性实验报告姓姓 名名:学学 号号:201231110125班班 级级:2012 级级工业工程专业(工业工程专业(1 班班)完成时间完成时间:2014 年年 12 月月指导教师指导教师:余平祥:余平祥综合性实验报告目录综合性实验报告目录1、库存系统仿真实验报告创建数据库2、库存系统仿真实验报告顾客需求处理3、库存系统仿真实验报告查库和订货处理4、库存系统仿真实验报告复杂性能指标计算五、 库存系统仿真实验报告优化库存策略六、课本实验第五题01、库存系统仿真实验报告库存系统仿真实验报告创建数据库创建数据库1 1、实验目的、实验目的学习建立 E
2、xtendSim 内置数据库学习创建表和字段学习创建记录和向数据库输入数据学习用 Data Init 模块初始化数据库数据的方法2 2、实验步骤、实验步骤打开 ExtendSim 软件,创建一个空白的新文件,另存一下,命名为inventorysim.mox 保存到自己本地电脑(文件后缀为.mox),首先先查看书本上P158 的相关描述,得知表 8-1 的内容。第一步则是要利用 ExtendSim 的内置数据库来存放数据。点击菜单栏中的 Windows-Database List 新建一个数据库列表。其中一个表命名为 input1,一个表命名为 output2,前者用于存放输入的参数,后者用于存
3、放输出的数据。如下图所示。1双击 input 表中,根据上面表 8-1 的内容输入得到下面的内容。双击 output 表,按照下面的表 8-2 的内容输入,得到的结果如下所示。以上的步骤则完成了表和字段的创建,并且也完成了数据的输入。以下步骤则在 Data Init 模块初始化数据库数据,首先点击菜单栏中的 Library-Value-Data Access-Data Init。向文件中添加一个 Data Init 模块。先点击右下角的“+/-”向其中添加两个 target。添加的结果如下所示。3 3、实验问题、实验问题2用用 DataData InitInit 模块来初始化模块来初始化 ou
4、tputoutput 表中的数据时,表中的数据时,TargetTarget datadata typetype 为什么设置为什么设置为为 DBDB cellcell?答:答:因为初始化的是数据库 output 表中一个数据单元格。用用 DataData InitInit 模块来初始化模块来初始化 outputoutput 表中的数据时,表中的数据时,InitInit atat startstart ofof 字段为什么字段为什么设置为设置为 everyevery run?run?答:答:设置 Data Init 模块,用于初始化数据库中的 output 表中的当前库存(初始化为 60)和总订货
5、成本(初始化为 0)。由于这两个数据在依此仿真完成后会发生变化,因此在下次运行开始时要初始化成初值。为什么不用为什么不用 DataData InitInit 模块初始化模块初始化 inputinput 表的数据?表的数据?答:答:数据库中的其他数据(如订货点 Little s 等)由于在仿真过程中不会发生变化,因此不需要特意初始化,只需要在建立表时,输入那些数据的初值即可。inputinput 表的数据是如何初始化的呢?表的数据是如何初始化的呢?答:答:只需要在建立表时,输入那些数据的初值即可。第一次在输入 input 表填写数据,即数据的初始化。2、库存系统仿真实验报告库存系统仿真实验报告顾
6、客需求处理顾客需求处理1 1、实验目的、实验目的学习库存系统顾客需求处理的结构建模方法学习用 Write 模块写如数据库的方法学习用 Math 模块进行公式计算的方法2 2、实验步骤实验步骤打开上次实验中保存的文件 Inventorysim.mox(这个文件要保存好,下次实验还要使用),建立处理顾客需求的模型。该模型中因为还没有添加其他的模块,所以只有 Data Init 模块。首先,向该模型中添加 Create 模块,双击打开对话框,设置其按照指数分布时间3间隔生成顾客需求实体。在该模块的对话框中,要选中 No item at start time(在开始运行时没有实体),保证第一个需求不会
7、再仿真开始时刻创建。如下图所示。其次,用 Random Number 模块来生成顾客需求量,然后用 Set 模块来创建需求实体的 DemandSize 属性,并将该需求量赋值给 DemandSize 属性。4接下来则在 Get 模块中取得需求量,利用 Math 模块用 0 减去该需求量得到需求量的值(因为用于得到库存的减少量),再使用一个 Write 模块将该负值加到当前库存上,即更新 output 表中的当前库存(Inventory Level)数据。Get 模块的设置如下图所示。Math 模块及其设置如下图所示。选择 Subtract 函数。Write 模块的设置如下图所示。5以上步骤则完
8、成了本题的相关设置。最后得到的模型截图如下所示。3 3、实验问题、实验问题本例中,用本例中,用 WriteWrite 模块写入数据库时,其对话框模块写入数据库时,其对话框 optionoption 页要做何设置?页要做何设置?答:答:option 页的设置结果如下所示。其中选择 Dissrete event-write data during run when,然后在下面选择 dataIn connector receives message。表示当离散时间仿真模型在运行时就把数据写入到数据库中,相对的数据库端口将会接收到传递归来的信息。在下面的 Other Options 中则选择输入的数据
9、被添加到目标的数据库的当中。6根据以上设置,根据以上设置,WriteWrite 模块会何时向数据库写入数据?模块会何时向数据库写入数据?答:答:根据上面的结果可以知道当离散时间仿真模型在运行时就把数据写入到数据库中,相对的数据库端口将会接收到传递归来的信息。也就是说,Write 模块会在端口接收到数据时向数据库写入数据。根据以上设置,根据以上设置,WriteWrite 模块会如何向数据库写入数据,是替换还是累加?模块会如何向数据库写入数据,是替换还是累加?答:答:根据实验的原理,是用 Math 模块用 0 减去该需求量得到需求量的负值,所以应该是进行累加累加的运算。运行模型,观察数据库中库存数
10、据的变化,是否一直在减小?为什么不会增加?运行模型,观察数据库中库存数据的变化,是否一直在减小?为什么不会增加?答:答:运行模型的时候,可以看到数据库中的库存数据是一直都在减小的,首先从 10变成 9 然后又变成 6,最后一直减小,运行多次的话还变成了负数。具体的可以查看Write 模块中的 DB 中的 Inventory Level 项。数据库中库存数据的变化是一直在减小。由于顾客购买产品,导致产品库存减小,Write 模块接收的值为负值,因此一直在减小。73、库存系统仿真实验报告库存系统仿真实验报告查库和订货处理查库和订货处理1 1、实验目的、实验目的学习库存系统查库与订货处理的结构建模方
11、法学习用 Equation 模块、Equation(I)模块读写数据库的方法学习用 Equation 模块、Equation(I)模块进行编程计算的方法2 2、实验步骤、实验步骤打开上次实验你保存的文件 InventorySim.mox(这个文件要保存好,下次实验还要使用),然后根据以上视频,进行操作实验。首先向其中添加一个 Create 模块,用于每天生成一个库存检查员实体(代表一个查库信号)。如下图所示,其中的 constant 常量设置为 1。8然后再向其中添加一个 Select Item out 模块,Equation 模块和 Simulation Variable 模块来检查模块,来
12、判断是否需要订货。其中,在 Simulation 模块中选择 Current time 来读取当前时间。在 Equation 模块中,进行下面的设置,在 Input Variables 中的三个变量分别为当前库存量、订货点和当前的时间(前两者是通过数据库来读取到的,分别是从数据库中取得当前库存和订货点填入,后者则是通过端口 0 来得到的)。Output Variables 中输出的变量则是端口 0 输出的结果。另外,还需要通过三个输入的量来判断是否需要订货。其程序逻辑也可以从图中看出来。9该程序的基本含义是是如果当前库存小于订货点且仿真时间小于 119.5(保证120 天结束时即第 121 天
13、开始时不订货),输出 0 给 Select Item Out 模块(需要订货),否则输出 1 给 Select Item Out 模块(离开系统,不需要订货)。该模块截图如下所示。其中 Select Item Out 模块的设置如下所示。10若需订货,则库存检查实体走上面路线,用 Equation 模块获取数据库中的当前库存和最大库存,据此计算订货量并输出给 Set 模块,将订货量赋值到检查实体的OrderQuantity 属性。截图如下所示,InventoryLevel 是当前库存,BigS 是最大库存。如下图所示,Set 模块中的 OrderQuantity 用来获取 Equation 提
14、供的订货量。再添加一个 Equation(I)模块用来计算订货成本并累加到数据库中的总订货成本Total Odering Cost 中,如下图所示。输出的结果是 TotalOderCost。其中 TotalOrderCost 为累加所有订货费用的累加变量,初值为 0。SetupCost为每次订货的固定费用,IncCost 为每件物品的可变订货费用,OrderQuantity 则为订货量。TotalOrderCost = TotalOrderCost + SetupCost + IncCost * 11OrderQuantity;再向该模型中添加一个 Activity 模块,用于延时一个订货提前
15、期。并限制每次通过的实体数的最大量为 1,按照均匀分布来延时(U(0.5,1)。然后再向该模型中添加 Get 模块,库存检查实体离开 Activity,表示提前期结束,货物到达,到货后用 Get 模块获取订货量,用 Write 模块将订货量累加到数据库中的当前库存中去,这样,就能够根据订货动态增加当前存库。Get 模块的设置如下图所示。12Write 模块中的设置如下图所示,通过修改其中的 Inventory Level 来更新当前库存。该模型的最终结果截图如下所示。133 3、实验问题、实验问题简述用简述用 EquationEquation 模块计算订货量的程序逻辑。模块计算订货量的程序逻辑
16、。答:答:在 Equation 模块中,进行下面的设置,在 Input Variables 中的三个变量分别为当前库存量、订货点和当前的时间(前两者是通过数据库来读取到的,分别是从数据库中取得当前库存和订货点填入,后者则是通过端口 0 来得到的)。Output Variables 中输出的变量则是端口 0 输出的结果。另外,还需要通过三个输入的量来判断是否需要订货。其程序逻辑也可以从图中看出来。该程序的基本含义是是如果当前库存小于订货点且仿真时间小于 119.5(保证120 天结束时即第 121 天开始时不订货),输出 0 给 Select Item Out 模块(需要订货),否则输出 1 给 Select Item Out 模块(离开系统,不需要订货)。14简述用简述用 EquationEquation(I I)模块计算并累加总订货成本到数据库中的程序逻辑。)模块计算并累加总订