《ExtendSim仿真实例.ppt》由会员分享,可在线阅读,更多相关《ExtendSim仿真实例.ppt(22页珍藏版)》请在三一办公上搜索。
1、ExtendSim7 优化案例,一.优化概述,仿真优化即最优化(Optimization),是指寻找最佳的参数值,以使得目标性能最优。ExtendSim 使用的是Optimization模块(Value库)进行优化操作,该模块嵌套的是遗传算法。对于ExtendSim来说搜寻最优解需要重复运行模型多次,运行的时间越长,找到最优解的概率越大。,ExtendSim7 优化案例,二.背景介绍,我们今天探讨的案例是一种果汁在某一区域的配送、运输、销售的例子。我们给定模型这样一个背景条件:在公园的某个报亭销售桶装的果汁,订单必须在前一天晚上下达,公司将按订单要求的时间每次一桶进行配送。如果报亭老板下单间隔
2、过小、每次订量大公司在第二次配送时将取回第一次送过来的桶,未售完的果汁将浪费掉,如果下单间隔太大、每次订量小,将会出现缺货情况,造成缺货损失。试分析,最佳的订货时间间隔和订货量是多少?,ExtendSim7 优化案例,离散建模,连续建模,该选什么建模类型呢?,ExtendSim7 优化案例,两种主要的建模方法是连续的和离散事件建模。连续建模(过程建模)被用于描述一组数值。离散事件模型描述的是一组离散的数据。在连续模型中,时间间隔从仿真开始时确定,并且以等长增加,值随着时间的改变而改变。在此类模型中值反应了各个时间点系统的状态。在离散事件模型中,当且仅当有事件发生时,系统的状态才会改变。时间的改
3、变不一定会使模型发生变化。它与连续模型不同的是仿真时间是随着事件的变化而变化,而不是相同的时间间隔。,ExtendSim7 优化案例,离散和连续建模的简单对比:,ExtendSim7 优化案例,四、模型构建,要通过仿真模拟哪些过程呢?,1.顾客到达购买果汁2.送货车按时间表进行配货3.缺货发生的损失4.记录总销量,便于计算利润,先有模型,再想问题 仿真之大忌,ExtendSim7 优化案例,三、约束条件概述:,饮料使用饮料桶进行分配,其容量范围是1000-8000(在案例模型中,1000是饮料桶的最初容量设置)一辆卡车在一天开始时运送饮料桶并在一天中按照一定周期交换(模型最初设置为在240分钟
4、后运送第二个饮料桶)卡车用相同容量的饮料桶交换。饮料运送的成本为1000$,饮料的成本是1$/drink 假定饮料公司知道一天中何时运送饮料桶以及运送的容量,饮料桶的容量和运送周期在一天中开始就要安排好,ExtendSim7 优化案例,顾客购买饮料服从一个随机分布;饮料单位售价为$2.50 如果饮料桶在交换之前空的话,由于已经在排队等待的顾客会去其他地方购买以及新来的顾客也会流失导致每分钟大约损失$100 如果你交换饮料桶过于频繁的话,由于旧桶中的饮料会和桶一起运回而损失。模型省略了其他开支成本,例如人力成本模型大约运行仿真时间480分钟(8小时),ExtendSim7 优化案例,案例模型:,
5、ExtendSim7 优化案例,1.建立原始模型,简单模拟顾客到达和购买的过程,ExtendSim7 优化案例,模型说明:1.设定Create模块按时间表产生实体,模拟货车按时间的送货过程。2.用Batch模块捆绑顾客和饮料模拟顾客的购买过程。,运行模型,观察发现有以下问题:饮料售完,缺货时顾客仍不停的到达 等待队列过长,不符合实际情况,ExtendSim7 优化案例,完成以上改善后的模型,ExtendSim7 优化案例,模型优化,使用ExtendSim进行优化,需要为我们所要求解的决策变量提供一个初始参数:运送周期为240分钟,容量为1000 drinks。,优化步骤 确定目标函数:报亭老板
6、追求的是利润最大化。利润=总收入总成本 收入=2.5*sold 成本:运输成本、果汁成本、时间损失成本 运输成本=1000 果汁成本=1*Size 时间成本=100*EmptyTime 利润=2.5*sold运送次数*(1000+1*Size)100*EmptyTime Num,ExtendSim7 优化案例,模型优化,MaxProfit=$2.50*#sold-#deliveries*($1000+#drinks*$1.00)-time empty*$100-Num,两种方法:手动试参数利用ExtendSim的Optimizer模块实现自动寻优在Optimizer中添加参数:目标函数的构成是
7、输入Optimizer模块对话框中成本方程的基础。为Optimizer模块添加参数的一个便捷途径是使用Clone Layer工具将对话框参数拖到该模块的图标上。这个操作又被称作clonedropping,将有关参数的信息添加到参数表格。这个操作也可以使Optimizer模块远程阅读并改变模型中参数的数值,这样就可以研究可行解。,ExtendSim7 优化案例,模型优化,一天中总的销售收入是通过模型计算出来的一个输出参数;它可以通过一个模块对话框直接得到。打开标签为“Total sales”的Exit模块使用Clone Layer工具,拖动Total exited参数数值(不是其标签)到关闭的O
8、ptimizer模块当Optimizer模块的图标突出显示时,松开鼠标这将参数放置在Optimizer的参数表格中的第一行关闭Exit模块的对话框其他参数采取同样的方法拖取,ExtendSim7 优化案例,模型优化,特别说明:#deliveries与本例中其他决策变量不同,运送的数目不是作为一个对话框选项直接可以得到。然而,该数值可以使用运送的频率计算出来。,设置参数的范围现在Optimizer中已经有了必须的参数,你需要为这些参数中的一些输入范围,这样Optimizer模块才知道需要进行改变的对象(没有范围的参数将被认为是仿真的输出结果,Optimizer将不会改变它们)。对于数据表,你需要
9、定义方程中所使用的单元。,MaxProfit=2.50*numSold-#deliveries*(1000.0+delTankSize*1.00)-emptyTime*100-Num;,ExtendSim7 优化案例,模型优化,这个方程中唯一没有定义的参数是#deliveries,它可以通过deliveryTimes参数计算出来。将deliveryTimes参数转化为#deliveries的方程是:#deliveries=int(endTime-1)/deliveryTimes+1),完成后将注释方程和转换后的目标方程输入Optimizer模块。,ExtendSim7 优化案例,模型优化,运行
10、最优化 打开Optimizer模块的对话框 选择Run Parameters 分页。由于模型中有随机因素,点击Random model部分的Quicker Defaults 按钮。这将快速设置一个随机模型中所有参数所需的多重样本,但是在默认情况下约束了样本的数量,所以可以快速得到结果。通过点击Optimizer模块对话框中的New Run,或者点击工具栏中的RunOptimization工具,或者通过Run Run Optimization命令来运行最优化过程。当最优化过程在运行时,可以看到在Results分页表格的第一行的MaxProfit数值的变化。同时也可以看到MaxProfit和收敛数值的增加当运行结束的时候,Optimizer模块自动打开并显示Results分页。,ExtendSim7 优化案例,拓展思考,研究问题实际化运货时间固定,基于批量的优化策略运货批量固定,基于时间的优化策略有竞争的情况下该如何处理,ExtendSim7 优化案例,时间策略模型,ExtendSim7 优化案例,批量策略模型,ExtendSim7 优化案例,竞争情况,