实验报告
课程名称: 系统仿真
实验名称: 库存系统仿真程序设计
院 (系): 管理学院
专业班级:
姓 名:
学 号:
指导教师:
20##年 11月29日
《系统仿真》实验报告(参考格式,16K纸)
课程名称:系统仿真
实验项目名称:库存系统仿真程序设计
实验类型:综合型实验
学生姓名: 专 业:
班 级: 指导教师:
实验地点:西楼机房 实验日期:20##年11月28日
一、实验目的和要求
系统仿真是管理科学专业的一门专业必修课,是建立在系统科学、计算机技术和计算方法等基础上的一门综合性很强的课程,它是分析、综合各类工程系统和非工程系统的一种研究方法和有力的手段。而实验课是为了巩固课堂所学内容,让学生亲自上机操作。其目的主要是使学生真正了解计算机仿真相关知识,通过实验训练进一步培养学生分析问题和解决问题的能力,使学生掌握在实际系统中应用系统仿真的方法和步骤。
本实验要求学生针对一个库存系统进行详细的问题分析、建模、编程、上机调试等,要求学生掌握对实际系统计算机仿真的一般过程和基本方法。在实验的全过程中,培养学生勤奋学习、求真、求实的科学品德,培养学生的动手能力、思维能力、想象能力、表达能力。
二、实验内容和原理
1.内容
某自行车商店的仓库管理人员采取一种简单的订货策略,当库存量降低到P辆自行车时就向厂家订货,每次订货Q辆,如果某一天的需求量越过了库存量,商店就有销售损失和信誉损失,但如果库存量过多,将会导致资金积压和保管费增加.若现在已有如下表所示的五种库存策略,试比较选择一种策略以使总费用最少.
这个问题的已知条件是:
1)从发出订货到收到货物需隔3天.
2)每辆自行车保管费为0.75元/天,每辆自行车的缺货损失为1.80元/天,每次的订货费为75元.
3)每天自行车需求量是0到99之间均匀分布的随机数.
4)原始库存为115辆,并假设第一天没有发出订货.
要求用计算机按天仿真仓库货物的变动情况却很方便.可以150天为例,依次对这五种方案进行仿真,最后比较各方案的总费用,从而作决策.
2.原理
输入一些常数和初始数据后,以一天为时间步长进行仿真.
1)检查这一天是否为预定到货日期,如果是,则原有库存量加Q,并把预定到货量清为零;如果不是,则库存量不变;
2)接着仿真随机需求量,这可用计算机语言中的随机函数得到.若库存量大于需求量,则新的库存量减去需求量;反之,则新库存量变为零,并且要在总费用上加一缺货损失.
3)检查实际库存量加上预定到货量是否小于重新订货点P,如果是,则需要重新订货,这时就加一次订货费.
如此重复运行150天,即可得所需费用总值.
三、仪器名称及主要规格(包括量程、分度值、精度等)、 材料
计算机(配置),
四、实验步骤
填题目分析
这一问题用解析法讨论比较麻烦,但用计算机按天仿真仓库货物的变动情况却很方便.我们以150天为例,依次对这五种方案进行仿真,最后比较各方案的总费用,从而就可以作出决策.
程序框图
五、实验结果及分析(调试中出现问题及解决)
第1种方案的150天的总费用为:11884.8元
第2种方案的150天的总费用为:11314.8元
第3种方案的150天的总费用为:15764元
第4种方案的150天的总费用为:17604.3元
第5种方案的150天的总费用为:18463.5元
经过计算机仿真、比较可得出:第2种方案最优,其150天的总费用为:11314.8元
Press any key to continue
六、体会
通过本次实验,掌握了事件步长法仿真实验的基本原理和实践步骤,并通过该原理解决了实际问题,达到了学以致用的目的。
七、结果(附程序源码及运行结果)
程序代码
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
srand((unsigned)time(NULL));
int prePoint, preQuantity,prePeriod,preCost,
needCount,primNum,lackNum,order,optPro,orderCost;
prePeriod = 3; //订货到收货的时间间隔
double keepCost = 0.75; //保管费
double lackLoss = 1.8; //缺货损失费
preCost = 75; //订货费
primNum = 115; //原始库存
double ttCost = 0;
double optSche = 1000000;
order = 0; //未定货时的状态
for (int j=1; j<=5; j++) {
if (j == 1){
prePoint = 125; //重新订货点
preQuantity = 100;
} else if (j == 2){
prePoint = 125;
preQuantity = 150;
} else if (j == 3){
prePoint = 150;
preQuantity = 250;
} else if (j == 4){
prePoint = 175;
preQuantity = 250;
} else if (j == 5){
prePoint = 175;
preQuantity = 300;
}
ttCost = 0; //总费用初始化为0
orderCost = 0; //订货费
for (int i=1; i<=150; i++) {
if (primNum < prePoint) {
if (i != 1 ) { //检测和订货
if (i != 148 && i!=149 && i!= 150 && order == 0) { //这三天不再订货
order = i;
orderCost += 75;
}
if ((i - order)%3 == 0 && order != 0 && order != i) {
primNum += preQuantity; //收货
order = 0; //把订货状态重置为0,即未订货状态
}
}
}
needCount = rand()%100; //产生今天的需求量
if (needCount < primNum) {
primNum = primNum - needCount;
lackNum = 0;
} else {
lackNum = needCount - primNum;
primNum = 0;
}
ttCost += primNum * keepCost + lackNum * lackLoss;
}
if (ttCost + orderCost < optSche) {
optSche = ttCost + orderCost;
optPro = j;
}
cout<<"第"<
}
cout<
return 0;
}
运行结果
八、教师评语和成绩
教师签名:
年 月 日