以下鄙人实现了排队论思想,语言是C语言
#include<stdio.h>
#include<float.h>
int main()
{
/************************************what we know in the system**************************************/
float arrivals[] = {0.4, 1.6, 2.1, 3.8, 4.0, 5.6, 5.8, 7.2};//the time of each customer's arrival
float departures[] = {2.4, 3.1, 3.3, 4.9, 8.6};//the time of each customer's departure
int acount = 0;//the index of arrivals array
int dcount = 0;//the index of departures array
/***************the clock and clock event in the simulating system******************/
float clock = 0;//simulation clock
float clock_event[2] = {arrivals[acount],departures[dcount]};//clock[0] means arrival time,clock[1] means departure time
int clock_event_times[2] = {0, 0}; //clock_event_times[0] means the count of arrival event happened;
//clock_event_times[1] means the count of departure event happened
/*****************system state ****************************/
int serve_status = 0;//false means ideal and 1 means busy
int no_in_queue = 0;//the number in queue
float time_of_arrival[4] = {0};//the time of arrival
float time_of_last_event = 0;// the time of last event
/*****************statistical counters***************/
int no_delayed = 0;//the number of delayed
float total_delay = 0;//the total delay time
float area_under_Q = 0;//the area under queue(t)
float area_under_B = 0;//the area under busy(t)
/********the stop time***/
char temp;
int end_event;
printf("Please input the stop event of this simulating system(a means arrival and d means departure): ");
scanf("%c", &temp);
if (temp == 'd')
end_event = 1;
else
end_event = 0;
int ordinal;
printf("Please input the customer's ordinal of the stop event you have input:");
scanf("%d", &ordinal);
/***********start********************/
while(clock_event_times[end_event] < ordinal)
{
if(clock_event[0]<clock_event[1] )//arrival event
{
clock = clock_event[0];
acount += 1;
clock_event[0] = arrivals[acount];
clock_event_times[0] += 1;
if(serve_status == 0)//no body
{
serve_status = 1;
}
else
{
time_of_arrival[no_in_queue] = clock;
area_under_B += serve_status * (clock - time_of_last_event);
area_under_Q += no_in_queue * (clock - time_of_last_event);
no_in_queue += 1;
}
}
else//department event
{
clock = clock_event[1];
dcount += 1;
clock_event[1] = departures[dcount];
clock_event_times[1] += 1;
area_under_B += clock - time_of_last_event;
if(no_in_queue == 0)
{
serve_status = 0;
}
else
{
clock_event[1] = departures[dcount];
total_delay += clock - time_of_arrival[0];
area_under_Q += no_in_queue * (clock - time_of_last_event);
no_in_queue -= 1;
time_of_arrival[0] = time_of_arrival[1];
time_of_arrival[1] = time_of_arrival[2];
time_of_arrival[2] = time_of_arrival[3];
}
}
time_of_last_event = clock;
}
printf("Number delayed: %d\n", clock_event_times[1]);
printf("Total delay: %2f\n", total_delay);
printf("Area under Q(t): %2f\n", area_under_Q);
printf("Area under B(t): %2f\n", area_under_B);
return 0;
}
- JAVA实现排队论
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/50401727 http://www.llwjy.com/blogdetail/3 ...
- 建模算法(七)——排队论模型
(一)基本概念 一.排队过程的一般表示 凡是要求服务的对象称为顾客,凡是为顾客服务的称为服务员 二.排队系统的组成和特征 主要由输入过程.排队规则.服务过程三部分组成 三.排队模型的符号表示 1.X: ...
- 更新过程 renewal process
一类随机过程.是描述元件或设备更新现象的一类随机过程.设对某元件的工作进行观测.假定元件的使用寿命是一随机变量,当元件发生故障时就进行修理或换上新的同类元件,而且元件的更新是即时的(修理或更换元件所需 ...
- 十分钟了解分布式计算:GraphLab
GraphLab是一个面向大规模机器学习/图计算的分布式内存计算框架,由CMU在2009年开始的一个C++项目,这里的内容是基于论文 Low, Yucheng, et al. "Distri ...
- SQL Server 内存数据库原理解析
前言 关系型数据库发展至今,细节上以做足文章,在寻求自身突破发展的过程中,内存与分布式数据库是当下最流行的主题,这与性能及扩展性在大数据时代的需求交相辉映.SQL Server作为传统的数据库也在最新 ...
- little's law(律特法则)
参考:https://en.wikipedia.org/wiki/Little%27s_law(周末看一下) 最近在做性能压力测试,开始时,压力压不上去,参考: N = X * E[T] ,N就是你的 ...
- [珠玑之椟]估算的应用与Little定律
[珠玑之椟]估算的应用与Little定律 估算的数据主要依赖于所能获得的数据和常识,有时还包括实践而不仅仅是理论.它常常作为一个大问题中的子问题,恰当地估算可以省去精确计算的时间和开销.在计算机领域, ...
- RabbitMQ-从基础到实战(6)— 与Spring集成
0.目录 RabbitMQ-从基础到实战(1)- Hello RabbitMQ RabbitMQ-从基础到实战(2)- 防止消息丢失 RabbitMQ-从基础到实战(3)- 消息的交换(上) Rabb ...
- 【概率论与数理统计】小结4 - 一维连续型随机变量及其Python实现
注:上一小节总结了离散型随机变量,这个小节总结连续型随机变量.离散型随机变量的可能取值只有有限多个或是无限可数的(可以与自然数一一对应),连续型随机变量的可能取值则是一段连续的区域或是整个实数轴,是不 ...
随机推荐
- Microsoft.Practices.Unity 给不同的对象注入不同的Logger
场景:我们做项目的时候常常会引用第三方日志框架来帮助我们记录日志,日志组件的用途主要是审计.跟踪.和调试.就说我最常用的日志组件log4net吧,这个在.NET同行当中应该算是用得非常多的一个日志组件 ...
- Android数据存储
SharedPreferences----------->for primitive data Internal Storage-------------->for private dat ...
- Unity欢迎窗口的信息
1.Video Tutorials提供Unity相关的教程,包括用户手册.组件手册以及脚本手册等内容.2.Unity Basics提供Unity的基础知识,例如操作界面.工作流程.发布设置等内容.3. ...
- windows批处理命令教程
批处理文件是无格式的文本文件,它包含一条或多条命令.它的文件扩展名为 .bat 或 .cmd.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令 ...
- 短信,微信API(还能发邮件,短信,IM聊天)
1.用于微信公众平台的Js API(WeixinApi) Github地址:https://github.com/zxlie/WeixinApi http://www.baidufe.com/item ...
- Android之断点续传下载
今天学习了Android开发中比较难的一个环节,就是断点续传下载,很多人看到这个标题就感觉头大,的确,如果没有良好的逻辑思维,这块的确很难搞明白.下面我就将自己学到的知识和一些见解写下供那些在这个环节 ...
- inux xsel 拷贝复制命令行输出放在系统剪贴板上
转载自:http://oldratlee.com/post/2012-12-23/command-output-to-clip 为什么要这么做?直接把命令的输出(比如 grep/awk/sed/fin ...
- javaweb 登录注册
1:用户登录界面 login.jsp <%@ page language="java" import="java.util.*" pageEncoding ...
- Javascript 文件操作(整理版)
Javascript 文件操作 一.功能实现核心:FileSystemObject 对象 其实,要在Javascript中实现文件操作功能,主要就是依靠FileSystemobject对象.在详细介绍 ...
- JavaScript 滚动页面到指定元素位置
页面评论功能,当评论较多时,有时须要滚动到评论头部. 能够使用scrollTop方法,加上一点延时动画(animate),可訪问在线演示,代码大体例如以下: <html> <scri ...