anyl-505 term project computer simulation model (mh)
TRANSCRIPT
Three-Phase Simulation
Simulation Narrative: Federal Insurance Company is a national multi-lines insurance carrier based in the Mid-Atlantic. The company has hired a consultant to design and build a computer simulation model of their current personal automobile physical damage insurance claim handling process. The company’s auto claims are all handled via 24 hour national claims processing center staffed with 60 claim adjusters. Each claim adjuster is currently required to the handle up to 20 separate claims at time. Claims can be reported by policy holders through an online process via a phone call to the claim center.
Simulation Objectives: Federal Insurance hopes that by simulating the current auto physical damage claim adjustment system they will be able to gain insights into the system that will enable the company to improve the current process performance. The company is interested in evaluating the following aspects of the current process:
Average processing time for claims Resource utilization Though put capability at various resource levels
Simulation Methodology: A three-phase simulation approach will be utilized for the model. An analysis of historical claim data for the company was utilized to develop some of the model parameters (see appendix for analysis of claims data).
The inversion random sampling method was used for estimating the mean inter-arrival times for new loss notices into the system. The Box-Mueller polar variation transform was used to estimate the process durations for evaluating and for settling claims.
The presentation of this model will focus on the design of the simulation algorithm which is written in pseudo code rather than a formal programming language.
Model Validation and Testing: The following steps were used in the model verification and testing process:
1. Validation of pseudo-random number generator to insure that pseudo-random numbersare uniformly distributed in (0,1) and that they satisfy statistical criteria of independence.
2. Similar validation of the stochastic variate generators.
3. Validation of the simulation program logic by printing out status variables, future event list, and other relevant data structures each time an event takes place in the simulation and check by hand whether the data structures are updated appropriately.
4. Validation of model relationships by engaging company management in checking that model’s assumptions about the actual system processes are credible.
5. Validation of model output by comparing actual data, where available with the output obtained from the simulation model.
1
Declaration of Variables
Constant MaxEnt = 15,000
Constant MaxC = 15,000
Type EntDetails ‘Info for each entity
Name as string ‘For output
Avail as integer ‘Boolean for scheduling
TimeCell as integer ‘Next event time if scheduled
NextAct as integer ‘Next B if scheduled
Util as integer ‘Total busy time so far
End Type
RunDuration as integer ‘Length of simulation
Clock as integer ‘Current simulation time
PrevClock as Integer ‘Previous simulation time
CurrEnt as integer ‘Current entity
NumCurrEnts as integer ‘Number of current entities
CStarted as integer ‘Boolean check for C phase
NumCs as integer ‘Number of Cs
Adjust as integer ‘Number of adjuster resources
NewClaim as integer ‘Number of new claims started
NewClaimQ ‘Number of claims in NewClaimQ
EvaluatedClaimQ ‘Number of claims in EvaluateClaimsQ
ClosedClaim as integer ‘Number of claims closed
Details (MaxEnt) as EntDetails ‘Array of entity info
CurrentEntArray (MaxEnt) as integer ‘Array of entities found by A Phase
2
Sub Main
Initialize variables
Set RunDuration = 0 ‘Initialize RunDuration
Set Clock = 0 ‘Initialize simulation time
Set PrevClock = 0 ‘Initialize previous simulation time
Set NumCs = 0 ‘Initialize number of Cs
Set NewClaim = 0 ‘Initialize number of new claims started
Set NewClaimQ = 0 ‘Initialize number of claims in NewClaimQ
Set EvaluatedClaimQ = 0 ‘Initialize number of claims in EvaluateClaimsQ
Set ClosedClaim = 0 ‘Initialize number of closed claim
Set Parameters
Set Simulation run length = 60,000 ‘Initialize simulation run length to 60,000 minutes
Set Observation interval = 60 ‘Initialize model observation interval to 60 minutes
Set Adjust = 60 ‘Initialize number of resources to 60
Set LossNotice mean inter-arrival time = 12 ‘Initialized mean inter-arrival time for claims to 12 minutes
Set Mean ClaimEval time = 180 ‘Initialize mean claim evaluation duration to 180 minutes
Set mean ClaimSettle time = 60 ‘Initialize mean claim settlement duration to 60 minutes
End Sub
3
Sub Simulate
‘Calls A, B and C Phases after initialization
Do While Clock < RunDuration
A Phase
B Phase
C Phase
Do Events
Loop
End Sub
4
Sub A Phase
‘Performs time scan by examining the Details array
‘Checks all entities for which Avail is False, looks for the smallest time cells
‘Min time cell entities stored in CurrEntArraay
Initialize NumCurrEnts = 0 ‘Set CurrEnt counter
Initialize Minm = 50,000 ‘Set Minm value
For Entity = 1 to NumEnts ‘Go through Details Array
If Details(Entity) Avail = False Then ‘Skip if Avail
If Details (Entity) TimeCell <= Minm Then ‘Find if Minm > TimeCell
NumCurrEnt = 1 ‘Reset NumCurrEnts
Else: NumCurrEnts = NumCurrEnts + 1 ‘or Increment NumCurrEnts
End If
End If
Next
If Minm = 50,000 Then
Debug
Stop
Else If Minm < 0
Debug
Stop
Else Set Clock = Minm ‘Found next Clock value
5
End If
End Sub
Sub B Phase
‘Works through the CurrEnt Array and executes the correct Bs
Display EntDetails
For Entity = 1 to NumCurrEnts ‘Work through CurrEntArray
CurrEnt = CurrEntArray (Entity) ‘Take CurrEnt number
Details (CurrEnt) Avail = True ‘Set CurrEnt as Avail
Select Case Details (CurrEnt) NextAct ‘Now do the correct B activity
Case 1
B1
Case 2
B2
Case 3
B3
Case 4
B4
Case 5
B5
Case Else
Debug
6
End Select
Next
End Sub
Sub C Phase
‘Attempt each C
CStarted = True
Repeat Until CStarted = False
C1
C2
C3
C4
C5
Loop
End Sub
7
Sub Schedule
‘Schedules an entity for a B activity
With Details (ThisEnt)
If Avail = False Then
Debug
Stop
End If
Avail = False
NextAct = NextB
If GetClock + ThisDuration > GetRunDuration Then
ThisDuration = GetRunDuration – GetClock
End If
TimeCell = GetClock + ThisDuration
Util = Details(ThisEnt) Util + ThisDuration
Update Adjust = Adjust - .05 ‘Decrement Adjuster resource by .05
End
End Sub
8
Sub B1 Arrival of a Loss Notice (claim)
NewClaim = NewClaim +1
NewClamQ = NewClaimQ + 1
Schedule PresentLossNotice
Set x=0 ‘Initialize x
Set λ = 5 ‘Set parameter rate to 5 arrivals per hour
Set u=Rand() ‘Take random number
Compute x = log(1-u)/(-λ) ‘Compute value x using Box-Muller polar variation
Return x ‘The required sample value from the negative exponential function
End
‘Data structures
‘x = integer which will be the required sample
‘u = a real variable which will hold a uniform [0,1) random number
‘λ = parameter rate
9
End Sub
Sub B2 End of Claim Evaluation
EvaluatedClmQ = EvaluateClmQ +1
End Sub
Sub B3 End of Claim Settlement
ClosedClaim = ClosedClaim +1
End Sub
10
Sub C1 Begin Claim Evaluation
Set ThisAdjust as integer
ThisAdjust = FirstAdjust - .05
Do While NewClaimQ > 0 And ThisAdjust < LastAdjust
ThisAdjust = ThisAdjust + .05
If ThisAdjust >= >.05 Then
Set CStarted
NewClaimQ = NewClaimQ – 1
Schedule ThisAdjust
Repeat ‘Run Box-Mueller polar variation transform
v1 = 2 * Rand() ‘Compute v1
v2 = 2 * Rand () ‘Compute v2
w = v1 * v1+v2 ‘Form w
Until (w<= 1) ‘Reject if w too large
z1 = v1 * Sqrt (-2 *LOG (w)/w) ‘Form z1 and z2
11
z1 = v1 * Sqrt (-2 *LOG (w)/w)
Return z1 and z2 ‘Return with standard normal variates
If z1 or z2 < 0
Repeat
End Sub
Sub B4 Observation of Queue Lengths
NewClmRec = NewClaimQ
ClaimsEval = EvaluatedClaimQ
Obs = Obs +1
Schedule Observer, 60, ObsInterval
End Sub
12
Appendix A Claim Adjustment Process Flow Chart
13
Notice of Claim Received
Start
New Claim Queue
Claim is Evaluated
Appendix B Analysis of claim occurrence
Year Claims Reported Total Paid Claims Avg. Claim Size Average Claims Per Day Average Claims per hour 2008 43,840 135,771,000 3,097 120 52009 46,118 133,844,000 2,902 126 52010 45,104 129,989,000 2,882 124 52011 47,372 140,089,000 2,957 130 52012 41,458 152,345,000 3,675 114 5
Average: 44,778 138,407,600 3,103 123 5
14
Settle Claim
End
Evaluated Claim Queue
Claim data is from company Annual Statement Schedule P.
Appendix C
15
1-7 days 8 - 14 days 15-21 days 22 -30 days 31 - 60 days
Over 60 days
0%
10%
20%
30%
40%
50%
60%
70%
Claim Processing Time
Note: Above exhibit based on estimated processing times.
Appendix D
16
Appendix F
17
Appendix G
18
19