CSE6010-Assignment 3

Sample code - one pump gas station

events: arrival + departure

arrival -> departure
simulation time: unprocesed events are stored in pending list

simulation

Preview

simulate the operation of a call center that handles both incoming and outgoing telephone calls
two different kinds of agent:
service agent : 700 sales agent: 300

two different kinds of call:

incoming calls :

  • service + sales both are able to handle, service first, if not available then sales, then wait in queues(0.25 probability hang up, 0.75 waits until the service)m
  • incoming calls are assumed to follow a Poisson distribution, with average arrival rate A per second, time between successive calls is exponentially distributed with a mean value of 1/A.
    *the time for an agent to answer an incoming call is uniformly distributed over the interval [300, 700] seconds

outgoing calls :
only sales agent can handle. if no sales agents available, abandon the call
every 60 seconds the dialer system places calls, then take 10 seconds to determine which calls got through, each call that got through is routed to a sales agent

parameters:

STRUE : the probability an outgoing call is successful (success = call + go through)
SEST + NIDLE / SEST
SEST: the estimated probability value of success computed by the simulation program
NIDLE: the number of idle sales agents

Simulation engine

event list managemnt
managinig advances in simulation time

Simulation application

state variables
code modeling system behavior
*I/O and user interface software

event handler procedures
arrival event{...} departure event{...}

define each structure's content.
how to use the struct? first initialize, then call them?

Background Knowledge
Structure


//learning note of struc in c

//structure 
struct flightType
{
    char flightNum[7]; 
    int altitude;
    double airspeed;
};

struct flightType plane; //declare a variable of this new type

struct flightType
{
    char flightNum[7]; 
    int altitude;
    double airspeed;
}plane; //general syntax for a structure declaration 


//access the struct using the dot "." operation
plane.airspeed = 800.00; 
plane.altitude = 10000;


//typedef provide no additional functionality -> give clarity to code
typedef type name; //cause the identifier name to be synonymous with the type 'type'(both basic type of aggregate type is ok)

typedef int Color;
Color pixels[500];

//we can use typedef to create a name for the sturcture we defined 
struct flightType
{
    char flightNum[7]; 
    int altitude;
    double airspeed;
};
typedef struct flightType Flight;
Flight plane;
//equivalent to the declaration in the line14

//allocate contiguous region of memory to each structure
Flight planes[100]; //declare an array of structures

//calculate the average airspeed of 100 planes
int i;
double sum = 0;
double averageAirSpeed;
for (int i = 0; i < 100; i++){
    sum = sum + plane[i].airspeed;
}
averageAirSpeed = sum / 100;
//

// create pointers to structures
Flight *planePtr;
planePtr = &plane[34]; //assign this variable
(*planePtr).longitude //access any of the member fields pointed to by this pointer variable
// equal 
planePtr -> longitude;

Linked List
Two representations for a linked list
dynamic allocation
use pointer to

sample code:

Application:
EventHandler: call Arrival() and Departure() Funtion
Arrival() funtion: generate the next arrival() + determine the departure time of the arrival event if the pump is free
Departure() function: schedule the departure time, deal with the atpump type

engine:
Create an Event List: FEL
Remove
PrintList
Schedule function: insert the new event into the event list
RunSim function: to loop before the simulation time get the limit.

Binomial distribution
Generate random number
Summary:
*Application: Event handle procedures
finish three major part:

  1. define Event Function
  2. define EventHandler Function: to check which type of the event it is
  3. define NumberGenerator: to generate the service time and the incoming calling's time

*Engine: Event processing loop
finish the loop:
1.define the datastructure to generate FEL(Future Event List)

什么时候需要排队呢:before the first finished call, the sum_call > sum_servant

转载于:https://www.cnblogs.com/kong-xy/p/7609373.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值