大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang
以下鄙人实现了排队论思想,语言是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;
}

排队论的C实现的更多相关文章

  1. JAVA实现排队论

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/50401727 http://www.llwjy.com/blogdetail/3 ...

  2. 建模算法(七)——排队论模型

    (一)基本概念 一.排队过程的一般表示 凡是要求服务的对象称为顾客,凡是为顾客服务的称为服务员 二.排队系统的组成和特征 主要由输入过程.排队规则.服务过程三部分组成 三.排队模型的符号表示 1.X: ...

  3. 更新过程 renewal process

    一类随机过程.是描述元件或设备更新现象的一类随机过程.设对某元件的工作进行观测.假定元件的使用寿命是一随机变量,当元件发生故障时就进行修理或换上新的同类元件,而且元件的更新是即时的(修理或更换元件所需 ...

  4. 十分钟了解分布式计算:GraphLab

    GraphLab是一个面向大规模机器学习/图计算的分布式内存计算框架,由CMU在2009年开始的一个C++项目,这里的内容是基于论文 Low, Yucheng, et al. "Distri ...

  5. SQL Server 内存数据库原理解析

    前言 关系型数据库发展至今,细节上以做足文章,在寻求自身突破发展的过程中,内存与分布式数据库是当下最流行的主题,这与性能及扩展性在大数据时代的需求交相辉映.SQL Server作为传统的数据库也在最新 ...

  6. little's law(律特法则)

    参考:https://en.wikipedia.org/wiki/Little%27s_law(周末看一下) 最近在做性能压力测试,开始时,压力压不上去,参考: N = X * E[T] ,N就是你的 ...

  7. [珠玑之椟]估算的应用与Little定律

    [珠玑之椟]估算的应用与Little定律 估算的数据主要依赖于所能获得的数据和常识,有时还包括实践而不仅仅是理论.它常常作为一个大问题中的子问题,恰当地估算可以省去精确计算的时间和开销.在计算机领域, ...

  8. RabbitMQ-从基础到实战(6)— 与Spring集成

    0.目录 RabbitMQ-从基础到实战(1)- Hello RabbitMQ RabbitMQ-从基础到实战(2)- 防止消息丢失 RabbitMQ-从基础到实战(3)- 消息的交换(上) Rabb ...

  9. 【概率论与数理统计】小结4 - 一维连续型随机变量及其Python实现

    注:上一小节总结了离散型随机变量,这个小节总结连续型随机变量.离散型随机变量的可能取值只有有限多个或是无限可数的(可以与自然数一一对应),连续型随机变量的可能取值则是一段连续的区域或是整个实数轴,是不 ...

随机推荐

  1. windows下adb+flash_image刷机

    刷机是常事,总要把刷机包放在卡上,然后关机三键一起按到recovery再刷,觉得不爽,麻烦,所以研究出了adb调用flash_image刷system分区,全部脚本windows脚本执行,点点鼠标就o ...

  2. 深入理解7816(2)---关于ATR

    智能卡(此处主要指接触式CPU卡)本身始终处于被动的状态,所以终端设备在和智能卡进行数据交互的时候,需要首先给智能卡发指令,智能卡才会对应地给出应答.而智能卡告诉终端的第一句话就是ATR,亦即“复位应 ...

  3. 关闭WIN10的UAC/自动更新/杀毒软件(兼容WIN7/8/8.1)

    第一部分:禁用wuauserv服务以及关闭UAC(保存为DW10UD.REG) Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYS ...

  4. 【转】使用DateFormat把时间长度格式化为"时:分:秒"格式--不错

    原文网址:http://ssd910.blog.163.com/blog/static/238767972010112214114201/ 经常在系统中显示时间长度,基本上每次都是显示秒数,客户觉得按 ...

  5. cf492A Vanya and Cubes

    A. Vanya and Cubes time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  6. MYSQL中的语句

    MYSQL中的语句 decimal(8,2):最多存10位数的数字,小数点后保存两位.如:999999.99

  7. Java集合之List

    List(列表): List的特征是其元素以线性方式存储,集合中可以存放重复对象. List接口主要实现类包括: 1.ArrayList() : 代表长度可以改变的数组.可以对元素进行随机的访问,向A ...

  8. 蓝桥杯 BASIC 24 龟兔赛跑预測(模拟)

    [思路]:模拟.注意一个是在兔子歇息的时间乌龟可能到达了.刚開始没考虑WA80%. [AC代码]: #include <iostream> #include <algorithm&g ...

  9. android设备之间屏幕共享

    近期公司在开发一款android的设备把屏幕投射到手机上.同一时候手机还能够触控.键盘操作.这样.就达到了屏幕共享的目的. 思考了一下.主要思路: 1.将截图所获取的位图用ffmpeg编码成视频流. ...

  10. Hacker(18)----了解Windows系统漏洞

    一.WinXP中的漏洞 在WinXP中,常见的漏洞主要有UPNP服务漏洞.帮助与支持中心漏洞.压缩文件夹漏洞.服务拒绝漏洞.RDP漏洞以及热键漏洞. 1.UPNP服务漏洞 漏洞描述:UPNP(Univ ...