3 等时间步长法解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "stdlib.h" #include "stdio.h" #include "iostream.h" #include "time.h" #include "iomanip.h" //格式控制符头文件 #include "math.h" float DEMAND[101],TLEAD[101],QUA,ORD; float MAXT,CLOCK; float TEOUT,TEST,IEST,EST,ARR,COSTO,COSTS;
到最大仿真时间?
调用到货 供货 订货 仿真钟加一
N
Y
计算输出缺货费 保管费 总费用 每日费用
2.设置经验分布数据
开始 打开需求量文件 读入需求量数据记录 N 打开到货天数文件 读入到货天数记录 N 成功? Y 给到货天数数组赋值 返回
成功? Y 给需求量数组赋值
3.考察到货、供货、订货
到货
开始 今日到货? Y 今日可提供的原料数 昨日库存量+订货量 N
0
S1 Dt
2Dt S2 S3 3Dt
S4 4Dt
5 Dt
时间
曲线箭头代表仿真时钟的推进 Si(i=1,2,3,…)是任何类型的第i类事件发生 的实际时间
开始 设置初始状态 仿真钟赋初值 仿真完毕?
N Y
输出结果
停止
实体或活动数 1 考察完毕? Y
对实体或活动考察 有事件? N
Y N
仿真钟前进一步长
累计发生频率
0.05 0.15 0.35 0.65 0.85 0.95 1.00
当该种原料的库存量低于某个临界值时,进行 一次订货,若每次订货量相同,从订货到到货之间 的天数也是一随机变量。
到货天数
发生频率
3 0.10 0.10
4
0.25 0.35
5
0.45 0.80
6
0.16 0.96
7
0.04
第 3章
等时间步长法
仿真模型中,给出仿真时间当前值的变量称为仿 真时钟。 仿真钟的推进: 固定时间增量法推进 下次事件时间推进法 仿真方法: 等时间步长法 事件步长法
指按时间的先后顺序仿真系统状态变化,每隔一定 的时间对系统状态进行一次考查,记录系统的状态 并对需要的信息进行累计。
仿真钟推进
保管费为 30元/t· 日
累计发生频率
缺货损失 250元/t· 日
最初库存 80t
wk.baidu.com
1.00
在不同的临界库存量和每批订货量下仿真一段较长时间内 的原料消耗、订货、到货情况,对总费用进行比较,选择较优 方案。
3.2.3 结构图
完成输入每批订货 量、临界库存量、 最大仿真时间、仿 真时钟控制、输出 结果等功能
今日可提供的原料数 昨日库存量
到货日期大数
表示没订货
A
供货
A
产生需求量随机数
可供数>需求量? N
当日库存量 0 当日缺料数 需求量–可供数
Y 当日库存量 可供数 – 需求量
当日缺货数 0 累计缺料数 累计库存量 B
B 到临界库存量? Y 到货日期=大数? N Y 产生随机数作为到货天数 N
处理此事件 并发事件? N
处理并发事件
Y
改变系统状态
实体或活动+1
1.初始状态:将系统中的全部实体、属性或活动预置 初值。 2.仿真时钟:总仿真时钟、仿真子时钟 3.实体或活动的考察 (1)对实体顺序进行考察 (2)对活动顺序进行考察 (3)实体和活动结合考察 4.并发事件:由某一事件的处理而触发出来的事件 5.改变系统状态和确定下一活动的延续时间 6.数据的记录:实体的属性值、随机变量的分布和统 计量、供决策使用的指标等。
P—到货天数; TEOUT—累计缺料数; TEST—累计库存量; XI—当日总费用; AX—每日平均费用。
DEMAND.DAT 1 5 17 6 15 18 16 35 19 36 65 20 66 85 21 86 95 22 96 100 23
DAYS.DAT 1 10 3 11 35 4 36 80 5 81 96 6 97 100 7
void SS1(); void SS2();
//设置经验分布数据 //考察到货、供货、订货
void main() {float TCOSTO,TCOSTS,TCOST,AX; srand(time(NULL)); SS1(); cout<< "输入!\n"; cout<< " 初始库存是:"; cin>> IEST; cout<< " 单位保管费是:"; cin>> COSTS; cout<< " 缺料损失费是:"; cin>> COSTO;
库存系统仿真主控
设置经验分布数据 输入经验 分布数据 给相应数 组赋值
考察到货 供货 订货
判断是否今日有到货, 确定今日可提供的原料 数,计算缺料数、库存 量,确定今日是否有订 货,显示总费用
开始
调用设置经验分布模块
读入每批订货量
1.主控模块
订货量>0?
读入临界库存量
Y
N
停止
读入最大仿真时间
工作单元仿真钟赋初值
3.2.1 库存问题
根据需求与订货的规律,可分为:
确定性库存 不确定性库存
工厂原材料仓库,某种原材料的采购供应
工作
目标:保管费与缺料损失的总和最少 目的:判断订多少货?何时订货?
即可控变量:每批订货量,临界库存量
该种原料的每日需求量是一随机变量。
每日需求量经验数据表
每日需求量 t/日 发生频率 17 0.05 18 0.10 19 0.20 20 0.30 21 0.20 22 0.10 23 0.05
订货
到货日期 当日日期+到货天数
前20日内计算输出 每日总费用 返回
订货
到货
1 2 3 4 5 6 7 8 9 10 11 12
不订货
1.变量说明
DEMAND[101]—每日需求量数组; TLEAD[101]—到货天数数组; QUA —每批订货量; ORD—临界库存量; MAXT—最大仿真时间; CLOCK—仿真时钟; ARR—订货到达日期; BST—当日可提供的原料数; EST—当日库存量; BDEM—某日需求量; EOUT—当日缺货数.
1.确定状态变量 2.设置仿真初始状态 3.建立仿真时钟记录仿真时刻,每次加同样数值 4.考察确定系统状态,记录系统状态 5.控制仿真运行时间 6.建立产生各种随机数的子程序 7.打印仿真结果
优点:
◦ 较易实现、简单
缺点:
◦ 由于Dt终了时才处理在Dt中发生的事件,造成 了误差 ; ◦ 实际事件并非同时发生的时候,模型却要决定 先处理哪个事件 ; ◦ 仿真时钟每推进一步,均要扫描实体、活动以 确定是否有事件发生,增加了执行时间。