XML Schema "ccmsk.xsd"
Target Namespace:

  http://www.iro.umontreal.ca/lecuyer/contactcenters/msk

Components:

  1 global element, 121 local elements, 35 complexTypes, 11 simpleTypes, 2 element groups

Schema Location:

  /u/simardr/java/contactcenters/source/umontreal/iro/lecuyer/schemas/ccmsk.xsd, see XML source

Imports Schemas (3):

  cc.xsd [src], ccapp.xsd [src], ssj.xsd [src]

Annotation
Defines types for the parameters of the blend/multi-skill call center simulator. The main complex type defined in this schema is `CallCenterParams` which represents the whole call center. An element of this type with name `MSKCCParams` is also defined in this schema.

All Element Summary
agent (type ccmsk:AgentParams) | Specifies the individual agents composing the group, with a particular schedule and attributes for each agent.
Type: | ccmsk:AgentParams
Content: | complex, 1 attribute, 2 elements
Defined: | locally at 1 location
agentGroup (type ccmsk:AgentGroupParams) | Determines the parameters for each agent group.
Type: | ccmsk:AgentGroupParams
Content: | complex, 12 attributes, 15 elements
Defined: | locally at 1 location
agentGroupInfo (type ccmsk:DialerAgentGroupParams) | Describes the agent groups attached to the dialer, and how the dialer's policy moves agents from inbound groups to outbound groups.
Type: | ccmsk:DialerAgentGroupParams
Content: | complex, 7 attributes, 4 elements
Defined: | locally at 1 location
agentGroupRanks (type ssj:doubleList) | Determines the vector of ranks used for selecting an agent group at a given stage of routing.
Type: | ssj:doubleList
Content: | simple
Defined: | locally at 1 location
agentGroupRanksFunc (type ssj:Named) | Represents a user-defined function computing ranks.
Type: | ssj:Named
Content: | complex, 1 attribute, 1 element
Defined: | locally at 1 location
agentGroupRanksRel (type ssj:doubleList) | Determines the vector of ranks used for selecting an agent group at a given stage of routing relative to the previously used vector.
Type: | ssj:doubleList
Content: | simple
Defined: | locally at 1 location
agentGroupSegment (type ccmsk:SegmentParams) | Similar to `inboundTypeSegment` for agent groups.
Type: | ccmsk:SegmentParams
Content: | complex, 1 attribute, 2 elements
Defined: | locally at 1 location
all (type ccmsk:ConditionParamsList) | Verifies that all the contained conditions apply.
Type: | ccmsk:ConditionParamsList
Content: | complex, 10 elements
Defined: | locally at 1 location
arrivalProcess (type ccmsk:ArrivalProcessParams) | Gives the parameters of a detached arrival process that can generate calls of several types.
Type: | ccmsk:ArrivalProcessParams
Content: | complex, 15 attributes, 16 elements
Defined: | locally at 2 locations
arrivalRates (type cc:MultiPeriodGenParams) | Determines the probability distribution for the arrival rate of each period of the horizon.
Type: | cc:MultiPeriodGenParams
Content: | complex, 6 attributes, 4 elements
Defined: | locally at 1 location
arrivals (type ssj:nonNegativeDoubleList) | Determines the parameters specific to the arrival process being used.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
arvGen (type ssj:RandomVariateGenParams) | Determines the random variate generator used to generate the total number of arrivals for each replication, when the `type` attribute is set to `DIRICHLET.`
Type: | ssj:RandomVariateGenParams
Content: | simple, 6 attributes
Defined: | locally at 1 location
busyCostPeriod (type ssj:nonNegativeDoubleList) | Determines the cost of one busy agent per time unit during individual main period.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
busyGen (type ssj:RandomVariateGenParams) | Determines the parameters of the random variate generator used to generate the busyness factor for increased variability of this arrival process.
Type: | ssj:RandomVariateGenParams
Content: | simple, 6 attributes
Defined: | locally at 1 location
busynessGen (type ssj:RandomVariateGenParams) | Determines the parameters of the random variate generator used to generate the busyness factor for increased variability of arrival processes.
Type: | ssj:RandomVariateGenParams
Content: | simple, 6 attributes
Defined: | locally at 1 location
call (type ccmsk:ProducedCallTypeParams) | Determines calls produced by this source.
Type: | ccmsk:ProducedCallTypeParams
Content: | complex, 2 attributes, 1 element
Defined: | locally at 1 location
callTypeRouting (type ccmsk:CallTypeRoutingParams) | Describes the routing logic used for a specific call type by the `OVERFLOWANDPRIORITY` routing policy.
Type: | ccmsk:CallTypeRoutingParams
Content: | complex, 1 element
Defined: | locally at 1 location
callTypeSegment (type ccmsk:SegmentParams) | Similar to `inboundTypeSegment` for all call types, inbound or outbound.
Type: | ccmsk:SegmentParams
Content: | complex, 1 attribute, 2 elements
Defined: | locally at 1 location
case (type ccmsk:RoutingCaseParams) | Describes a case by a condition, and vectors of ranks used if the condition applies.
Type: | ccmsk:RoutingCaseParams
Content: | complex, 16 elements
Defined: | locally at 1 location
ccmsk:MSKCCParams | Main element representing parameters of a call center.
Type: | ccmsk:CallCenterParams
Content: | complex, 16 attributes, 17 elements
Used: | never
conferenceTime (type ccmsk:ServiceTimeParams) | Determines the distribution of the conference times for calls of this type.
Type: | ccmsk:ServiceTimeParams
Content: | complex, 8 attributes, 4 elements
Defined: | locally at 1 location
copulaSigma (type ssj:DoubleArray) | Determines the correlation matrix used by the Gamma-Poisson doubly stochastic arrival process with correlared Gamma rates.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
custom (type ssj:Named) | Represents a user-defined condition.
Type: | ssj:Named
Content: | complex, 1 attribute, 1 element
Defined: | locally at 1 location
data (type ssj:IntArray) | Determines the data used to estimate the parameters of the arrival process.
Type: | ssj:IntArray
Content: | complex, 1 element
Defined: | locally at 1 location
default (type ccmsk:DefaultCaseParams) | Describes the default case with vectors of ranks used if no case applies.
Type: | ccmsk:DefaultCaseParams
Content: | complex, 6 elements
Defined: | locally at 1 location
defaultArrivalProcess (type ccmsk:ArrivalProcessParams) | Select the type of arrival process used by default in all the arrival processes for the cases when it is not specified.
Type: | ccmsk:ArrivalProcessParams
Content: | complex, 15 attributes, 16 elements
Defined: | locally at 1 location
delaysGT (type ssj:NonNegativeDurationArray) | Determines the matrix of delays giving, for each (agent group, contact type) pair, the minimal delay a contact of the corresponding type must wait to be accepted for possible service by an agent in the corresponding group.
Type: | ssj:NonNegativeDurationArray
Content: | complex, 1 element
Defined: | locally at 1 location
dialer (type ccmsk:DialerParams) | Gives the parameters of a detached dialer that can generate calls of several types.
Type: | ccmsk:DialerParams
Content: | complex, 17 attributes, 7 elements
Defined: | locally at 2 locations
dialerLimit (type ccmsk:DialerLimitParams) | Determines limits on the number of calls that can be dialed during a given time interval.
Type: | ccmsk:DialerLimitParams
Content: | complex, 3 attributes, 1 element
Defined: | locally at 1 location
disconnectTime (type cc:MultiPeriodGenParams) | Determines the probability distribution of the time an agent remains unavailable at the end of a service if it disconnects.
Type: | cc:MultiPeriodGenParams
Content: | complex, 6 attributes, 4 elements
Defined: | locally at 1 location
either (type ccmsk:ConditionParamsList) | Verifies that at least one of the contained conditions applies.
Type: | ccmsk:ConditionParamsList
Content: | complex, 10 elements
Defined: | locally at 1 location
expectedWaitingTimeThresh (type ssj:nonNegativeDurationList) | Determines the minimal expected waiting time for a customer to be offered the option to be called back.
Type: | ssj:nonNegativeDurationList
Content: | simple
Defined: | locally at 1 location
expectedWaitingTimesMult (type ssj:nonNegativeDoubleList) | Determines the factor multiplying the expected waiting time when determining how long a customer will wait in virtual queue before it is called back.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
failTime (type cc:MultiPeriodGenParams) | Similar to `reachTime` for the dialing delay necessary for a dialed call to fail.
Type: | cc:MultiPeriodGenParams
Content: | complex, 6 attributes, 4 elements
Defined: | locally at 1 location
fracBusyAgents (type ccmsk:TwoIndicesWithTypesParams) | Compares the fraction of busy agents in group with index given by the `first` attribute with that of the agent group identified by the `second` attribute.
Type: | ccmsk:TwoIndicesWithTypesParams
Content: | empty, 5 attributes
Defined: | locally at 1 location
fracBusyAgentsThresh (type ccmsk:IndexThreshWithTypeParams) | Compares the fraction of busy agents in group with index given by the `index` attribute with the threshold given by the `threshold` attribute.
Type: | ccmsk:IndexThreshWithTypeParams
Content: | empty, 4 attributes
Defined: | locally at 1 location
groupToTypeMap (type ssj:IntArray) | Determines the group-to-type map routing table.
Type: | ssj:IntArray
Content: | complex, 1 element
Defined: | locally at 1 location
idleCostPeriod (type ssj:nonNegativeDoubleList) | Determines the cost of one idle agent per time unit during individual main period.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
inboundGroup (type ccmsk:AgentGroupIndex) | Gives the index of an agent group accepting inbound calls, along with a probability of selection for the agent group.
Type: | ccmsk:AgentGroupIndex
Content: | empty, 2 attributes
Defined: | locally at 1 location
inboundType (type ccmsk:InboundTypeParams) | Determines the parameters for each inbound call type.
Type: | ccmsk:InboundTypeParams
Content: | complex, 10 attributes, 21 elements
Defined: | locally at 1 location
inboundTypeSegment (type ccmsk:SegmentParams) | Defines a segment regrouping several inbound call types, for statistical collecting.
Type: | ccmsk:SegmentParams
Content: | complex, 1 attribute, 2 elements
Defined: | locally at 1 location
incidenceMatrixGT (type ssj:BooleanArray) | Determines the group-to-type incidence matrix for this router.
Type: | ssj:BooleanArray
Content: | complex, 1 element
Defined: | locally at 1 location
incidenceMatrixTG (type ssj:BooleanArray) | Determines the type-to-group incidence matrix for this router.
Type: | ssj:BooleanArray
Content: | complex, 1 element
Defined: | locally at 1 location
lambdas (type ssj:nonNegativeDoubleList) | Determines the values of the arrival rate at each time given by `times,` when the arrival process is based on a time-varying arrival rate.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
maxAgentsPeriod (type ssj:nonNegativeIntList) | Determines the maximal number of agents that can be present in this group during each period.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
minAgentsPeriod (type ssj:nonNegativeIntList) | Similar to `maxAgentsPeriod` for the minimal number of agents in the group.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
minFreeAgentsTarget (type ssj:nonNegativeIntList) | Determines, for each main period, the total minimal number of free agents needed in the target set for performing outbound calls.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
minFreeAgentsTest (type ssj:nonNegativeIntList) | Determines, for each main period, the total minimal number of free agents needed in the test set for the dialer to perform outbound calls.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
nortaGamma (type ssj:positiveDoubleList) | Determines the first parameters used for the marginal negative binomials, for the NORTA-driven arrival process.
Type: | ssj:positiveDoubleList
Content: | simple
Defined: | locally at 1 location
nortaP (type ssj:double01iList) | Determines the second parameters used for the marginal negative binomials, for the NORTA-driven arrival process.
Type: | ssj:double01iList
Content: | simple
Defined: | locally at 1 location
nortaSigma (type ssj:DoubleArray) | Determines the correlation matrix used by the NORTA-driven arrival process.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
numAgents (type ssj:nonNegativeIntList) | Gives the number of agents for each shift of this schedule.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
numAgentsData (type ssj:IntArray) | Gives the vectors of agents for different days assumed i.i.d.
Type: | ssj:IntArray
Content: | complex, 1 element
Defined: | locally at 1 location
numAgentsData (type ssj:intList) | Gives the number of agents observed during a certain number of i.i.d.\ days, on this schedule shift.
Type: | ssj:intList
Content: | simple
Defined: | locally at 1 location
numFreeAgents (type ccmsk:TwoIndicesParams) | Compares the number of free agents in group with index given by the `first` attribute with that of the agent group identified by the `second` attribute.
Type: | ccmsk:TwoIndicesParams
Content: | empty, 3 attributes
Defined: | locally at 1 location
numFreeAgentsThresh (type ccmsk:IndexThreshIntParams) | Compares the number of free agents in group with index given by the `index` attribute with the threshold given by the `threshold` attribute.
Type: | ccmsk:IndexThreshIntParams
Content: | empty, 3 attributes
Defined: | locally at 1 location
outboundGroup (type ccmsk:AgentGroupIndex) | Gives the index of an agent group accepting outbound calls, along with a probability of selection for the agent group.
Type: | ccmsk:AgentGroupIndex
Content: | empty, 2 attributes
Defined: | locally at 1 location
outboundType (type ccmsk:OutboundTypeParams) | Determines the parameters for each outbound call type.
Type: | ccmsk:OutboundTypeParams
Content: | complex, 11 attributes, 26 elements
Defined: | locally at 1 location
outboundTypeSegment (type ccmsk:SegmentParams) | Similar to `inboundTypeSegment` for outbound call types.
Type: | ccmsk:SegmentParams
Content: | complex, 1 attribute, 2 elements
Defined: | locally at 1 location
patienceTime (type cc:MultiPeriodGenParams) | Determines the distribution and random variate generator for the patience times of calls of this type.
Type: | cc:MultiPeriodGenParams
Content: | complex, 6 attributes, 4 elements
Defined: | locally at 1 location
patienceTimesMultCallBack (type ssj:nonNegativeDoubleList) | Determines the patience time multiplier for customers in the virtual queue but joining the regular queue because there is no agent at the time they are called back.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
patienceTimesMultNoVirtualQueue (type ssj:nonNegativeDoubleList) | Determines the multiplier for the patience time of customers refusing to join the virtual queue.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
perUseCostPeriod (type ssj:nonNegativeDoubleList) | Determines the cost incurred when an agent in this group starts a service during individual main period.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
periodSegment (type ccmsk:SegmentParams) | Similar to `inboundTypeSegment` for main periods.
Type: | ccmsk:SegmentParams
Content: | complex, 1 attribute, 2 elements
Defined: | locally at 1 location
poissonGammaRate (type ssj:nonNegativeDoubleList) | Determines the arrival rate parameters for the Poisson-gamma arrival process.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
poissonGammaShape (type ssj:nonNegativeDoubleList) | Determines the shape parameters for the Poisson-gamma arrival process.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
preServiceTimeNoConf (type ccmsk:ServiceTimeParams) | Determines the distribution of the pre-service times for calls of this type.
Type: | ccmsk:ServiceTimeParams
Content: | complex, 8 attributes, 4 elements
Defined: | locally at 1 location
previewTime (type ccmsk:ServiceTimeParams) | Determines the distribution of the preview times for calls of this type.
Type: | ccmsk:ServiceTimeParams
Content: | complex, 8 attributes, 4 elements
Defined: | locally at 1 location
probAbandon (type ssj:double01iList) | Determines the probability of immediate abandonment, for each main period.
Type: | ssj:double01iList
Content: | simple
Defined: | locally at 1 location
probAgents (type ssj:nonNegativeDoubleList) | Determines the presence probability for each agent in the group and each main period.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 2 locations
probDisconnect (type ssj:double01iList) | Determines the probability that an agent of this group becomes unavailable (temporarily disconnects) for a random time after it has served a call, for each main period.
Type: | ssj:double01iList
Content: | simple
Defined: | locally at 1 location
probPeriod (type ssj:double01iList) | Determines the probability for a call of the specified type to be produced by the associated call source, for each main period.
Type: | ssj:double01iList
Content: | simple
Defined: | locally at 1 location
probRPC (type ssj:double01iList) | Determines the probability of right party connect after a customer is reached by the dialer, for each main period.
Type: | ssj:double01iList
Content: | simple
Defined: | locally at 1 location
probReach (type ssj:double01iList) | Determines the probability of reaching a customer (right party connect) when dialing, for each main period.
Type: | ssj:double01iList
Content: | simple
Defined: | locally at 1 location
probTransfer (type ssj:DoubleArray) | Gives a I x P matrix of probabilities of transfer.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
probTransferWait (type ssj:DoubleArray) | Gives a I x P matrix of probabilities that the primary agent in group i waits until the transferred call arrived during main period p reaches a secondary agent or abandons, before the primary agent gets free.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
probVirtualQueue (type ssj:double01iList) | Determines the probability that a customer accepts to join the virtual queue, and be called back at a later time, provided that the customer is offered the option to be called back.
Type: | ssj:double01iList
Content: | simple
Defined: | locally at 1 location
probVirtualQueueCallBack (type ssj:double01iList) | Determines the probability of success when calling back a customer in the virtual queue.
Type: | ssj:double01iList
Content: | simple
Defined: | locally at 1 location
properties (type ssj:PropertiesParams) | Defines properties for the described model.
Type: | ssj:PropertiesParams
Content: | complex, 14 elements
Defined: | locally at 2 locations
queueRanks (type ssj:doubleList) | Determines the vector of ranks used for deciding in which waiting queues a call not served immediately goes in.
Type: | ssj:doubleList
Content: | simple
Defined: | locally at 1 location
queueRanksFunc (type ssj:Named) | Similar to `agentGroupRanksFunc` for ranks associated with waiting queues.
Type: | ssj:Named
Content: | complex, 1 attribute, 1 element
Defined: | locally at 1 location
queueRanksRel (type ssj:doubleList) | Similar to `agentGroupRanksRel` for priorities of queues.
Type: | ssj:doubleList
Content: | simple
Defined: | locally at 1 location
queueSizeThresh (type ccmsk:IndexThreshIntWithTypeParams) | Compares the waiting queue with index given by the `index` attribute with the threshold given by the `threshold` attribute using the relationship given by the `rel` attribute.
Type: | ccmsk:IndexThreshIntWithTypeParams
Content: | empty, 4 attributes
Defined: | locally at 1 location
queueSizes (type ccmsk:TwoIndicesWithTypesParams) | Compares the waiting queue with index given by the `first` attribute with the waiting queue identified by the `second` attribute using the relationship given by the `rel` attribute.
Type: | ccmsk:TwoIndicesWithTypesParams
Content: | empty, 5 attributes
Defined: | locally at 1 location
queueWeights (type ssj:nonNegativeDoubleList) | Determines the weight of each waiting queue q attached to the router.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
ranksGT (type ssj:DoubleArray) | Determines the group-to-type matrix of ranks used for contact selection by some routing policies.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
ranksGTUpdate (type ccmsk:DoubleArrayWithMinWaitingTime) | Determines the matrix of ranks used for contact selection by some routing policies, for contacts having waited at least the given minimal waiting time.
Type: | ccmsk:DoubleArrayWithMinWaitingTime
Content: | complex, 1 attribute, 1 element
Defined: | locally at 1 location
ranksTG (type ssj:DoubleArray) | Determines the type-to-group matrix of ranks used for agent selection by some routing policies.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
reachTime (type cc:MultiPeriodGenParams) | Determines the distribution and random variate generator for the time to reach a customer after dialing starts for that customer.
Type: | cc:MultiPeriodGenParams
Content: | complex, 6 attributes, 4 elements
Defined: | locally at 1 location
requiredEmptyGroupsInOut (type ssj:nonNegativeIntList) | Gives the list of agent groups that must be empty, i.e. contain no busy or idle agent, for inbound agents in this virtual group to become outbound agents.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
requiredEmptyGroupsOutIn (type ssj:nonNegativeIntList) | Similar to `requiredEmptyGroupsInOut` for outbound-to-inbound moves.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
router (type ccmsk:RouterParams) | Determines the parameters of the router used to assign calls to agents.
Type: | ccmsk:RouterParams
Content: | complex, 12 attributes, 17 elements
Defined: | locally at 1 location
routingTableSources (type ccmsk:RoutingTableSources) | Determines how missing routing tables are constructed from given information.
Type: | ccmsk:RoutingTableSources
Content: | empty, 6 attributes
Defined: | locally at 1 location
schedule (type ccmsk:AgentGroupScheduleParams) | Determines the schedule of the agents in this group.
Type: | ccmsk:AgentGroupScheduleParams
Content: | complex, 5 elements
Defined: | locally at 1 location
serviceLevel (type ccapp:ServiceLevelParams) | Determines the acceptable waiting times used to estimate performance measures based on the service level.
Type: | ccapp:ServiceLevelParams
Content: | complex, 1 attribute, 2 elements
Defined: | locally at 1 location
serviceTime (type ccmsk:ServiceTimeParams) | Determines the distribution of the service times for calls of this type.
Type: | ccmsk:ServiceTimeParams
Content: | complex, 8 attributes, 4 elements
Defined: | locally at 1 location
serviceTimesMult (type ssj:positiveDoubleList) | Determines the factor multiplying the service time when an agent in this group is serving a contact of a specific type.
Type: | ssj:positiveDoubleList
Content: | simple
Defined: | locally at 1 location
serviceTimesMultCallBack (type ssj:DoubleArray) | Determines the service time multiplier for customers called back.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
serviceTimesMultNoVirtualQueue (type ssj:DoubleArray) | Determines the multiplier for the service time of customers refusing to join the virtual queue.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
serviceTimesMultTransfer (type ssj:DoubleArray) | Determines the service time multiplier for customers transferred to another agent after the service.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
shift (type ccmsk:ScheduleShiftParams) | Defines shifts that can be used in schedules of agents.
Type: | ccmsk:ScheduleShiftParams
Content: | complex, 4 attributes, 2 elements
Defined: | locally at 3 locations
shiftMatrix (type ssj:BooleanArray) | Determines the default matrix of shifts for the schedule of agents.
Type: | ssj:BooleanArray
Content: | complex, 1 element
Defined: | locally at 2 locations
shiftPart (type ccmsk:ShiftPartParams) | Determines the parts of the shift.
Type: | ccmsk:ShiftPartParams
Content: | empty, 3 attributes
Defined: | locally at 1 location
skillCounts (type ssj:nonNegativeIntList) | Determines the skill count for each agent group.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
sourceToggleTime (type ccmsk:TimeIntervalParams) | Determines the simulation times at which the call source is enabled.
Type: | ccmsk:TimeIntervalParams
Content: | empty, 2 attributes
Defined: | locally at 1 location
staffing (type ssj:nonNegativeIntList) | Determines the staffing vector giving the number of available agents during each main period.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
staffingData (type ssj:IntArray) | Gives the staffing vector for different days assumed i.i.d.
Type: | ssj:IntArray
Content: | complex, 1 element
Defined: | locally at 1 location
stage (type ccmsk:RoutingStageParams) | Describes a specific stage of the routing, for a particular call type.
Type: | ccmsk:RoutingStageParams
Content: | complex, 1 attribute, 2 elements
Defined: | locally at 1 location
stat (type ccmsk:StatConditionParams) | Establishes a condition on statistics concerning a given type of performance measure.
Type: | ccmsk:StatConditionParams
Content: | complex, 3 attributes, 2 elements
Defined: | locally at 1 location
statWithStat (type ccmsk:TwoIndicesParams) | Compares statistics given by indices `first` and `second`, using the relationship given by `rel.`
Type: | ccmsk:TwoIndicesParams
Content: | empty, 3 attributes
Defined: | locally at 1 location
statWithThresh (type ccmsk:IndexThreshParams) | Compares a statistic with index given by the `index` attribute with a constant given by `threshold` attribute, using the relationship given by the `rel` attribute.
Type: | ccmsk:IndexThreshParams
Content: | empty, 3 attributes
Defined: | locally at 1 location
targetFracAgents (type ssj:double01iList) | Determines the desired fraction of the total number of agents in all groups that serve contacts of each type.
Type: | ssj:double01iList
Content: | simple
Defined: | locally at 1 location
targetQueueRatio (type ssj:nonNegativeDoubleList) | Determines the target queue ratio used by queue-ratio overflow router.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 1 location
times (type ssj:nonNegativeDurationList) | Determines the times at which the arrival rate is specified, for some Poisson process with a time-varying arrival rate.
Type: | ssj:nonNegativeDurationList
Content: | simple
Defined: | locally at 1 location
transferTarget (type ccmsk:ProducedCallTypeParams) | Determines the possible type identifiers of the new (virtual) call which is created when a call is transferred by an agent to another agent.
Type: | ccmsk:ProducedCallTypeParams
Content: | complex, 2 attributes, 1 element
Defined: | locally at 1 location
transferTime (type ccmsk:ServiceTimeParams) | Determines the distribution of the transfer times for calls of this type.
Type: | ccmsk:ServiceTimeParams
Content: | complex, 8 attributes, 4 elements
Defined: | locally at 1 location
typeToGroupMap (type ssj:IntArray) | Determines the type-to-group map routing table.
Type: | ssj:IntArray
Content: | complex, 1 element
Defined: | locally at 1 location
types (type ssj:nonNegativeIntList) | Gives the list of call types for which this limit applies.
Type: | ssj:nonNegativeIntList
Content: | simple
Defined: | locally at 1 location
values (type embedded) | Determines the content of the segment, i.e., the indices of the components included in it.
Type: | embedded (list of ssj:nonNegativeInt)
Content: | simple
Defined: | locally at 1 location
weightPeriod (type ssj:nonNegativeDoubleList) | Determines the weight of this call type during individual main period.
Type: | ssj:nonNegativeDoubleList
Content: | simple
Defined: | locally at 2 locations
weightsGT (type ssj:DoubleArray) | Determines the group-to-type matrix of weights used for contact selection by some routing policies.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location
weightsTG (type ssj:DoubleArray) | Determines the type-to-group matrix of weights used for agent selection by some routing policies.
Type: | ssj:DoubleArray
Content: | complex, 1 element
Defined: | locally at 1 location

Complex Type Summary
ccmsk:AgentGroupIndex | Gives the index of an agent group with a probability that the agent group is selected.
Content: | empty, 2 attributes
Includes: | definitions of 2 attributes
Used: | at 2 locations
ccmsk:AgentGroupParams | Contains the parameters for an agent group in a blend/multi-skill call center.
Content: | complex, 12 attributes, 15 elements
Includes: | definitions of 11 attributes and 14 elements
Used: | at 1 location
ccmsk:AgentGroupScheduleParams | Represents the schedule of agents in a specific group.
Content: | complex, 5 elements
Includes: | definitions of 5 elements
Used: | at 1 location
ccmsk:AgentParams | Defines parameters for an individual agent.
Content: | complex, 1 attribute, 2 elements
Includes: | definition of 1 element
Used: | at 1 location
ccmsk:ArrivalProcessParams | Represents the parameters for an arrival process producing inbound calls.
Content: | complex, 15 attributes, 16 elements
Includes: | definitions of 12 attributes and 13 elements
Used: | at 2 locations
ccmsk:CallCenterParams | Specifies the common as well as call-type specific parameters for a blend and multi-skill call center model.
Content: | complex, 16 attributes, 17 elements
Includes: | definitions of 16 attributes and 17 elements
Used: | at 1 location
ccmsk:CallSourceParams | Defines the parameters for a call source generating inbound or outbound calls, possibly of more than one types.
Content: | complex, 3 attributes, 3 elements
Includes: | definitions of 2 attributes and 2 elements
Used: | at 2 locations
ccmsk:CallTypeParams | Represents the parameters common for inbound and outbound call types, used by blend/multi-skill call center models.
Content: | complex, 10 attributes, 20 elements
Includes: | definitions of 9 attributes and 19 elements
Used: | at 2 locations
ccmsk:CallTypeRoutingParams | Describes the routing logic for a specific call type by a sequence of stages defined by a minimal waiting time, and functions generating vectors of ranks.
Content: | complex, 1 element
Includes: | definition of 1 element
Used: | at 1 location
ccmsk:ConditionParams | Represents a condition on the state of a call center.
Content: | complex, 10 elements
Used: | at 1 location
ccmsk:ConditionParamsList | Represents a list of conditions.
Content: | complex, 10 elements
Used: | at 2 locations
ccmsk:DefaultCaseParams | Contains the vectors of ranks used by default, if no other case applies for a given routing stage.
Content: | complex, 6 elements
Used: | at 1 location
ccmsk:DialerAgentGroupParams | Provides information about a virtual agent group containing inbound and outbound groups, and managed by a dialer.
Content: | complex, 7 attributes, 4 elements
Includes: | definitions of 7 attributes and 4 elements
Used: | at 1 location
ccmsk:DialerLimitParams | Determines parameters of a limit imposed on the number of dialed calls during a given time interval.
Content: | complex, 3 attributes, 1 element
Includes: | definitions of 1 attribute and 1 element
Used: | at 1 location
ccmsk:DialerParams | Parameters for the dialer, for blend/multi-skill call center.
Content: | complex, 17 attributes, 7 elements
Includes: | definitions of 14 attributes and 4 elements
Used: | at 1 location
ccmsk:DoubleArrayWithMinWaitingTime | Represents a 2D array with an associated minimal waiting time.
Content: | complex, 1 attribute, 1 element
Includes: | definition of 1 attribute
Used: | at 1 location
ccmsk:InboundTypeParams | Defines the parameters for an inbound call type, for blend/multi-skill call center.
Content: | complex, 10 attributes, 21 elements
Includes: | definition of 1 element
Used: | at 1 location
ccmsk:IndexThreshIntParams | Same as `IndexThreshParams` but the threshold is an integer.
Content: | empty, 3 attributes
Includes: | definitions of 3 attributes
Used: | at 2 locations
ccmsk:IndexThreshIntWithTypeParams | Contains the parameters for a condition comparing an indexed quantity with a fixed integer threshold, possibly for a specific call type.
Content: | empty, 4 attributes
Includes: | definition of 1 attribute
Used: | at 1 location
ccmsk:IndexThreshParams | Contains the parameters for a condition comparing an indexed quantity, e.g., the service level for a given call type, with a fixed threshold.
Content: | empty, 3 attributes
Includes: | definitions of 3 attributes
Used: | at 2 locations
ccmsk:IndexThreshWithTypeParams | Contains the parameters for a condition comparing an indexed quantity with a fixed threshold, possibly for a specific call type.
Content: | empty, 4 attributes
Includes: | definition of 1 attribute
Used: | at 1 location
ccmsk:OutboundTypeParams | Defines the parameters for an outbound call type, for blend/multi-skill call center.
Content: | complex, 11 attributes, 26 elements
Includes: | definitions of 1 attribute and 6 elements
Used: | at 1 location
ccmsk:ProducedCallTypeParams | Determines the parameters of a call type produced by a call source.
Content: | complex, 2 attributes, 1 element
Includes: | definitions of 2 attributes and 1 element
Used: | at 2 locations
ccmsk:RouterParams | Represents the router's parameters for a blend/multi-skill call center.
Content: | complex, 12 attributes, 17 elements
Includes: | definitions of 12 attributes and 17 elements
Used: | at 1 location
ccmsk:RoutingCaseParams | Represents a case inside a routing stage, and described using a routing condition along with vectors of ranks.
Content: | complex, 16 elements
Used: | at 1 location
ccmsk:RoutingStageParams | Describes a specific stage of routing for a particular call type by using a waiting time, and a sequence of cases.
Content: | complex, 1 attribute, 2 elements
Includes: | definitions of 1 attribute and 2 elements
Used: | at 1 location
ccmsk:RoutingTableSources | Determines how missing routing information can be inferred from alternative data structures.
Content: | empty, 6 attributes
Includes: | definitions of 6 attributes
Used: | at 1 location
ccmsk:ScheduleShiftParams | Defines a shift in the schedule of an agent group.
Content: | complex, 4 attributes, 2 elements
Includes: | definitions of 4 attributes and 2 elements
Used: | at 1 location
ccmsk:SegmentParams | Gives parameters for a segment which is defined here as a group of contact types, agent groups, or main periods.
Content: | complex, 1 attribute, 2 elements
Includes: | definition of 1 element
Used: | at 5 locations
ccmsk:ServiceTimeParams | Represents parameters for service times.
Content: | complex, 8 attributes, 4 elements
Includes: | definitions of 2 attributes
Used: | at 5 locations
ccmsk:ShiftPartParams | Defines a part of a shift in the schedule of an agent group.
Content: | empty, 3 attributes
Includes: | definition of 1 attribute
Used: | at 1 location
ccmsk:StatConditionParams | Regroups the parameters for a condition on statistics collected during some time intervals.
Content: | complex, 3 attributes, 2 elements
Includes: | definitions of 3 attributes and 2 elements
Used: | at 1 location
ccmsk:TimeIntervalParams | Represents a time interval specified by a starting and an ending time.
Content: | empty, 2 attributes
Includes: | definitions of 2 attributes
Used: | at 3 locations
ccmsk:TwoIndicesParams | Contains the parameters for a condition comparing two indexed quantities, e.g., the size of two specific queues in a model.
Content: | empty, 3 attributes
Includes: | definitions of 3 attributes
Used: | at 3 locations
ccmsk:TwoIndicesWithTypesParams | Contains the parameters for a condition comparing two index quantities possibly for specific call types.
Content: | empty, 5 attributes
Includes: | definitions of 2 attributes
Used: | at 2 locations

Simple Type Summary
ccmsk:AgentSelectionScore | Parameter indicating how the agent selection score is computed by agents' preference-based routers.
Used: | at 1 location
ccmsk:ContactSelectionScore | Parameter indicating how the contact selection score is computed by agents' preference-based routers.
Used: | at 1 location
ccmsk:CorrelationFit | Parameter selecting the algorithm used to compute the correlation matrix in the Poisson gamma rate arrival process.
Used: | at 1 location
ccmsk:GammaShapeEstimatorType | Parameter selecting the method used to estimate the shape parameter in the Poisson gamma arrival process.
Used: | at 1 location
ccmsk:GroupToTypeMapSource | Possible structures from which the missing group-to-type map can be inferred if it is needed by a routing policy.
Used: | at 1 location
ccmsk:IncidenceMatrixGTSource | Possible structures from which the missing group-to-type incidence matrix can be inferred if it is needed by a routing policy.
Used: | at 1 location
ccmsk:IncidenceMatrixTGSource | Possible structures from which the missing type-to-group incidence matrix can be inferred if it is needed by a routing policy.
Used: | at 1 location
ccmsk:RanksGTSource | Possible structures from which the missing group-to-type matrix of ranks can be inferred if it is needed by a routing policy.
Used: | at 1 location
ccmsk:RanksTGSource | Possible structures from which the missing type-to-group matrix of ranks can be inferred if it is needed by a routing policy.
Used: | at 1 location
ccmsk:Relationship | Represents a relationship between two quantities.
Used: | at 3 locations
ccmsk:TypeToGroupMapSource | Possible structures from which the missing type-to-group map can be inferred if it is needed by a routing policy.
Used: | at 1 location

Element Group Summary
ccmsk:Conditions |
Content: | 10 elements
Includes: | definitions of 10 elements
Used: | at 2 locations
ccmsk:VectorsOfRanks |
Content: | 6 elements
Includes: | definitions of 6 elements
Used: | at 2 locations

XML Source

<?xml version="1.0"?> <xsd:schema elementFormDefault="unqualified" jxb:version="2.0" targetNamespace="http://www.iro.umontreal.ca/lecuyer/contactcenters/msk" xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://www.iro.umontreal.ca/lecuyer/contactcenters" xmlns:ccapp="http://www.iro.umontreal.ca/lecuyer/contactcenters/app" xmlns:ccmsk="http://www.iro.umontreal.ca/lecuyer/contactcenters/msk" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:ssj="http://www.iro.umontreal.ca/lecuyer/ssj" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation> Defines types for the parameters of the blend/multi-skill call center simulator. The main complex type defined in this schema is <tt>CallCenterParams</tt> which represents the whole call center. An element of this type with name <tt>MSKCCParams</tt> is also defined in this schema. <b/> </xsd:documentation> <xsd:appinfo> <jxb:globalBindings enableFailFastCheck="true" optionalProperty="isSet"/> <jxb:schemaBindings> <jxb:package name="umontreal.iro.lecuyer.contactcenters.msk.params"> <jxb:javadoc> <![CDATA[ Defines types for the parameters of the blend/multi-skill call center simulator. This package contains JAXB-derived classes for XML namespace <tt>http://www.iro.umontreal.ca/lecuyer/contactcenters/msk</tt>. ]]> </jxb:javadoc> </jxb:package> </jxb:schemaBindings> </xsd:appinfo> </xsd:annotation> <xsd:import namespace="http://www.iro.umontreal.ca/lecuyer/contactcenters/app" schemaLocation="ccapp.xsd"/> <xsd:import namespace="http://www.iro.umontreal.ca/lecuyer/contactcenters" schemaLocation="cc.xsd"/> <xsd:import namespace="http://www.iro.umontreal.ca/lecuyer/ssj" schemaLocation="ssj.xsd"/> <xsd:complexType name="CallCenterParams"> <xsd:annotation> <xsd:documentation> Specifies the common as well as call-type specific parameters for a blend and multi-skill call center model. These include random variate generators for service times, patience times and arrivals as well as information on the routing. This complex type defines attributes for encoding the simple information such as the number and duration of main periods in the model, the default time unit, etc. Nested elements are used for more complex information such as the description of a call type, an agent group, and routing parameters. </xsd:documentation> <!-- <xsd:appinfo> <jxb:class> <jxb:javadoc>Specifies the common as well as call-type specific parameters for a blend and multi-skill call center.</jxb:javadoc> </jxb:class> </xsd:appinfo> --> </xsd:annotation> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="properties" type="ssj:PropertiesParams"> <xsd:annotation> <xsd:documentation> Defines properties for the described model. Properties can be used to add user information for describing the parameter file, or parameters used by programs extending the simulator. </xsd:documentation> </xsd:annotation> <xsd:key name="CCPUniquePropertyName"> <xsd:selector xpath="*"/> <xsd:field xpath="@name"/> </xsd:key> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="busynessGen" type="ssj:RandomVariateGenParams"> <xsd:annotation> <xsd:documentation> Determines the parameters of the random variate generator used to generate the busyness factor for increased variability of arrival processes. At the beginning of each replication, if this element is present, a new busyness factor is generated from the given distribution, and is assumed to correspond to the global busyness of the day. If the generated factor is smaller than 1, the day is less busy than usual. If it is greater than 1, it is more busy than usual. Every base arrival rate of inbound calls is multiplied by this busyness factor to obtain the rates being used for the day. If this element is omitted, the busyness factor is deterministic and always equals 1. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="defaultArrivalProcess" type="ccmsk:ArrivalProcessParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="defaultArrivalProcess"/> </xsd:appinfo> <xsd:documentation> Select the type of arrival process used by default in all the arrival processes for the cases when it is not specified. This is to make tests with different models and many types of call processes. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="inboundType" type="ccmsk:InboundTypeParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="inboundTypes"/> </xsd:appinfo> <xsd:documentation> Determines the parameters for each inbound call type. The kth element in the parameter file corresponds to the kth inbound call type in the model. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="arrivalProcess" type="ccmsk:ArrivalProcessParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="arrivalProcesses"/> </xsd:appinfo> <xsd:documentation> Gives the parameters of a detached arrival process that can generate calls of several types. In contrast, attached arrival processes are described by <tt>arrivalProcess</tt> elements inside <tt>inboundType</tt> elements, and generate calls of a single type. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="outboundType" type="ccmsk:OutboundTypeParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="outboundTypes"/> </xsd:appinfo> <xsd:documentation> Determines the parameters for each outbound call type. The kth occurrence of this element in the parameter file describes the kth outbound call type in the model. If <i>Ki</i> is the number of inbound call types, the kth outbound call type corresponds to the ( <i>Ki</i> + k)th call type. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="dialer" type="ccmsk:DialerParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="dialers"/> </xsd:appinfo> <xsd:documentation> Gives the parameters of a detached dialer that can generate calls of several types. In contrast, an attached dialer which is described by a <tt>dialer</tt> element inside an <tt>outboundType</tt> element, can generate calls of a single type. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="1" name="agentGroup" type="ccmsk:AgentGroupParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="agentGroups"/> </xsd:appinfo> <xsd:documentation> Determines the parameters for each agent group. The ith occurrence of this element in a parameter file corresponds to the ith agent group in the model. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="shiftMatrix" type="ssj:BooleanArray"> <xsd:annotation> <xsd:documentation> Determines the default matrix of shifts for the schedule of agents. Element <tt>(j, p)</tt> of this matrix is set to <tt>true</tt> or 1 if agents on the shift <tt>j</tt> can serve calls during main period <tt>p.</tt> This matrix is used when an agent group specifies a vector of agents per shift without a matrix of shifts, i.e., when a <tt>schedule</tt> element of an agent group contains a <tt>numAgents</tt> child without a matching <tt>shiftMatrix</tt> child. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="shift" type="ccmsk:ScheduleShiftParams"> <xsd:annotation> <xsd:documentation> Defines shifts that can be used in schedules of agents. Each shift defined here must have an <tt>id</tt> attribute to be referred in the schedule local to an agent group. As opposed to <tt>shiftMatrix,</tt> shifts defined by this element are not used automatically in agent groups; they must be referred to explicitly in agent groups. </xsd:documentation> <xsd:appinfo> <jxb:property name="shifts"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="1" name="router" type="ccmsk:RouterParams"> <xsd:annotation> <xsd:documentation> Determines the parameters of the router used to assign calls to agents. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="1" name="serviceLevel" type="ccapp:ServiceLevelParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="serviceLevelParams"/> </xsd:appinfo> <xsd:documentation> Determines the acceptable waiting times used to estimate performance measures based on the service level. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="inboundTypeSegment" type="ccmsk:SegmentParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="inboundTypeSegments"/> </xsd:appinfo> <xsd:documentation> Defines a segment regrouping several inbound call types, for statistical collecting. The kth occurrence of this element defines the kth segment of inbound types. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="outboundTypeSegment" type="ccmsk:SegmentParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="outboundTypeSegments"/> </xsd:appinfo> <xsd:documentation> Similar to <tt>inboundTypeSegment</tt> for outbound call types. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="callTypeSegment" type="ccmsk:SegmentParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="callTypeSegments"/> </xsd:appinfo> <xsd:documentation> Similar to <tt>inboundTypeSegment</tt> for all call types, inbound or outbound. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="agentGroupSegment" type="ccmsk:SegmentParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="agentGroupSegments"/> </xsd:appinfo> <xsd:documentation> Similar to <tt>inboundTypeSegment</tt> for agent groups. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="periodSegment" type="ccmsk:SegmentParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="periodSegments"/> </xsd:appinfo> <xsd:documentation> Similar to <tt>inboundTypeSegment</tt> for main periods. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute default="HOUR" name="defaultUnit" type="ssj:TimeUnitParam"> <xsd:annotation> <xsd:documentation> Determines the default time unit used when no unit is given in parameters for random variate generators. This also defines the meaning, for the simulator, of one simulation time unit as well as the time unit used to format results such as average waiting times. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="queueCapacity" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Determines the maximal queue capacity at any time during the simulation. If a call cannot be served immediately while the total number of queued calls corresponds to this capacity, the new call is blocked. The queue capacity is set to infinity if this attribute is omitted. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="numPeriods" type="ssj:positiveInt" use="required"> <xsd:annotation> <xsd:documentation> Determines the number of main periods of the model. This sets the number of periods for which parameters are specified, and the number of periods composing the finite horizon for a simulation with independent replications. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="periodDuration" type="ssj:nonNegativeDuration" use="required"> <xsd:annotation> <xsd:documentation> Determines the duration of each main period. This parameter, along with the <tt>numPeriods</tt> attribute, determines the length of the finite horizon for simulation with independent replications, and is also used for normalizing performance measures corresponding to rates. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="startingDate" type="xsd:date"> <xsd:annotation> <xsd:documentation> Determines the starting date of the simulation. This corresponds to the date of the day which the model intends to simulate, and is used only for reporting. If this parameter is not specified, the current date is used. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="startingTime" type="ssj:nonNegativeDuration"> <xsd:annotation> <xsd:documentation> Determines the time at which the first main period begins. This parameter is used for reporting, and does not influence the simulation. It defaults to midnight if unspecified. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="arrivalsMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which the number of arrivals generated by all arrival processes is multiplied. This multiplier is used to change the total call volume without modifiying the parameters of each single arrival process. The default value of this attribute is 1, which results in no change to the call volume. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="patienceTimesMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the multiplier applied to each generated patience time. This parameter can be used to globally change the patience time for all call types, and defaults to 1 if unspecified. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="serviceTimesMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each service time is multiplied. This parameter can be used to globally change service times for each call type. Its default value is 1, which results in no service time perturbation. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="conferenceTimesMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each conference time is multiplied. This parameter can be used to globally change conference times for each call type. Its default value is 1, which results in no conference time perturbation. The conference time is defined as the time spent by a primary agent with a secondary agent during a call transfer. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="preServiceTimesNoConfMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each pre-service time is multiplied. This parameter can be used to globally change pre-service times for each call type. Its default value is 1, which results in no pre-service time perturbation. This pre-service time is the time spent by a secondary agent with a caller if no conference with the primary agent occurs after a call transfer. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="transferTimesMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each transfer time is multiplied. This parameter can be used to globally change transfer times for each call type. Its default value is 1, which results in no transfer time perturbation. The transfer time is the delay necessary for an agent to contact another agent for call transfer. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="previewTimesMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each preview time is multiplied. This parameter can be used to globally change preview times for each outbound call type. Its default value is 1, which results in no preview time perturbation. The preview time is the delay necessary for an agent to figure out if an outbound call is a right party connect. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="convertSchedulesToStaffing" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the schedules specified using the <tt>schedule</tt> or <tt>agent</tt> elements of each agent group need to be converted to staffing vectors internally. This conversion is necessary if one plans to alter the staffing directly, without taking account of scheduling. This attribute sets the default value of <tt>convertSchedulesToStaffing</tt> for all agent groups. One can override this attribute for a specific agent group by setting the corresponding <tt>convertScheduleToStaffing</tt> in the element <tt>agentGroup.</tt> </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="agentsMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the multiplier applied to each staffing vector of agent groups. The number of agents in a period or a shift is multiplied by this constant as well as a constant local to the agent group, and rounded to the nearest integer. By default, this attribute is set to 1, which results in no staffing perturbation. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="LastWaitingTimePredictor" name="waitingTimePredictorClass" type="xsd:string"> <xsd:annotation> <xsd:documentation> Determines the class name of the waiting time predictor when virtual queues are used. The value of this attribute should correspond to the name of a class implementing the <tt>WaitingTimePredictor</tt> interface from package <tt>umontreal.iro.lecuyer.contactcenters.expdelay.</tt> The class name can be fully qualified, or relative to the package <tt>umontreal.iro.lecuyer.contactcenters.expdelay.</tt> The default predictor uses the last observed waiting time as a prediction of the waiting time. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> <xsd:complexType abstract="true" name="CallTypeParams"> <xsd:annotation> <xsd:documentation> Represents the parameters common for inbound and outbound call types, used by blend/multi-skill call center models. These include, in particular, a name used in reports, properties which can be used by programs extending the simulator, the distribution of the patience and service times, parameters for call transfers, and parameters for call backs, etc. The name is set using the <tt>name</tt> attribute while properties are set using the <tt>properties</tt> element. <p> The required elements to enable call transfers for a given call type is <tt>probTransfer</tt> and <tt>transferTarget.</tt> The needed elements and attributes for enabling call backs is <tt>probVirtualQueue,</tt> <tt>expectedWaitingTimeThresh,</tt> and <tt>virtualQueueTargetType.</tt> </p> </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Represents the parameters common for inbound and outbound call types, used by blend/multi-skill call center models. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ssj:Named"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="weightPeriod" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Determines the weight of this call type during individual main period. If this element contains a single value, the value is used for all main periods. If this element is omitted, the weight for any period is the value given by the attribute <tt>weight.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="probAbandon" type="ssj:double01iList"> <xsd:annotation> <xsd:documentation> Determines the probability of immediate abandonment, for each main period. If this array is omitted, balking does not occur. If this array contains a single element, the given probability of balking is used for all periods. Otherwise, a probability is needed for each main period in the model. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="patienceTime" type="cc:MultiPeriodGenParams"> <xsd:annotation> <xsd:documentation> Determines the distribution and random variate generator for the patience times of calls of this type. If this element is not specified, the patience times are infinite. If, in addition, the probabilities of balking, given by <tt>probAbandon,</tt> are also 0, or if <tt>probAbandon</tt> is omitted, this results in disabled abandonment for this call type. <p> Each generated patience time is multiplied by a local factor given by the <tt>mult</tt> attribute, and by a global factor given by the <tt>patienceTimesMult</tt> attribute in <tt>MSKCCParams.</tt> Both multipliers default to 1. </p> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="serviceTime" type="ccmsk:ServiceTimeParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="serviceTimes"/> </xsd:appinfo> <xsd:documentation> Determines the distribution of the service times for calls of this type. Each occurrence of this element with the <tt>group</tt> attribute set specifies the service times of calls of this type, if served by an agent in a specific group. If the <tt>group</tt> attribute is omitted in a <tt>serviceTime</tt> element, this gives the default service time used if no group-specific service time is given. Although this element can appear more than once for a single call type, each occurrence of this element must have a <tt>group</tt> attribute with a different value, possibly with one occurrence omitting the <tt>group</tt> attribute. <p> Each generated service time is multiplied by a local factor given by the <tt>mult</tt> attribute, a call-type specific factor given by <tt>serviceTimesMult,</tt> and a global factor given by <tt>serviceTimesMult</tt> attribute from <tt>MSKCCParams.</tt> All these multipliers default to 1. </p> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="conferenceTime" type="ccmsk:ServiceTimeParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="conferenceTimes"/> </xsd:appinfo> <xsd:documentation> Determines the distribution of the conference times for calls of this type. Conference times are specified in a way similar to service times (see the preceding element <tt>serviceTime),</tt> but they are used only when an agent transferred a call to another agent. This conference time represents the time spent by the primary agent with the secondary agent, and adds up to the regular service time. The multipliers for conference times are applied in a way similar to service times, except that the attribute name for the multipliers is <tt>conferenceTimesMult.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="preServiceTimeNoConf" type="ccmsk:ServiceTimeParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="preServiceTimesNoConf"/> </xsd:appinfo> <xsd:documentation> Determines the distribution of the pre-service times for calls of this type. Pre-service times are specified in a way similar to service times (see the preceding element <tt>serviceTime),</tt> but they are used only when an agent transferred a call to another agent, and did not wait to talk with the secondary agent. This pre-service time represents the time spent by the caller with the secondary agent explaining its problem. and adds up to the regular service time. The multipliers for pre-service times are applied in a way similar to service times, except that the attribute name for the multipliers is <tt>preServiceTimesNoConfMult.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="serviceTimesMultTransfer" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Determines the service time multiplier for customers transferred to another agent after the service. This multiplier affects the service time with the primary agent, before the call transfer occurs, and is applied in addition to the regular service time multiplier given by the <tt>serviceTimesMult</tt> attribute. The given 2D array corresponds to a <i>I x P</i> matrix giving a multiplier for each agent group and main period. If this 2D array contains a single value, the given value is used for all agent groups and main periods. If the array contains a single row or column, the row or column is repeated as needed. If this element is omitted, the default multiplier of 1 is used. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="transferTime" type="ccmsk:ServiceTimeParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="transferTimes"/> </xsd:appinfo> <xsd:documentation> Determines the distribution of the transfer times for calls of this type. A transfer time occurs when an agent transfers a call to another agent. It can represent, e.g., the delay needed to dial a phone number. If this element is omitted, no transfer delay occurs during a transfer. The multipliers for transfer times are applied in a way similar to service times, except that the attribute name for the multipliers is <tt>transferTimesMult.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="probTransfer" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Gives a <i>I x P</i> matrix of probabilities of transfer. Each element <i>(i, p)</i> of this matrix gives the probability an agent in group <i>i</i> transfers a call arrived during period <i>p</i> to another agent. If this element is omitted, a default probability of transfer of 0 is assumed, i.e., there is no transfer of calls of the described type to any secondary agents. If this 2D array contains a single element, the given probability is used for all agent groups, and all main periods. If the array contains a single row or column, the row or column is repeated as needed. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="probTransferWait" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Gives a <i>I x P</i> matrix of probabilities that the primary agent in group <i>i</i> waits until the transferred call arrived during main period <i>p</i> reaches a secondary agent or abandons, before the primary agent gets free. If this element is omitted, a default probability of waiting of 0 is assumed, i.e., the primary agent is always freed after the call is transferred. If this 2D array contains a single element, the given probability is used for all agent groups, and all main periods. If the array contains a single row or column, the row or column is repeated as needed. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="transferTarget" type="ccmsk:ProducedCallTypeParams"> <xsd:annotation> <xsd:documentation> Determines the possible type identifiers of the new (virtual) call which is created when a call is transferred by an agent to another agent. Each occurrence of this element also assiciates a probability of transfer with each call type. If this element is omitted, no call transfer can occur for the described call type. </xsd:documentation> <xsd:appinfo> <jxb:property name="transferTargets"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="expectedWaitingTimeThresh" type="ssj:nonNegativeDurationList"> <xsd:annotation> <xsd:documentation> Determines the minimal expected waiting time for a customer to be offered the option to be called back. If this array contains a single value, the given value is used for all main periods. Otherwise, value <i>p</i> of the array gives a threshold for main period <i>p.</i> If the array is omitted, the default threshold of infinity is used, which disables call backs for this call type. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="expectedWaitingTimesMult" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the factor multiplying the expected waiting time when determining how long a customer will wait in virtual queue before it is called back. The time spent in virtual queue is W*m, where W is the expected waiting time, and m is the multiplier. If this array contains a single value, the given value is used for all main periods. Otherwise, value <i>p</i> of the array gives a multiplier for main period <i>p.</i> If the array is omitted, the default multiplier of 1 is used. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="probVirtualQueue" type="ssj:double01iList"> <xsd:annotation> <xsd:documentation> Determines the probability that a customer accepts to join the virtual queue, and be called back at a later time, provided that the customer is offered the option to be called back. If this array contains a single value, the given value is used for all main periods. Otherwise, value <i>p</i> of the array gives the probability for main period <i>p.</i> If the array is omitted, the default probability of 0 is used, which disables virtual queueing. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="probVirtualQueueCallBack" type="ssj:double01iList"> <xsd:annotation> <xsd:documentation> Determines the probability of success when calling back a customer in the virtual queue. When the call back succeeds, the customer is sent to an agent, or to another waiting queue if no agent is available. If this array contains a single value, the given value is used for all main periods. Otherwise, value <i>p</i> of the array gives the probability for main period <i>p.</i> If the array is omitted, the default probability of 1 is used. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="patienceTimesMultNoVirtualQueue" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the multiplier for the patience time of customers refusing to join the virtual queue. If this array contains a single value, the given value is used for all main periods. Otherwise, value <i>p</i> of the array gives the multiplier for main period <i>p.</i> If the array is omitted, the default multiplier of 1 is used. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="patienceTimesMultCallBack" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the patience time multiplier for customers in the virtual queue but joining the regular queue because there is no agent at the time they are called back. If this array contains a single value, the given value is used for all main periods. Otherwise, value <i>p</i> of the array gives the multiplier for main period <i>p.</i> If the array is omitted, the default multiplier of 1 is used. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="serviceTimesMultNoVirtualQueue" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Determines the multiplier for the service time of customers refusing to join the virtual queue. This element determines a <i>I x P</i> matrix giving the multiplier for each agent group and main period. If this matrix contains a single value, the given value is used for all agent groups and main periods. If the matrix contains a single row or column, the row or column is duplicated as needed. If this element is omitted, the default multiplier of 1 is used. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="serviceTimesMultCallBack" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Determines the service time multiplier for customers called back. If this matrix contains a single value, the given value is used for all main periods. If the matrix contains a single row or column, the row or column is duplicated as needed. If this element is omitted, the default multiplier of 1 is used. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute default="1" name="weight" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the weight associated with this call type. The weight, which measures the importance of this call type relative to the others, can be used by some routing policies, and optimization algorithms. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="serviceTimesMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each service time is multiplied. This parameter can be used to globally change service times for this call type. Its default value is 1, which results in no service time perturbation. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="conferenceTimesMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each conference time is multiplied. This parameter can be used to globally change conference times for this call type. Its default value is 1, which results in no conference time perturbation. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="preServiceTimesNoConfMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each pre-service time is multiplied. This parameter can be used to globally change pre-service times for this call type. Its default value is 1, which results in no pre-service time perturbation. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="transferTimesMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each transfer time is multiplied. This parameter can be used to globally change transfer times for this call type. Its default value is 1, which results in no transfer time perturbation. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="checkAgentsForTransfer" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the target call type for transfer takes the presence of agents in agent groups into account when determining the type of a new call. When this attribute is set to <tt>true,</tt> each time a call of the described type is transferred to another agent group, the probability of occurrence for target call type <tt>k'</tt> is reset to 0 if no idle or busy agents capable of serving calls of type <tt>k'</tt> is present. Probabilities for other call types are divided by the sum of remaining probabilities. Consequently, the target call type for transfer is <tt>k'</tt> only if such calls can be routed to an agent, possibly after some waiting time. However, this check imposes additional overhead for every processed call. When this attribute is disabled, the call may be transferred to agent group even if no connected agent can serve it. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0" name="waitingTimeDefaultVQ" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Initial default waiting time used for virtual queueing. This value is used to initialize the expected waiting time for the <tt>k</tt> previous contacts before the first contact at the beginning of the day. In order to predict the expected waiting time for new contacts, one uses the average of the waiting time of the <tt>k</tt> previous contacts (see windowSizeVQ). </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="windowSizeVQ" type="ssj:positiveInt"> <xsd:annotation> <xsd:documentation> Number of previous contacts used to predict the expected waiting time for virtual queueing. If this parameter is <tt>k</tt> , then the average of the waiting time of the <tt>k</tt> previous contacts is used as the expected waiting time predictor for new contacts. By default, the window size is 1, i.e., only the waiting time of the last contact is used to predict the expected waiting time for new arrivals. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="virtualQueueTargetType" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Determines the target call type identifier for virtual queueing. When a call is sent to a virtual queue for later callback, its type is switched to a different virtual type in order to have separate routing logic and statistics for calls waiting in virtual queue. Omitting the virtual call type index for a call type disables virtual queueing for that call type. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="ServiceTimeParams"> <xsd:annotation> <xsd:documentation> Represents parameters for service times. This extends the parameters of a random variate generator over multiple periods with a <tt>group</tt> attribute or an <tt>agent</tt> attribute used to specify on which agent group or on which agent the service times apply. For now, it is either the group or the agent that is used, or neither. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Represents parameters for service times. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="cc:MultiPeriodGenParams"> <xsd:attribute name="group" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Gives the index of the agent group for which the service time generator is concerned. If the group and the agent are omitted, service times apply to any agent. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="agent" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Gives the index of the agent for which the service time generator is concerned. If the agent and the group are omitted, service times apply to any agent. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="InboundTypeParams"> <xsd:annotation> <xsd:documentation> Defines the parameters for an inbound call type, for blend/multi-skill call center. This type inherits all elements and attributes describing a call type, and defines an additional element for attaching an arrival process to an inbound call type. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Defines the parameters for an inbound call type, for blend/multi-skill call center. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:CallTypeParams"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="arrivalProcess" type="ccmsk:ArrivalProcessParams"> <xsd:annotation> <xsd:documentation> Gives the parameters of the arrival process for this inbound call type. The given arrival process generates only calls of the described type. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="OutboundTypeParams"> <xsd:annotation> <xsd:documentation> Defines the parameters for an outbound call type, for blend/multi-skill call center. This type inherits all elements and attributes common to all call types, and adds several elements and attributes for, e.g., the probability that a dialed outbound call succeeds, distributions for dialing delays, an attached dialer, etc. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Defines the parameters for an outbound call type, for blend/multi-skill call center. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:CallTypeParams"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="probReach" type="ssj:double01iList"> <xsd:annotation> <xsd:documentation> Determines the probability of reaching a customer (right party connect) when dialing, for each main period. This array of double-precision values must contain one value in <tt>[0, 1]</tt> for each main period, or a single value. If it contains a single value, this value is used for all periods. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="reachTime" type="cc:MultiPeriodGenParams"> <xsd:annotation> <xsd:documentation> Determines the distribution and random variate generator for the time to reach a customer after dialing starts for that customer. This defaults to a discrete probability distribution returning 0 with probability 1, if unspecified, i.e., no dialing delay. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="failTime" type="cc:MultiPeriodGenParams"> <xsd:annotation> <xsd:documentation> Similar to <tt>reachTime</tt> for the dialing delay necessary for a dialed call to fail. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="probRPC" type="ssj:double01iList"> <xsd:annotation> <xsd:documentation> Determines the probability of right party connect after a customer is reached by the dialer, for each main period. This array of double-precision values must contain one value in <tt>[0, 1]</tt> for each main period, or a single value. If it contains a single value, this value is used for all periods. If it is omitted or empty, a probability of 1 is assumed for each period. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="previewTime" type="ccmsk:ServiceTimeParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="previewTimes"/> </xsd:appinfo> <xsd:documentation> Determines the distribution of the preview times for calls of this type. The preview time is used to determine if the right customer has been reached by the dialer, and is added to the service time if right party connect occurs. If a call is a wrong party connect, this gives the time the agent is busy (the service time is unused). The probability that a call is a right party connect can be adjusted using <tt>probRPC.</tt> Omitting this element results in all preview times to be 0. <p> This element works in a way similar to <tt>serviceTime</tt> except that preview times are generated for outbound calls only. Moreover, the multipliers for preview times are applied in a way similar to service times, except that the attribute name for the multipliers is <tt>previewTimesMult.</tt> </p> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="dialer" type="ccmsk:DialerParams"> <xsd:annotation> <xsd:documentation> Gives the parameters of the dialer for this outbound call type. The given dialer generates calls of the described type only. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute default="1" name="previewTimesMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the factor by which each preview time is multiplied. This parameter can be used to globally change preview times for this call type. Its default value is 1, which results in no preview time perturbation. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType abstract="true" name="CallSourceParams"> <xsd:annotation> <xsd:documentation> Defines the parameters for a call source generating inbound or outbound calls, possibly of more than one types. Call sources generating inbound calls are arrival processes while sources producing outbound calls are dialers. A call source can have two kinds of parents: a call center or a call type. When a source is a child of a call type, it is linked to that particular call type, and can generate calls of that type only. On the other hand, if a call source is bound to the call center, it can possibly generate calls of more than one types. In the latter case, <tt>call</tt> elements are used to assign probabilities to call types. The type of any new call is then generated randomly, using the given probability distribution, and independently of other calls. <p> The name assigned to the call source using the <tt>name</tt> attribute is not used by default, but it could be useful for debugging. The additional user-defined properties, set using the <tt>properties</tt> element, are also ignored, but they can be used by custom arrival processes and dialing policies. </p> </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Defines the parameters for a call source generating inbound or outbound calls, possibly of more than one type. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ssj:Named"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="sourceToggleTime" type="ccmsk:TimeIntervalParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="sourceToggleTimes"/> </xsd:appinfo> <xsd:documentation> Determines the simulation times at which the call source is enabled. Each occurrence of this element represents a time interval during which the call source is enabled, i.e., produces calls. If this element is omitted, the call source is enabled from the beginning of the first main period to the end of the last main period. This element is ignored if the <tt>sourceEnabled</tt> attribute is set to <tt>false.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="call" type="ccmsk:ProducedCallTypeParams"> <xsd:annotation> <xsd:appinfo> <jxb:property name="producedCallTypes"/> </xsd:appinfo> <xsd:documentation> Determines calls produced by this source. If the described call source is not attached to a specific call type, it generates calls of type <i>k</i> with probability <i> p <sub>k</sub> </i> . One can use <tt>call</tt> child elements to determine the call types generated by the source, along with the probabilities of each call type to be generated. If the given probabilities do not sum to 1, the values of <i> p <sub>k</sub> </i> are obtained by dividing the given probabilities by their sums. This element is not allowed if the call source is attached to a call type, </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute default="true" name="sourceEnabled" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the source producing calls of this type is active, i.e., if it produces calls. If this parameter is <tt>true,</tt> the call source is always active when performing a steady-state simulation. For simulation on a finite horizon, the activity of the call source can be influenced by <tt>sourceToggleTime</tt> elements. If this attribute is <tt>false,</tt> no call is generated by this source during the simulation. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="checkAgentsForCall" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the call source takes the presence of agents in agent groups into account when determining the type of a new call. This attribute applies for call sources producing calls of multiple types, and works as follows. When it is set to <tt>true,</tt> each time the call source produces a new call, it resets the probability of occurrence for call type <tt>k</tt> to 0 if no idle or busy agents capable of serving calls of type <tt>k</tt> is present. Probabilities for other call types are divided by the sum of remaining probabilities. Consequently, the call source produces a call of type <tt>k</tt> only if it can be routed to an agent, possibly after some waiting time. However, this check imposes additional overhead for each generated call. When this attribute is disabled, the call source may produce a call even if no connected agent can serve it. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="TimeIntervalParams"> <xsd:annotation> <xsd:documentation> Represents a time interval specified by a starting and an ending time. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Represents a time interval specified by a starting and an ending time. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:attribute name="startingTime" type="ssj:nonNegativeDuration" use="required"/> <xsd:attribute name="endingTime" type="ssj:nonNegativeDuration" use="required"/> </xsd:complexType> <xsd:complexType name="ProducedCallTypeParams"> <xsd:annotation> <xsd:documentation> Determines the parameters of a call type produced by a call source. The required attribute <tt>type</tt> is used to give the index of the produced call typ while the attribute <tt>probability</tt> can be used to set the probability that a call of the given type is produced. Alternatively, one can use <tt>probPeriod</tt> to give a period-specific probability. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Determines the parameters of a call type produced by a call source. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="probPeriod" type="ssj:double01iList"> <xsd:annotation> <xsd:documentation> Determines the probability for a call of the specified type to be produced by the associated call source, for each main period. This element overrides the <tt>probability</tt> attribute, and accepts an array of values on the [0, 1] interval. If the array contains a single element, it is used for all periods. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="type" type="ssj:nonNegativeInt" use="required"> <xsd:annotation> <xsd:documentation> Gives the index of the call type generated by the source. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="probability" type="ssj:double01i"> <xsd:annotation> <xsd:documentation> Gives the probability for the call type to be generated by the source. The default probability is 1. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> <xsd:complexType name="ArrivalProcessParams"> <xsd:annotation> <xsd:documentation> Represents the parameters for an arrival process producing inbound calls. This includes the type of the arrival process set by the <tt>type</tt> attribute as well as additional parameters specific to the chosen type. The most commonly used element is <tt>arrivals</tt> which assign arrival rates or expected number of arrivals to each main period. <p> Most arrival processes are influenced by a busyness factor which change the arrival rates. In particular, for Poisson-based arrival processes, the busyness factor simply multiplies the arrival rates. For other arrival processes, the generated number of arrivals is multiplied by the factor, and the result is rounded to the nearest integer. This factor is the product of a random variate common to all inbound call types, a multiplier specific to the arrival process and given by the <tt>arrivalsMult</tt> attribute, and a global multiplier given by the <tt>arrivalsMult</tt> attribute in <tt>MSKCCParams.</tt> The random busyness factor follows the distribution given by the <tt>busynessGen</tt> element in <tt>MSKCCParams.</tt> By default, all the multipliers are 1, and the random variate follows a degenerate distribution assigning probability 1 to the constant 1. </p> </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Represents the parameters for an inbound call arrival process, for blend/multi-skill call center. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:CallSourceParams"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="busyGen" type="ssj:RandomVariateGenParams"> <xsd:annotation> <xsd:documentation> Determines the parameters of the random variate generator used to generate the busyness factor for increased variability of this arrival process. If this element is present, a new busyness factor is generated from the given distribution, and corresponds to the busyness factor for the day. If the generated factor is smaller than 1, the day is less busy than usual for this type of arrivals. If it is greater than 1, it is more busy than usual. The base arrival rate of this type of inbound calls is multiplied by this busyness factor to obtain the rates being used. If this element is omitted, the busyness factor is deterministic and always equals 1. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:choice> <xsd:element name="data" type="ssj:IntArray"> <xsd:annotation> <xsd:documentation> Determines the data used to estimate the parameters of the arrival process. This matrix of integers must contain one row for each observation and one column for each main period. Each element of the matrix represents the number of arrivals observed on a specific day during a given period. Parameter estimation is used automatically if this element is given. Note that only some arrival processes support parameter estimation. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="arvGen" type="ssj:RandomVariateGenParams"> <xsd:annotation> <xsd:documentation> Determines the random variate generator used to generate the total number of arrivals for each replication, when the <tt>type</tt> attribute is set to <tt>DIRICHLET.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="arrivals" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the parameters specific to the arrival process being used. The effect of this array of double-precision values depends on the chosen arrival process type. For the Poisson process with piecewise-constant arrival rates, it contains <i> lambda <sub>p</sub> </i> while for Dirichlet, it contains <i> alpha <sub>p</sub> </i> . </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:sequence> <xsd:element name="poissonGammaShape" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the shape parameters for the Poisson-gamma arrival process. This array must contain one parameter per main period, or a single value which is used for all periods. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element name="poissonGammaRate" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the arrival rate parameters for the Poisson-gamma arrival process. This array must contain one parameter per main period, or a single value to be used for all periods. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="copulaSigma" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Determines the correlation matrix used by the Gamma-Poisson doubly stochastic arrival process with correlared Gamma rates. This parameter requires a <i>P x P</i> symmetric and positive-definite matrix, if it is used. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:element name="arrivalRates" type="cc:MultiPeriodGenParams"> <xsd:annotation> <xsd:documentation> Determines the probability distribution for the arrival rate of each period of the horizon. This is used only for the Poisson arrival process with randomized arrival rates. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:sequence> <xsd:element name="nortaSigma" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Determines the correlation matrix used by the NORTA-driven arrival process. This parameter requires a <i>P x P</i> symmetric and positive-definite matrix, if NORTA is used. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="nortaGamma" type="ssj:positiveDoubleList"> <xsd:annotation> <xsd:documentation> Determines the first parameters used for the marginal negative binomials, for the NORTA-driven arrival process. If the arrival process is NORTA-driven, this array is required to contain <i>P</i> elements. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element name="nortaP" type="ssj:double01iList"> <xsd:annotation> <xsd:documentation> Determines the second parameters used for the marginal negative binomials, for the NORTA-driven arrival process. If the arrival process is NORTA-driven, this array is required to contain <i>P</i> elements. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:sequence> <xsd:element name="times" type="ssj:nonNegativeDurationList"> <xsd:annotation> <xsd:documentation> Determines the times at which the arrival rate is specified, for some Poisson process with a time-varying arrival rate. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element name="lambdas" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the values of the arrival rate at each time given by <tt>times,</tt> when the arrival process is based on a time-varying arrival rate. Depending on the arrival process, this array must have the same length <i>L</i> as <tt>times,</tt> or contain <i>L-1</i> values. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:choice> </xsd:sequence> <xsd:attribute name="type" type="xsd:string"> <xsd:annotation> <xsd:documentation> Determines the type of arrival process to generate calls from. Any enum constant in the Java class <tt>ArrivalProcessType</tt> from package <tt>umontreal.iro.lecuyer.contactcenters.app</tt> is accepted as a value for this attribute. Moreover, custom simulation programs or Java archives may define additional types of arrival processes; see the <tt>ArrivalProcessFactory</tt> class from package <tt> umontreal.iro.lecuyer.contactcenters.msk.spi </tt> for more information about this. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="normalize" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines how base arrival rates are interpreted for arrival processes arising as Poisson processes. More specifically, if this attribute is set to <tt>true,</tt> arrival rates are interpreted as the expected number of arrivals during a time interval. In this case, the arrival rates given by the user or generated randomly are internally divided by the length of interval. This gives normalized arrival rates relative to the default simulation time unit. Most of the times, the intervals correspond to main periods, but they are user-defined if the <tt>type</tt> attribute is set to <tt>PIECEWISECONSTANTPOISSONINT.</tt> On the other hand, if this attribute is set to <tt>false,</tt> the simulator assumes that the arrival rates are relative to one simulation time unit so no normalization is performed. For example, when a Poisson process with piecewise-constant arrival rates has normalized parameters, <tt> lambda <sub>p</sub> </tt> indicates the average number of arrivals during simulation period <tt>p</tt> instead of the average number of arrivals per simulation time unit. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="estimateBusyness" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the parameters for the distribution of the busyness factor must be estimated with the parameters of the arrival process. If this attribute is set to <tt>true,</tt> the probability distribution of the busyness factor is set with the estimated parameters. This estimation affects how the arrivals are modeled and is not supported for all arrival processes. The busyness factor generated from the estimated distribution also affects the arrival processes for all other inbound calls. If the attribute is <tt>false</tt> (the default), only the parameters of the arrival process are estimated. This option has no effect if the <tt>data</tt> child element is not specified, and it can be set only for a single arrival process in the parameter file. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="splineSmoothingFactor" type="ssj:double01i"> <xsd:annotation> <xsd:documentation> Determines the smoothing factor for the spline representing the arrival rate. If this double-precision parameter is unspecified, it defaults to 1, which results in an interpolating spline. See the description of the <tt>CUBICSPLINE</tt> arrival process for more information on the role of this factor. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="MARKOVLINEARFIT" name="correlationFit" type="ccmsk:CorrelationFit"> <xsd:annotation> <xsd:documentation> Determines how to compute the sigma correlation matrix for the gamma norta rate arrival process. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="SINGLESHAPE" name="gammaShapeEstimatorType" type="ccmsk:GammaShapeEstimatorType"> <xsd:annotation> <xsd:documentation> This option allows to select between estimators of the shape parameter in case of the Poisson gamma arrival process. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0.95" name="gammaShapeSmoothingFactor" type="ssj:double01i"> <xsd:annotation> <xsd:documentation> Regulates the smoothness of the solution in the estimation of the gamma shape parameters for the Poisson gamma arrival process. When it is 1 there is no smoothing and shape parameters are assumed to be independent across sub-periods. This parameter is used only when <tt>gammaShapeEstimatorType</tt> is <tt>SPLINESHAPE</tt> . </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="200" name="maxIter" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> The number of iterations in the optimization routine that estimate the gamma shape parameters in the Poisson gamma arrival process. The value recommended is 200 when <tt>gammaShapeEstimatorType</tt> is <tt>SINGLESHAPE</tt> , and 1000 when <tt>gammaShapeEstimatorType</tt> is <tt>SPLINESHAPE</tt> . </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="5" name="movingWindowSize" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Sets the number of subperiods that are used to average the MME estimate in the Poisson gamma arrival process. Without averaging, the MME estimates are too noisy. If we want no averaging, we can set <tt>movingWindowSize</tt> = 1. The parameter is used only when <tt>gammaShapeEstimatorType</tt> is <tt>SPLINESHAPE</tt> . </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="200" name="numMonteCarlo" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> This is the number of Monte Carlo samples used in the estimation of the parameters by the maximum likelihood method for the gamma distribution of the busyness factors. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1.0e-4" name="varianceEpsilon" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the lower bound for the variance of busyness obtained from the gamma distribution. When the variance obtained from the estimated parameters is smaller than this bound, then the distribution is set to a constant and the variance is 0. See the description of the <tt>estimateBusyness</tt> for related information on the role of this factor. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="arrivalsMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the local multiplier of the arrival process. Any arrival process can be represented as a counting process <i>{A(t), t&gt;0}</i> where <i>A(t)</i> gives the number of arrivals during time interval <i>[0, t].</i> If multipliers are used, the arrival process becomes <i>{</i> round <i>(MA(t)), t&gt;0},</i> where round(.) rounds its argument to the nearest integer. The multiplier <i>M</i> is determined by multiplying this parameter with the global <i>arrivalsMult</i> attribute. This can be used to alter the call volume without modifying the detailed parameters of the arrival processes. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="DialerParams"> <xsd:annotation> <xsd:documentation> Parameters for the dialer, for blend/multi-skill call center. This includes the type of the dialer as well as additional parameters specific to the chosen type. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Parameters for the dialer, for blend/multi-skill call center. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:CallSourceParams"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="minFreeAgentsTest" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:documentation> Determines, for each main period, the total minimal number of free agents needed in the test set for the dialer to perform outbound calls. If this array contains a single element, the element is repeated for all main periods. This array of integers defaults to an array of 0's. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="minFreeAgentsTarget" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:documentation> Determines, for each main period, the total minimal number of free agents needed in the target set for performing outbound calls. If this array contains a single element, the element is repeated for all main periods. This array of integers defaults to an array of 1's. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="dialerLimit" type="ccmsk:DialerLimitParams"> <xsd:annotation> <xsd:documentation> Determines limits on the number of calls that can be dialed during a given time interval. Each occurrence of this element assigns a limit to a time interval. The limit may concern a subset of call types, or all call types. For example, using limits, one can impose a maximum of 50 outbound calls of a type 1 during the morning, no more than 75 outbound calls of type 2 during the afternoon, 25 outbound calls of any type between noon and 1pm, etc. We say that a limit applies at time <tt>t</tt> if <tt>t</tt> is in the limit's interval. A limit applies for call type <tt>k</tt> at time <tt>t</tt> if <tt>t</tt> is in the limit's interval, and <tt>k</tt> is in the limit's call types. If no limit applies at time <tt>t</tt> for a given call type <tt>k,</tt> the dialer can produce an unbounded number of calls of that type at time <tt>t</tt> . <p> More specifically, when an outbound call is produced, the dialer assigns a weight to each outbound call type by using the probability of each call type set by <tt>call</tt> elements. Call types that cannot be produced by the dialer get weight 0. If the dialer produces calls of a single type, a weight of 1 is given to this call type, and a weight of 0 is assigned to the other types. The dialer then checks the limits that apply. For each limit that are attained, i.e., for which the number of dialed calls correspond to the limit, the weights of the concerned call types are reset to 0. The call type is then generated randomly by fixing probabilities proportional to the remaining weights, and the number of dialed calls is updated for each limit. Note that the given limits affect only this dialer. </p> </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="agentGroupInfo" type="ccmsk:DialerAgentGroupParams"> <xsd:annotation> <xsd:documentation> Describes the agent groups attached to the dialer, and how the dialer's policy moves agents from inbound groups to outbound groups. Each occurrence of this element defiens one virtual agent group used by the dialer. This element has an effect only if the dialer's policy is set to <tt>AGENTSMOVE.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="dialerPolicy" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> Determines the dialer's policy type being used. Any enum constant in the Java class <tt>DialerPolicyType</tt> from package <tt>umontreal.iro.lecuyer.contactcenters.app</tt> is accepted as a value for this attribute. Moreover, custom simulation programs or Java archives may define additional dialer's policies; see the <tt>DialerPolicyFactory</tt> class from package <tt> umontreal.iro.lecuyer.contactcenters.msk.spi </tt> for more information about this. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="dropMismatches" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if mismatches are dropped or queued. If this attribute is set to <tt>true,</tt> any call produced by this dialer has a probability of balking set to 1. This results in any call not served immediately, which are denoted mismatches, being lost. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="preventMismatches" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the dialer should prevent mismatches. When this attribute is set to <tt>true,</tt> the dialer stops in-progress dialing if the number of free agents in the test set or target sets falls below the minimum given by <tt>minFreeAgentsTest</tt> and <tt>minFreeAgentsTarget.</tt> </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="kappa" type="xsd:double"> <xsd:annotation> <xsd:documentation> Determines the multiplicative constant used by some dialing policies to compute the number of calls to try. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0" name="c" type="xsd:int"> <xsd:annotation> <xsd:documentation> Determines the additive constant used by some dialing policies to compute the number of calls to try. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="maxBadCallRate" type="ssj:double01i"> <xsd:annotation> <xsd:documentation> Determines the maximum admitted fraction of calls waiting more than the acceptable waiting time. This parameter is used by some dialing policies only. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="mismatchRateThresh" type="ssj:double01i"> <xsd:annotation> <xsd:documentation> Determines the threshold on the mismatch rate used by some dialing policies. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="numCheckedPeriods" type="ssj:positiveInt"> <xsd:annotation> <xsd:documentation> Determines the number of testing periods used by dialing policies taking cumulative statistics (service level, mismatch rate, etc.) into account for taking their decisions. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="checkedPeriodDuration" type="ssj:nonNegativeDuration"> <xsd:annotation> <xsd:documentation> Determines the duration of the testing periods used by some dialing policies taking cumulative statistics into account. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0" name="serviceLevelIndex" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Determines the 0-based index of the service-level information matrix used if the dialing policy in use takes service level (or acceptable waiting time) into account for its decisions. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0.7" name="slInboundThresh" type="ssj:double01i"> <xsd:annotation> <xsd:documentation> Determines the outbound-to-inbound threshold for the service level. When the service level goes below this threshold, the dialer starts moving agents from outbound groups to inbound groups. This parameter is used by the <tt>AGENTSMOVE</tt> dialer's policy only. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="slOutboundThresh" type="ssj:double01i"> <xsd:annotation> <xsd:documentation> Determines the inbound-to-outbound threshold for the service level. When the service level goes above this threshold, the dialer starts moving agents from inbound groups to outbound groups. This parameter is used by the <tt>AGENTSMOVE</tt> dialer's policy only. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="useNumActionEvents" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the dialer subtracts the number of calls for which dialing is in progress from the number of calls to dial. When dial delays are large enough for the dialer to start often while phone numbers are being composed, the agents of the call center might receive too many calls to serve, which results in a large number of mismatches. If this attribute is set to <tt>true</tt> (the default), the dialer will take into account the number of calls for which dialing is in progress while determining the number of additional calls to dial. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="useRoutingMatrix" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines whether the dialer can use the routing matrix to take its decisions. Usually, a dialer's policy composes a global number of calls, and lets the call source associated with the dialer distribute them using a fixed user-defined distribution. The <tt>probability</tt> attribute of <tt>call</tt> elements can be used to control these probabilities. However, this scheme might lead to a lot of mismatches as agents might not be able to serve every possible call. This attribute can therefore be used to indicate that these complex policies may use the router's matrix to determine which call types can be assigned to which agent groups. When this attribute is set and the used policy takes it into account, the types of generated calls become proportional to the number of free agents in each managed group. For now, only the <tt>AGENTSMOVE</tt> dialer policy uses this attribute. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="DialerLimitParams"> <xsd:annotation> <xsd:documentation> Determines parameters of a limit imposed on the number of dialed calls during a given time interval. This element is a time interval which accepts an additional <tt>value</tt> giving the value of the limit, and a <tt>types</tt> child giving a set of call type identifiers on which the limit applies. See the <tt>dialerLimit</tt> element for information on how the limits are used by the dialer. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:TimeIntervalParams"> <xsd:sequence> <xsd:element minOccurs="0" name="types" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="0"/> </xsd:appinfo> <xsd:documentation> Gives the list of call types for which this limit applies. If this element is omitted or empty, the limit applies to all call types. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="value" type="ssj:nonNegativeInt" use="required"> <xsd:annotation> <xsd:documentation> Gives the value of the limit, i.e., the maximal number of call of concerned types during the limit's time interval. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="AgentGroupIndex"> <xsd:annotation> <xsd:documentation> Gives the index of an agent group with a probability that the agent group is selected. The index is given by the <tt>index</tt> attribute while the probability is set up using the <tt>probability</tt> attribute. </xsd:documentation> </xsd:annotation> <xsd:attribute name="index" type="ssj:nonNegativeInt"/> <xsd:attribute name="probability" type="ssj:double01i"/> </xsd:complexType> <xsd:complexType name="DialerAgentGroupParams"> <xsd:annotation> <xsd:documentation> Provides information about a virtual agent group containing inbound and outbound groups, and managed by a dialer. Elements of this type are used by the <tt>AGENTSMOVE</tt> dialer's policy only. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Provides information about a virtual agent group containing inbound and outbound groups, and managed by a dialer. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" name="inboundGroup" type="ccmsk:AgentGroupIndex"> <xsd:annotation> <xsd:documentation> Gives the index of an agent group accepting inbound calls, along with a probability of selection for the agent group. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="1" name="outboundGroup" type="ccmsk:AgentGroupIndex"> <xsd:annotation> <xsd:documentation> Gives the index of an agent group accepting outbound calls, along with a probability of selection for the agent group. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="requiredEmptyGroupsInOut" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Gives the list of agent groups that must be empty, i.e. contain no busy or idle agent, for inbound agents in this virtual group to become outbound agents. If this element is omitted or contains an empty list, no agent group needs to be empty for inbound-to-outbound moves to be possible. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="requiredEmptyGroupsOutIn" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Similar to <tt>requiredEmptyGroupsInOut</tt> for outbound-to-inbound moves. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <!-- <xsd:attribute name="inboundGroup" type="ssj:nonNegativeInt" use="required"> <xsd:annotation> <xsd:documentation> Gives the index of the agent group whose agents process inbound calls. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="outboundGroup" type="ssj:nonNegativeInt" use="required"> <xsd:annotation> <xsd:documentation> Gives the index of the agent group whose agents process outbound calls. </xsd:documentation> </xsd:annotation> </xsd:attribute> --> <xsd:attribute default="PT0S" name="delayInIn" type="ssj:nonNegativeDuration"> <xsd:annotation> <xsd:documentation> Gives the minimal delay between two outbound-to-inbound moves. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="PT0S" name="delayInOut" type="ssj:nonNegativeDuration"> <xsd:annotation> <xsd:documentation> Gives the minimal time an agent must remain in the inbound group before it can be transfered into the outbound group. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="PT0S" name="delayOutIn" type="ssj:nonNegativeDuration"> <xsd:annotation> <xsd:documentation> Gives the minimal time an agent must remain in the outbound group before it can be transfered into the inbound group. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="PT0S" name="delayOutOut" type="ssj:nonNegativeDuration"> <xsd:annotation> <xsd:documentation> Gives the minimal delay between two inbound-to-outbound moves. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="PT0S" name="minimumIdleTime" type="ssj:nonNegativeDuration"> <xsd:annotation> <xsd:documentation> Returns the minimal idle time of an agent serving inbound calls before it can serve outbound calls. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0" name="minimumIdleInboundAgents" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Returns the minimal number of idle agents in the inbound groups attached to this virtual group for inbound-to-outbound moves to be allowed. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="maximumIdleOutboundAgents" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Returns the maximum number of idle agents the outbound groups attached to this virtual group may contain when inbound-to-outbound moves are allowed. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> <xsd:complexType name="AgentGroupParams"> <xsd:annotation> <xsd:documentation> Contains the parameters for an agent group in a blend/multi-skill call center. Each agent group requires a staffing or a schedule to set up the number of agents at any time during the simulation. The staffing is specified using a <tt>staffing</tt> element while the <tt>schedule</tt> element must be used for a schedule. The number of agents during each main period or assigned to each shift of a schedule is also multiplied by the product of a local factor given by the <tt>agentsMult</tt> attribute, and a global factor given by the attribute with the same name in <tt>MSKCCParams,</tt> and rounded to the nearest integer. <p> The name assigned assigned by the <tt>name</tt> attribute is used for reporting while the properties set by the <tt>properties</tt> element can be used by programs extending the simulator. </p> </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Contains the parameters for an agent group in a blend/multi-skill call center. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ssj:Named"> <xsd:sequence> <xsd:choice maxOccurs="1" minOccurs="0"> <xsd:sequence> <xsd:element name="staffing" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:documentation> Determines the staffing vector giving the number of available agents during each main period. If this array contains a single element, the specified staffing is used for all periods. This array of positive integers defaults to an array of 0's if no schedule is given. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="probAgents" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the presence probability for each agent in the group and each main period. When this element is set, for each simulated replication, the number of agents in period <tt>p</tt> is a binomial random variate with parameters given by the number of agents in <tt>staffing</tt> and the probability in this element. The number of agents is independent for each group and period. If this element is omitted or empty, a default probability of 1 is assumed. If it contains a single element, the given probability is used for every main period. Otherwise, the element must contain one probability for each main period. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:element name="staffingData" type="ssj:IntArray"> <xsd:annotation> <xsd:documentation> Gives the staffing vector for different days assumed i.i.d. When this element is used, the number of agents in each period is a binomial random variable, and the parameters of this binomial, for each main period, are estimated using maximum likelihood. If this element is used, it must contain a $D\times P$ matrix, where $D$ is the number of observed staffing vectors, and $P$ is the number of main periods. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="schedule" type="ccmsk:AgentGroupScheduleParams"> <xsd:annotation> <xsd:documentation> Determines the schedule of the agents in this group. The schedule defines a set of shifts agents in this group can work on, each shift being composed of time intervals. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="agent" type="ccmsk:AgentParams"> <xsd:annotation> <xsd:documentation> Specifies the individual agents composing the group, with a particular schedule and attributes for each agent. Note that by default, defining agents this way is equivalent (but more verbose) than using the <tt>schedule</tt> element. However, custom simulation code and future versions of the simulator may use agent-specific properties to influence service, routing, etc. </xsd:documentation> <xsd:appinfo> <jxb:property name="agents"/> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:choice> <xsd:element maxOccurs="1" minOccurs="0" name="serviceTimesMult" type="ssj:positiveDoubleList"> <xsd:annotation> <xsd:documentation> Determines the factor multiplying the service time when an agent in this group is serving a contact of a specific type. Service time multipliers may be used to model the fact that agents are more efficient when serving some contact types, without specifying a service time distribution for each (contact type, agent group) combination. <p> Note that specifying a service time for a (contact type, agent group) combination using the <tt>group</tt> attribute of the <tt>serviceTime</tt> element does not cancel the effect of service time multipliers given by this element. </p> <p> This array of <i>K</i> double-precision values provides a multiplier for each contact type. If the array is unspecified, service times are set to 1. </p> </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="probDisconnect" type="ssj:double01iList"> <xsd:annotation> <xsd:documentation> Determines the probability that an agent of this group becomes unavailable (temporarily disconnects) for a random time after it has served a call, for each main period. This array of double-precision values must contain values in <tt>[0, 1].</tt> If it contains a single element, the given probability is used for all main periods. If it is not specified (the default), agents do not become temporarily unavailable after services. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="disconnectTime" type="cc:MultiPeriodGenParams"> <xsd:annotation> <xsd:documentation> Determines the probability distribution of the time an agent remains unavailable at the end of a service if it disconnects. If this parameter is omitted, agents disconnect for a duration of 0 time units; this results in disabling this aspect of the model. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="maxAgentsPeriod" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Determines the maximal number of agents that can be present in this group during each period. This array is not used during simulation, but it can be used to constrain the optimization. If it contains a single value, the value is used for all main periods. If it is omitted, but the maximal number of agents is required, the value stored in the attribute <tt>maxAgents</tt> is used. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="minAgentsPeriod" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Similar to <tt>maxAgentsPeriod</tt> for the minimal number of agents in the group. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="idleCostPeriod" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Determines the cost of one idle agent per time unit during individual main period. If this element contains a single value, the value is used for all main periods. If this element is omitted, the idle cost for any period is the value given by the attribute <tt>idleCost.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="busyCostPeriod" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Determines the cost of one busy agent per time unit during individual main period. If this element contains a single value, the value is used for all main periods. If this element is omitted, the busy cost for any period is the value given by the attribute <tt>busyCost.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="perUseCostPeriod" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Determines the cost incurred when an agent in this group starts a service during individual main period. If this element contains a single value, the value is used for all main periods. If this element is omitted, the per-use cost for any period is the value given by the attribute <tt>perUseCost.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="weightPeriod" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Determines the weight of this agent group during individual main period. If this element contains a single value, the value is used for all main periods. If this element is omitted, the weight for any period is the value given by the attribute <tt>weight.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute default="1" name="weight" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the weight of this agent group. This weight, which measures the importance of this agent group compared to other groups, can be used by some routing policies or optimization algorithms. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="maxAgents" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Determines the maximal number of agents allowed in this group. This is not used during simulation, but this can be used as a constraint during optimization. If this attribute is omitted, the maximal number of agents is infinite. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0" name="minAgents" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Similar to <tt>maxNumAgents</tt> for the minimal number of agents. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0" name="idleCost" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the cost per simulation time unit of an idle agent in this agent group. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0" name="busyCost" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the cost per simulation time unit of a busy agent in this agent group. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0" name="perUseCost" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the cost incurred each time an agent in this group starts a service. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="efficiency" type="ssj:double01i"> <xsd:annotation> <xsd:documentation> Determines the agents' efficiency factor. This corresponds to the proportion of free agents over the total number of agents when no agent is busy. This defaults to 1, i.e., all the available agents can serve calls. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="skillCount" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Determines the skill count for this agent group. This corresponds to the true number of call types agents in this group can serve. A missing value indicates that the skill count should be determined by the router. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="detailed" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if a detailed agent group, representing each agent by an individual entity, is needed for the simulation. If this attribute is not set, a detailed agent group is used only if agents can disconnect after service terminations, or if a <tt>schedule</tt> element is used. Note that setting this attribute to <tt>false</tt> might prevent the usage of some routing policies. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="convertSchedulesToStaffing" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the schedules specified using the <tt>schedule</tt> or <tt>agent</tt> elements need to be converted to staffing vectors internally. This conversion is necessary if one plans to alter the staffing directly, without taking account of scheduling. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="agentsMult" type="ssj:nonNegativeDouble"> <xsd:annotation> <xsd:documentation> Determines the local multiplier for this agent group. The number of agents during each period or during each shift, depending on how the agents are specified in this group, is multiplied by <i>M</i> and rounded to the nearest integer before they are used by simulation. The value of <i>M</i> is obtained by multiplying the local multiplier by the global <i>agentsMult</i> attribute. This can be used to alter the staffing of a call center without modifying the number of agents in each period or each shift manually. This parameter has no effect if individual agents are defined for this group. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="AgentGroupScheduleParams"> <xsd:annotation> <xsd:documentation> Represents the schedule of agents in a specific group. A schedule is defined either by a set of shifts represented by a sequence of <tt>shift</tt> child element, or by the combination of a matrix given by the <tt>shiftMatrix</tt> element with a vector given by <tt>numAgents.</tt> In the latter format, the matrix describes the shifts while the vector sets the number of agents scheduled on each shift. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Represents the schedule of agents in a specific group. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:choice> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="shift" type="ccmsk:ScheduleShiftParams"> <xsd:annotation> <xsd:documentation> Determines the available shifts for this schedule. Each occurrence of this element defines a shift as a set of time intervals not necessarily corresponding to period boundaries, and assigns a certain number of agents to the shifts. This is the most general syntax for giving shifts, but often, the matrix of shifts given by <tt>shiftMatrix</tt> is sufficient for specifying shifts. </xsd:documentation> <xsd:appinfo> <jxb:property name="shifts"/> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="shiftMatrix" type="ssj:BooleanArray"> <xsd:annotation> <xsd:documentation> Determines the matrix of shifts for this schedule. Element <tt>(j, p)</tt> of this matrix is set to <tt>true</tt> if agents on the shift <tt>j</tt> can serve calls during main period <tt>p.</tt> If this matrix is omitted and no <tt>shift</tt> element is given, the default matrix of shifts stored in the call center parameters' <tt>shiftMatrix</tt> element is used. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:choice> <xsd:sequence> <xsd:element name="numAgents" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Gives the number of agents for each shift of this schedule. The length of the given array must correspond to the number of shifts, i.e., the number of rows in the matrix of shifts. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="probAgents" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the presence probability for each agent on the shifts of this schedule. When this element is set, for each simulated replication, the number of agents in each shift <tt>j</tt> is a binomial random variate with parameters given by the number of agents in <tt>numAgents</tt> and the probability in this element. The number of agents is independent for each group and shift. If this element is omitted or empty, a default probability of 1 is assumed. If it contains a single element, the given probability is used for every shift of this schedule. Otherwise, the element must contain one probability for each shift of the schedule. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:element name="numAgentsData" type="ssj:IntArray"> <xsd:annotation> <xsd:documentation> Gives the vectors of agents for different days assumed i.i.d. When this element is used, the number of agents in each shift is a binomial random variable, and the parameters of this binomial, for each shift, are estimated using maximum likelihood. If this element is used, it must contain a $D\times J$ matrix, where $D$ is the number of observed staffing vectors, and $J$ is the number of shifts. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:choice> </xsd:sequence> </xsd:choice> </xsd:complexType> <xsd:complexType name="AgentParams"> <xsd:annotation> <xsd:documentation> Defines parameters for an individual agent. This element can be used to assign a name, properties, and a shift to the agent. The properties, which are ignored by default, might be used by custom simulation code to influence the routing, the service of calls, etc. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Defines parameters for an individual agent. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ssj:Named"> <xsd:sequence> <xsd:element name="shift" type="ccmsk:ScheduleShiftParams"> <xsd:annotation> <xsd:documentation> Specifies the shift this agent is working on. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="ScheduleShiftParams"> <xsd:annotation> <xsd:documentation> Defines a shift in the schedule of an agent group. A shift contains <tt>shiftPart</tt> elements, corresponding to time intervals during which agents work, have a break, lunch, etc. Alternatively, a shift element in a <tt>schedule</tt> element of an agent group might refer to a shift defined elsewhere in the document using the <tt>xref</tt> attribute. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Defines a shift in the schedule of an agent group. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="shiftPart" type="ccmsk:ShiftPartParams"> <xsd:annotation> <xsd:documentation> Determines the parts of the shift. A part specifies a starting time, an ending time, and a type. At least one occurrence of this element is required if the <tt>xref</tt> attribute is unset while this element is not allowed if the <tt>xref</tt> attribute is set. Note that the time intervals for shift parts must not overlap. </xsd:documentation> <xsd:appinfo> <jxb:property name="shiftParts"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="numAgentsData" type="ssj:intList"> <xsd:annotation> <xsd:documentation> Gives the number of agents observed during a certain number of i.i.d.\ days, on this schedule shift. Ths number of agents on the shift is then a binomial random variable with parameters estimated using maximum likehood. Attributes <tt>numAgents</tt> and <tt>probAgents</tt> override this element. This element is allowed only when this element is a child of a <tt>schedule</tt> element. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="id" type="xsd:ID"> <xsd:annotation> <xsd:documentation> Gives the identifier of this shift. This attribute is required if this element is a child of <tt>MSKCCParams.</tt> Any shift with this attribute can be referred by another shift by setting its <tt>xref</tt> attribute to the same value. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="xref" type="xsd:IDREF"> <xsd:annotation> <xsd:documentation> Gives the identifier of another <tt>shift</tt> element providing the shift parts. The value of this attribute must correspond to the value of the <tt>id</tt> attribute for another shift in the document. When <tt>xref</tt> is used, the only other allowed attribute is <tt>numAgents</tt> and no child element is permitted. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="0" name="numAgents" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Determines the number of agents working on this shift. This attribute is allowed only when this element is a child of a <tt>schedule</tt> element. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="1" name="probAgents" type="ssj:double01i"> <xsd:annotation> <xsd:documentation> Determines the probability that any given agent on this shift is present and available to serve calls. The default probability if this attribute is omitted is 1. This attribute is allowed only when this element is a child of a <tt>schedule</tt> element. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> <xsd:complexType name="ShiftPartParams"> <xsd:annotation> <xsd:documentation> Defines a part of a shift in the schedule of an agent group. A part is specified using a starting time, an ending time, and a type. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Defines the part of a shift in the schedule of an agent group. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:TimeIntervalParams"> <xsd:attribute default="Working" name="type" type="xsd:string"> <xsd:annotation> <xsd:documentation> Determines the type of this part. The type can be any string, but agents will process calls during the part of the shift only if the type is <tt>Working.</tt> Any other type name results in agents not working during the corresponding time interval. Custom simulation code and future versions of the simulator might define other part types. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="RouterParams"> <xsd:annotation> <xsd:documentation> Represents the router's parameters for a blend/multi-skill call center. The <tt>routerPolicy</tt> attribute, which gives the name of the routing policy, is the only element being always required for the router's parameters. However, depending on the selected policy, some other parameters become mandatory. For example, to use queue priority, one needs at least a type-to-group or a group-to-type maps. Parameters not used by the selected routing policy are ignored. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Represents the router's parameters for a blend/multi-skill call center. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="properties" type="ssj:PropertiesParams"> <xsd:annotation> <xsd:documentation> Gives properties associated with the router. The current version of the simulator ignores these properties, but custom routing policies might use them. </xsd:documentation> </xsd:annotation> <xsd:key name="UniquePropertyName"> <xsd:selector xpath="*"/> <xsd:field xpath="@name"/> </xsd:key> </xsd:element> <xsd:element minOccurs="0" name="typeToGroupMap" type="ssj:IntArray"> <xsd:annotation> <xsd:documentation> Determines the type-to-group map routing table. The usage of this 2D array of integers depends on the selected routing policy. Each row corresponds to a call type, and contains an ordered list of agent groups. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="groupToTypeMap" type="ssj:IntArray"> <xsd:annotation> <xsd:documentation> Determines the group-to-type map routing table. The usage of this 2D array of integers depends on the selected routing policy. Each row corresponds to an agent group, and contains an ordered list of call types. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="ranksTG" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Determines the type-to-group matrix of ranks used for agent selection by some routing policies. This matrix has one row per call type and one column per agent group. Element <ii>(k,i)</ii> of the matrix sets the priority assigned to agents in group <i>i</i> by calls of type <i>k.</i> An infinite value indicates that no new call of type <i>k</i> can be sent to agents in group <i>i.</i> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="ranksGT" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Determines the group-to-type matrix of ranks used for contact selection by some routing policies. This matrix has one row for each agent group, and one column for each call type. Element <i>(i,k)</i> of the matrix sets the priority agents in group <i>i</i> give to queued calls of type <i>k.</i> An infinite value indicates that no queued call of type <i>k</i> can be served by agents in group <i>i</i> becoming free. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="ranksGTUpdate" type="ccmsk:DoubleArrayWithMinWaitingTime"> <xsd:annotation> <xsd:documentation> Determines the matrix of ranks used for contact selection by some routing policies, for contacts having waited at least the given minimal waiting time. Using one or more occurrences of this element in combination with the <tt>ranksGT</tt> element can be used to change priority over time with some routing policies. In the current version of the simulator, this element is used only by the <tt>AGENTSPREFWITHDELAYS</tt> policy. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="weightsTG" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Determines the type-to-group matrix of weights used for agent selection by some routing policies. This matrix has a format similar to <tt>ranksTG</tt> but gives weights instead of priorities. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="weightsGT" type="ssj:DoubleArray"> <xsd:annotation> <xsd:documentation> Determines the group-to-type matrix of weights used for contact selection by some routing policies. This matrix has a format similar to <tt>ranksGT</tt> but gives weights instead of priorities. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="delaysGT" type="ssj:NonNegativeDurationArray"> <xsd:annotation> <xsd:documentation> Determines the matrix of delays giving, for each (agent group, contact type) pair, the minimal delay a contact of the corresponding type must wait to be accepted for possible service by an agent in the corresponding group. The matrix has a format similar to <tt>ranksGT</tt> with delays instead of ranks. This element is used only by the <tt>AGENTSPREFWITHDELAYS</tt> policy. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="incidenceMatrixTG" type="ssj:BooleanArray"> <xsd:annotation> <xsd:documentation> Determines the type-to-group incidence matrix for this router. This matrix of booleans has dimensions <i>K x I</i> and its element <i>(k, i)</i> is <tt>true</tt> if and only if new contacts of type <i>k</i> can be routed to agents in group <i>i</i> during agent selection. This matrix is not used in the current routing policies, but other routing matrices can be produced from it with the help of the <tt>routingTableSources</tt> element. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="incidenceMatrixGT" type="ssj:BooleanArray"> <xsd:annotation> <xsd:documentation> Determines the group-to-type incidence matrix for this router. This matrix of booleans has dimensions <i>I x K</i> and its element <i>(i, k)</i> is <tt>true</tt> if and only if contacts of type <i>k</i> can be routed to agents in group <i>i</i> during contact selection. This matrix is not used in the current routing policies, but other routing matrices can be produced from it with the help of the <tt>routingTableSources</tt> element. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="queueWeights" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the weight of each waiting queue <i>q</i> attached to the router. This array of double-precision values is used by the longest weighted waiting time policy, and this policy assigns a waiting queue for each type of contact. The length of the given array must therefore correspond to the number of call types. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="0"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="skillCounts" type="ssj:nonNegativeIntList"> <xsd:annotation> <xsd:documentation> Determines the skill count for each agent group. If this vector is needed but unspecified, the skill count is obtained by checking the <tt>skillCount</tt> attributes of agent groups. If no such attribute exists, the skill count is inferred by counting the number of call types agents in the concerned group can serve. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="0"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="targetFracAgents" type="ssj:double01iList"> <xsd:annotation> <xsd:documentation> Determines the desired fraction of the total number of agents in all groups that serve contacts of each type. If the total number of agents at time <i>t</i> is <i>N(t),</i> and <i>n[k]</i> is the element <i>k</i> of the returned array, the desired number of agents serving calls of type <i>k</i> is <i>n[k]N(t).</i> This element is not used by any routing policy in the current version of the simulator. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="0"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="targetQueueRatio" type="ssj:nonNegativeDoubleList"> <xsd:annotation> <xsd:documentation> Determines the target queue ratio used by queue-ratio overflow router. This element requires a number for each agent group in the model, since the queue-ratio routing policy assigns a waiting queue to each agent group. </xsd:documentation> <xsd:appinfo> <jxb:property collectionType="0"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element minOccurs="0" name="routingTableSources" type="ccmsk:RoutingTableSources"> <xsd:annotation> <xsd:documentation> Determines how missing routing tables are constructed from given information. If this element is omitted, an error occurs if the routing policy requires a missing routing table. Otherwise, the information is constructed according to the specified attributes. Note that the construction logic can detect cycles, so for example setting both <tt>ranksTG</tt> to <tt>ranksGT</tt> and <tt>ranksGT</tt> to <tt>ranksTG</tt> will result in an error rather than an infinite loop if no matrix of ranks is given. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="unbounded" minOccurs="0" name="callTypeRouting" type="ccmsk:CallTypeRoutingParams"> <xsd:annotation> <xsd:documentation> Describes the routing logic used for a specific call type by the <tt>OVERFLOWANDPRIORITY</tt> routing policy. When the latter policy is used, the router needs an occurrence of this element for any call type in the model. The other policies ignore any occurrence of this element. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="routerPolicy" type="xsd:string"> <xsd:annotation> <xsd:documentation> Determines the router's policy used by the call center. Any enum constant in the Java class <tt>RouterPolicyType</tt> from package <tt>umontreal.iro.lecuyer.contactcenters.app</tt> is accepted as a value for this attribute. Moreover, custom simulation programs or Java archives may define additional router's policies; see the <tt>RouterFactory</tt> class from package <tt>umontreal.iro.lecuyer.contactcenters.msk.spi</tt> for more information about this. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="PT0S" name="localSpecOverflowDelay" type="ssj:nonNegativeDuration"> <xsd:annotation> <xsd:documentation> Determines the overflow delay used by the local-specialist routing policy, the default value being 0. This time duration is ignored by any routing policy, except local-specialist. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="overflowTransfer" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines the status of the overflow transfer mode used by the agents' preference-based router with delays, or the queue-ratio overflow router. This attribute has no effect if the router's policy is not agents' preference-based with delays or queue-ratio overflow. See the documentation of these policies for more information about this mode. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="longestWaitingTime" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the agents' preference-based router with delays uses a single-pass agent selection based on the longest waiting time rather than multiple-passes selection giving priority to calls with minimal delays. This attribute has no effect if the router's policy is not agents' preference-based with delays. See the documentation of the agents' preference-based policy with delays for more information about this option. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="numTestingPeriods" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Determines the number of testing periods for routing policies basing their decisions on the system state during a certain time in the past. This element is not used by any routing policy in the current version of the simulator. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="testingPeriodDuration" type="ssj:nonNegativeDuration"> <xsd:annotation> <xsd:documentation> Determines the duration of testing periods for routing policies basing their decisions on the system state during a certain time in the past. This element is not used by any routing policy in the current version of the simulator. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="queueSizeThresh" type="ssj:nonNegativeInt"> <xsd:annotation> <xsd:documentation> Determines the threshold on the queue size used by certain routing policies. This element is not used by any routing policy in the current version of the simulator. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="allowCopies" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if contacts can be sent to multiple waiting queues. This boolean indicator is used by the queue-ratio overflow policy only. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="randomizedAgentSelection" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the agent selection is randomized. This boolean attribute has no effect for routing policies other than agents' preference-based, agents' preference-based with delays, and local-specialists. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="randomizedContactSelection" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Determines if the contact selection is randomized. This boolean attribute has no effect for routing policies other than agents' preference-based, agents' preference-based with delays, and local-specialists. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="LONGESTIDLETIME" name="agentSelectionScore" type="ccmsk:AgentSelectionScore"> <xsd:annotation> <xsd:documentation> Determines how scores for agent selection are computed. This score is used only for policies based on agents' preferences. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="LONGESTWAITINGTIME" name="contactSelectionScore" type="ccmsk:ContactSelectionScore"> <xsd:annotation> <xsd:documentation> Determines how scores for contact selection are computed. This score is used only for policies based on agents' preferences. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> <xsd:complexType name="DoubleArrayWithMinWaitingTime"> <xsd:annotation> <xsd:documentation> Represents a 2D array with an associated minimal waiting time. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Represents a 2D array with an associated minimal waiting time. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ssj:DoubleArray"> <xsd:attribute name="minWaitingTime" type="ssj:positiveDuration" use="required"> <xsd:annotation> <xsd:documentation> Gives the minimal waiting time associated with the 2D array. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:simpleType name="AgentSelectionScore"> <xsd:annotation> <xsd:documentation> Parameter indicating how the agent selection score is computed by agents' preference-based routers. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="WEIGHTONLY"> <xsd:annotation> <xsd:documentation> The score for an agent group <i>i</i> for contact type <i>k</i> corresponds to the weight <i>w</i> <sub>TG</sub> <i>(k, i).</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="NUMFREEAGENTS"> <xsd:annotation> <xsd:documentation> The score corresponds to the number of free agents in group <i>i</i> multiplied by the weight <i>w</i> <sub>TG</sub> <i>(k, i).</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="LONGESTIDLETIME"> <xsd:annotation> <xsd:documentation> The score corresponds to the longest idle time of agents in group <i>i</i> multiplied by the weight <i>w</i> <sub>TG</sub> <i>(k, i).</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ContactSelectionScore"> <xsd:annotation> <xsd:documentation> Parameter indicating how the contact selection score is computed by agents' preference-based routers. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="WEIGHTONLY"> <xsd:annotation> <xsd:documentation> The score for an agent group <i>i</i> for contact type <i>k</i> corresponds to the weight <i>w</i> <sub>GT</sub> <i>(i, k).</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="QUEUESIZE"> <xsd:annotation> <xsd:documentation> The score corresponds to the number of contacts in queue multiplied by <i>w</i> <sub>GT</sub> <i>(i, k).</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="LONGESTWAITINGTIME"> <xsd:annotation> <xsd:documentation> The score corresponds to the longest waiting time of the queued contact of type <i>k</i> multiplied by the weight <i>w</i> <sub>GT</sub> <i>(i, k).</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="TypeToGroupMapSource"> <xsd:annotation> <xsd:documentation> Possible structures from which the missing type-to-group map can be inferred if it is needed by a routing policy. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="incidenceMatrixTG"> <xsd:annotation> <xsd:documentation> For each row <i>k</i> of the incidence matrix, the method creates a row in the type-to-group map with a column containing value <i>i</i> for each <i>i</i> for which the value at position <i>(k,i)</i> is <tt>true</tt> in the incidence matrix. This gives lists of agent groups sorted in increasing order of group identifier. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="ranksTG"> <xsd:annotation> <xsd:documentation> For each contact type, a list of agent groups sorted in increasing order of group identifier is first obtained by enumerating the groups with finite ranks. Each row of the resulting type-to-group map is then sorted in rank-increasing order. Agent groups sharing the same rank are sorted in increasing order of group identifier. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="ranksTGAndRegions"> <xsd:annotation> <xsd:documentation> Similar to <tt>ranksTG</tt> but also takes account of region identifiers associated with contact types and agent groups. A region identifier is set up by using a string property named <tt>region</tt> and whose value corresponds to the identifier. Sorting gives precedence to local assignments, i.e., the list of agent groups for each contact type <i>k</i> contains all agent groups in the same region as <i>k</i> before any other group. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="groupToTypeMap"> <xsd:annotation> <xsd:documentation> For each contact type <i>k,</i> this strategy constructs an ordered list containing all agent groups referring to it in the group-to-type map, sorted in increasing order of group identifier. </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="GroupToTypeMapSource"> <xsd:annotation> <xsd:documentation> Possible structures from which the missing group-to-type map can be inferred if it is needed by a routing policy. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="incidenceMatrixGT"> <xsd:annotation> <xsd:documentation> For each row <i>i</i> of the incidence matrix, this strategy creates a row in the group-to-type map with a column having a value <i>k</i> for each <tt>true</tt> value at position <i>(i, k)</i> in the incidence matrix. This gives lists of contact types sorted in increasing order of type identifier. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="ranksGT"> <xsd:annotation> <xsd:documentation> For each agent group, a list of contact types sorted in increasing order of type identifier is first obtained by enumerating the types with finite ranks. Each row of the resulting group-to-type map is then sorted in rank-increasing order. Contact types sharing the same rank are sorted in increasing order of type identifier. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="ranksGTAndRegions"> <xsd:annotation> <xsd:documentation> Similar to <tt>ranksGT</tt> but also takes account of region identifiers associated with contact types and agent groups. A region identifier is set up by using a string property named <tt>region</tt> and whose value corresponds to the identifier. Sorting gives precedence to local assignments, i.e., the list of contact types for each agent group <i>i</i> contains all contact types in the same region as <i>i</i> before any other type. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="typeToGroupMap"> <xsd:annotation> <xsd:documentation> For each agent group <i>i,</i> this method constructs a list containing all contact types referring to it in the type-to-group map, sorted in increasing order of type identifier. </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="RanksTGSource"> <xsd:annotation> <xsd:documentation> Possible structures from which the missing type-to-group matrix of ranks can be inferred if it is needed by a routing policy. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="incidenceMatrixTG"> <xsd:annotation> <xsd:documentation> For each agent group <i>i,</i> and each contact type <i>k,</i> this strategy sets the rank to infinity if the corresponding element in the incidence matrix is <tt>false.</tt> Otherwise, it sets the rank to 1. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="incidenceMatrixTGAndSkillCounts"> <xsd:annotation> <xsd:documentation> For each agent group <i>i,</i> and each contact type <i>k,</i> this strategy sets the rank to infinity if the corresponding element in the incidence matrix is <tt>false.</tt> Otherwise, it sets the rank to the skill count for agent group <i>i.</i> The skill count is determined using, in this order, the <tt>skillCounts</tt> element in the parameters of the router, the <tt>skillCount</tt> attribute of the agent groups, or the number of contact types that can be served by agents in group <i>i.</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="ranksGT"> <xsd:annotation> <xsd:documentation> Obtained the type-to-group matrix of ranks by transposing the group-to-type matrix of ranks. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="typeToGroupMap"> <xsd:annotation> <xsd:documentation> For each non-negative <i> i <sub>k,j</sub> </i> in the type-to-group map, the rank of contact type <i>k</i> for agent group <i> i <sub>k,j</sub> </i> is set to <i>j.</i> If an agent group does not appear in the list of <i>k,</i> the associated rank is infinite. </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="RanksGTSource"> <xsd:annotation> <xsd:documentation> Possible structures from which the missing group-to-type matrix of ranks can be inferred if it is needed by a routing policy. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="incidenceMatrixGT"> <xsd:annotation> <xsd:documentation> For each contact type <i>k,</i> and each agent group <i>i,</i> this strategy sets the rank to infinity if the corresponding element in the incidence matrix is <tt>false.</tt> Otherwise, it sets the rank to 1. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="incidenceMatrixGTAndSkillCounts"> <xsd:annotation> <xsd:documentation> For each contact type <i>k,</i> and each agent group <i>i,</i> this strategy sets the rank to infinity if the corresponding element in the incidence matrix is <tt>false.</tt> Otherwise, it sets the rank to the skill count for agent group <i>i.</i> The skill count is determined using, in this order, the <tt>skillCounts</tt> element in the parameters of the router, the <tt>skillCount</tt> attribute of the agent groups, or the number of contact types that can be served by agents in group <i>i.</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="ranksTG"> <xsd:annotation> <xsd:documentation> Obtained the group-to-type matrix of ranks by transposing the type-to-group matrix of ranks. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="groupToTypeMap"> <xsd:annotation> <xsd:documentation> For each non-negative <i> k <sub>i,j</sub> </i> in the group-to-type map, the rank of agent group <i>i</i> for contact type <i> k <sub>i,j</sub> </i> is set to <i>j.</i> If a contact type does not appear in the list of <i>i,</i> the associated rank is infinite. </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="IncidenceMatrixTGSource"> <xsd:annotation> <xsd:documentation> Possible structures from which the missing type-to-group incidence matrix can be inferred if it is needed by a routing policy. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="incidenceMatrixGT"> <xsd:annotation> <xsd:documentation> Constructs the type-to-group incidence matrix by transposing the group-to-type matrix. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="ranksTG"> <xsd:annotation> <xsd:documentation> Creates an incidence matrix by setting each element <i>(k,i)</i> to <tt>true</tt> if and only if the corresopnding rank is finite. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="typeToGroupMap"> <xsd:annotation> <xsd:documentation> Element <i>(k,i)</i> of the incidence matrix is <tt>true</tt> if and only agent group <i>i</i> is included in the list for contact type <i>k.</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="IncidenceMatrixGTSource"> <xsd:annotation> <xsd:documentation> Possible structures from which the missing group-to-type incidence matrix can be inferred if it is needed by a routing policy. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="incidenceMatrixTG"> <xsd:annotation> <xsd:documentation> Constructs the group-to-type incidence matrix by transposing the type-to-group matrix. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="ranksGT"> <xsd:annotation> <xsd:documentation> Creates an incidence matrix by setting each element <i>(i,k)</i> to <tt>true</tt> if and only if the corresopnding rank is finite. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="groupToTypeMap"> <xsd:annotation> <xsd:documentation> Element <i>(i,k)</i> of the incidence matrix is <tt>true</tt> if and only contact type <i>k</i> is included in the list for agent group <i>i.</i> </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="CorrelationFit"> <xsd:annotation> <xsd:documentation> Parameter selecting the algorithm used to compute the correlation matrix in the Poisson gamma rate arrival process. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="FULLCORRELATION"> <xsd:annotation> <xsd:documentation> Uses the estimated copula correlation matrix for the Gamma-Poisson NORTA model for rates. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="MARKOVLINEARFIT"> <xsd:annotation> <xsd:documentation> Fits the general linear model <i>r_j = a b^j + c</i> to the estimated copula correlation matrix for the Gamma-Poisson NORTA model for rates. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="MARKOVSINGLERHO"> <xsd:annotation> <xsd:documentation> Fits the single <tt>rho</tt> Markov linear model <i>r_j = b^j</i> to the estimated copula correlation matrix for the Gamma-Poisson NORTA model for rates. </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="GammaShapeEstimatorType"> <xsd:annotation> <xsd:documentation> Parameter selecting the method used to estimate the shape parameter in the Poisson gamma arrival process. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="SINGLESHAPE"> <xsd:annotation> <xsd:documentation> The gamma shape parameters are assumed to have the same value across sub-periods. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="SPLINESHAPE"> <xsd:annotation> <xsd:documentation> A smoothing spline is used to enforce smoothness of gamma shape parameters from one sub-period to another. </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="RoutingTableSources"> <xsd:annotation> <xsd:documentation> Determines how missing routing information can be inferred from alternative data structures. Often, a missing routing data structure can be created several ways. For example, the type-to-group map may be constructed using the group-to-type map, a matrix of ranks, etc. However, some algorithms destroy or guess information, which can lead to incorrect results. If this element is given without any attribute, the default most common constructions are used: a missing matrix of ranks or incidence matrix is obtained by transposing the given complementary matrix. Other mappings can be given by setting attributes in this element. </xsd:documentation> </xsd:annotation> <xsd:attribute name="typeToGroupMap" type="ccmsk:TypeToGroupMapSource"/> <xsd:attribute name="groupToTypeMap" type="ccmsk:GroupToTypeMapSource"/> <xsd:attribute default="ranksGT" name="ranksTG" type="ccmsk:RanksTGSource"/> <xsd:attribute default="ranksTG" name="ranksGT" type="ccmsk:RanksGTSource"/> <xsd:attribute default="incidenceMatrixGT" name="incidenceMatrixTG" type="ccmsk:IncidenceMatrixTGSource"/> <xsd:attribute default="incidenceMatrixTG" name="incidenceMatrixGT" type="ccmsk:IncidenceMatrixGTSource"/> </xsd:complexType> <xsd:complexType name="CallTypeRoutingParams"> <xsd:annotation> <xsd:documentation> Describes the routing logic for a specific call type by a sequence of stages defined by a minimal waiting time, and functions generating vectors of ranks. Elements of this type are used to encode the parameters of the <tt>OVERFLOWANDPRIORITY</tt> routing policy only. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" name="stage" type="ccmsk:RoutingStageParams"> <xsd:annotation> <xsd:documentation> Describes a specific stage of the routing, for a particular call type. The sequence of <tt>stage</tt> elements should given in non-decreasing order of minimal waiting time. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="RoutingStageParams"> <xsd:annotation> <xsd:documentation> Describes a specific stage of routing for a particular call type by using a waiting time, and a sequence of cases. The waiting time is given by the attribute <tt>waitingTime</tt> while the sequence of cases is set up by <tt>case</tt> elements optionnally followed by a <tt>default</tt> element. The routing policy checks each condition given by the cases in the specified order, and takes the vectors of ranks corresponding to the first case that applies. If no case applies, the vectors given in the default case are used. If no case applies and no <tt>default</tt> element is given, the stage has no effect. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="case" type="ccmsk:RoutingCaseParams"> <xsd:annotation> <xsd:documentation> Describes a case by a condition, and vectors of ranks used if the condition applies. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" name="default" type="ccmsk:DefaultCaseParams"> <xsd:annotation> <xsd:documentation> Describes the default case with vectors of ranks used if no case applies. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="waitingTime" type="ssj:nonNegativeDuration" use="required"> <xsd:annotation> <xsd:documentation> Determines the minimal time a call must spent in queue before this stage of the routing occurs. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> <xsd:group name="VectorsOfRanks"> <xsd:sequence> <xsd:choice minOccurs="0"> <xsd:element name="agentGroupRanks" type="ssj:doubleList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Determines the vector of ranks used for selecting an agent group at a given stage of routing. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="agentGroupRanksRel" type="ssj:doubleList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Determines the vector of ranks used for selecting an agent group at a given stage of routing relative to the previously used vector. When a relative vector of ranks is used, the rank for an agent group is determined by adding the previous rank to the given value. If the previous rank is infinite, only the given value is used. If the given value is infinite, the rank becomes infinite as well. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="agentGroupRanksFunc" type="ssj:Named"> <xsd:annotation> <xsd:documentation> Represents a user-defined function computing ranks. The <tt>name</tt> attribute gives the name of a class implementing the <tt>RankFunction</tt> interface from package <tt>umontreal.iro.lecuyer.contactcenters.router</tt> . Eight signatures of constructors are looked for, in that order: <tt>(CallCenter, int, Map),</tt> <tt>(CallCenter, int),</tt> <tt>(CallCenter, Map),</tt> <tt>(int, Map),</tt> <tt>(CallCenter),</tt> <tt>(Map),</tt> <tt>(int),</tt> and <tt>()</tt> (no argument). The first matching constructor is used to create the function object. The <tt>CallCenter</tt> class comes from package <tt>umontreal.iro.lecuyer.contactcenters.msk.model,</tt> the integer corresponds to the index of the call type, and the map comes from <tt>java.util.</tt> <p> If the constructor accepts a map, it is given a map whose keys are of type <tt>String</tt> and values are of type <tt>Object.</tt> The given map is filled with the properties parsed from the <tt>prpoerties</tt> child element. This can be used to pass parameters to custom rank functions. </p> <p> Some rank functions require complex state information, such as statistics observed during some time periods. In such cases, mechanisms need to be initialized at the beginning of simulation steps, and started during time intervals the rank function is used. For this, the rank function object might implement the <tt>Initializable</tt> and <tt>ToggleElement</tt> interfaces in package <tt>umontreal.iro.lecuyer.contactcenters.</tt> At the beginning of each step, the simulator calls <tt>init()</tt> on each initializable rank function, then <tt>start()</tt> for each function implementing <tt>ToggleElement.</tt> </p> </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:choice> <xsd:choice minOccurs="0"> <xsd:element name="queueRanks" type="ssj:doubleList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Determines the vector of ranks used for deciding in which waiting queues a call not served immediately goes in. This element is optional; if it is omitted, the vector of ranks for queueing is obtained using <tt>agentGroupRanks</tt> or <tt>agentGroupRanksRel.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="queueRanksRel" type="ssj:doubleList"> <xsd:annotation> <xsd:appinfo> <jxb:property collectionType="indexed"/> </xsd:appinfo> <xsd:documentation> Similar to <tt>agentGroupRanksRel</tt> for priorities of queues. This element is optional; if it is omitted, the vector of ranks for queueing is obtained using <tt>agentGroupRanks</tt> or <tt>agentGroupRanksRel.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="queueRanksFunc" type="ssj:Named"> <xsd:annotation> <xsd:documentation> Similar to <tt>agentGroupRanksFunc</tt> for ranks associated with waiting queues. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:choice> </xsd:sequence> </xsd:group> <xsd:complexType name="DefaultCaseParams"> <xsd:annotation> <xsd:documentation> Contains the vectors of ranks used by default, if no other case applies for a given routing stage. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:group ref="ccmsk:VectorsOfRanks"/> </xsd:sequence> </xsd:complexType> <xsd:group name="Conditions"> <xsd:choice> <xsd:element name="either" type="ccmsk:ConditionParamsList"> <xsd:annotation> <xsd:documentation> Verifies that at least one of the contained conditions applies. This corresponds to an ``or'' operation. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="all" type="ccmsk:ConditionParamsList"> <xsd:annotation> <xsd:documentation> Verifies that all the contained conditions apply. This corresponds to an ``and'' operation. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="queueSizes" type="ccmsk:TwoIndicesWithTypesParams"> <xsd:annotation> <xsd:documentation> Compares the waiting queue with index given by the <tt>first</tt> attribute with the waiting queue identified by the <tt>second</tt> attribute using the relationship given by the <tt>rel</tt> attribute. If the <tt>firstType</tt> attribute is given, the number of calls of the given type in the first queue is used rather than the total number of calls. The <tt>secondType</tt> attribute has a similar behavior, for the second queue. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="queueSizeThresh" type="ccmsk:IndexThreshIntWithTypeParams"> <xsd:annotation> <xsd:documentation> Compares the waiting queue with index given by the <tt>index</tt> attribute with the threshold given by the <tt>threshold</tt> attribute using the relationship given by the <tt>rel</tt> attribute. If the <tt>type</tt> attribute is given as well, the number of calls of the given type is compared rather than the total number of calls in the queue. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="numFreeAgents" type="ccmsk:TwoIndicesParams"> <xsd:annotation> <xsd:documentation> Compares the number of free agents in group with index given by the <tt>first</tt> attribute with that of the agent group identified by the <tt>second</tt> attribute. The comparison is performed using the relationship given by the <tt>rel</tt> attribute. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="numFreeAgentsThresh" type="ccmsk:IndexThreshIntParams"> <xsd:annotation> <xsd:documentation> Compares the number of free agents in group with index given by the <tt>index</tt> attribute with the threshold given by the <tt>threshold</tt> attribute. The comparison is performed using the relationship given by the <tt>rel</tt> attribute. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="fracBusyAgents" type="ccmsk:TwoIndicesWithTypesParams"> <xsd:annotation> <xsd:documentation> Compares the fraction of busy agents in group with index given by the <tt>first</tt> attribute with that of the agent group identified by the <tt>second</tt> attribute. Fractions are computed relative to the total number of agents in the group, and the comparison is performed using the relationship given by the <tt>rel</tt> attribute. If the <tt>firstType</tt> attribute is given, the fraction of busy agents in the first group serving calls of the given type is used for comparison. Similarly, the fraction of busy agents of a given type in the second group is used if the <tt>secondType</tt> attribute is set. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="fracBusyAgentsThresh" type="ccmsk:IndexThreshWithTypeParams"> <xsd:annotation> <xsd:documentation> Compares the fraction of busy agents in group with index given by the <tt>index</tt> attribute with the threshold given by the <tt>threshold</tt> attribute. The fraction is computed relative to the total number of agents in the group, and the comparison is performed using the relationship given by the <tt>rel</tt> attribute. Moreover, if the <tt>type</tt> attribute is set, the fraction of busy agents serving calls of a specific type is used rather than the fraction of all busy agents. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="stat" type="ccmsk:StatConditionParams"> <xsd:annotation> <xsd:documentation> Establishes a condition on statistics concerning a given type of performance measure. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="custom" type="ssj:Named"> <xsd:annotation> <xsd:documentation> Represents a user-defined condition. The <tt>name</tt> attribute gives the name of a class implementing the <tt>Condition</tt> interface from package <tt> umontreal.iro.lecuyer.contactcenters.msk.conditions </tt> . Eight signatures of constructors are looked for, in that order: <tt>(CallCenter, int, Map),</tt> <tt>(CallCenter, int),</tt> <tt>(CallCenter, Map),</tt> <tt>(int, Map),</tt> <tt>(CallCenter),</tt> <tt>(Map),</tt> <tt>(int),</tt> and <tt>()</tt> (no argument). The first matching constructor is used to create the function object. The <tt>CallCenter</tt> class comes from package <tt>umontreal.iro.lecuyer.contactcenters.msk.model,</tt> the integer corresponds to the index of the call type, and the map comes from <tt>java.util.</tt> <p> If the constructor accepts a map, it is given a map whose keys are of type <tt>String</tt> and values are of type <tt>Object.</tt> The given map is filled with the properties parsed from the <tt>prpoerties</tt> child element. This can be used to pass parameters to custom conditions. </p> <p> Some conditions require complex state information, such as statistics observed during some time periods. In such cases, mechanisms need to be initialized at the beginning of simulation steps, and started during time intervals the condition is used. For this, the condition object might implement the <tt>Initializable</tt> and <tt>ToggleElement</tt> interfaces in package <tt>umontreal.iro.lecuyer.contactcenters.</tt> At the beginning of each step, the simulator calls <tt>init()</tt> on each initializable condition, then <tt>start()</tt> for each condition implementing <tt>ToggleElement.</tt> </p> </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:choice> </xsd:group> <xsd:complexType name="ConditionParamsList"> <xsd:annotation> <xsd:documentation> Represents a list of conditions. An element of this type is used to construct <tt>either</tt> or <tt>all</tt> conditions. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:group maxOccurs="unbounded" minOccurs="1" ref="ccmsk:Conditions"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="Relationship"> <xsd:annotation> <xsd:documentation> Represents a relationship between two quantities. This is used to describe conditions comparing quantities such as the queue size, number of free agents, or statistics. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="SMALLER"/> <xsd:enumeration value="SMALLEROREQUAL"/> <xsd:enumeration value="EQUAL"/> <xsd:enumeration value="GREATEROREQUAL"/> <xsd:enumeration value="GREATER"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="TwoIndicesParams"> <xsd:annotation> <xsd:documentation> Contains the parameters for a condition comparing two indexed quantities, e.g., the size of two specific queues in a model. The compared indices are given using the <tt>first</tt> and <tt>second</tt> attributes, while the checked relationship is described by the <tt>rel</tt> attribute. </xsd:documentation> </xsd:annotation> <xsd:attribute name="first" type="ssj:nonNegativeInt" use="required"/> <xsd:attribute name="second" type="ssj:nonNegativeInt" use="required"/> <xsd:attribute name="rel" type="ccmsk:Relationship" use="required"/> </xsd:complexType> <xsd:complexType name="TwoIndicesWithTypesParams"> <xsd:annotation> <xsd:documentation> Contains the parameters for a condition comparing two index quantities possibly for specific call types. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:TwoIndicesParams"> <xsd:attribute name="firstType" type="ssj:nonNegativeInt"/> <xsd:attribute name="secondType" type="ssj:nonNegativeInt"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="IndexThreshParams"> <xsd:annotation> <xsd:documentation> Contains the parameters for a condition comparing an indexed quantity, e.g., the service level for a given call type, with a fixed threshold. The index for the quantity to be compared is given by the <tt>index</tt> attribute while the threshold is set up using the <tt>threshold</tt> attribute. The <tt>rel</tt> attribute describes how the indexed quantity is compared with the threshold. </xsd:documentation> </xsd:annotation> <xsd:attribute name="index" type="ssj:nonNegativeInt" use="required"/> <xsd:attribute name="threshold" type="xsd:double" use="required"/> <xsd:attribute name="rel" type="ccmsk:Relationship" use="required"/> </xsd:complexType> <xsd:complexType name="IndexThreshWithTypeParams"> <xsd:annotation> <xsd:documentation> Contains the parameters for a condition comparing an indexed quantity with a fixed threshold, possibly for a specific call type. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:IndexThreshParams"> <xsd:attribute name="type" type="ssj:nonNegativeInt"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="IndexThreshIntParams"> <xsd:annotation> <xsd:documentation> Same as <tt>IndexThreshParams</tt> but the threshold is an integer. </xsd:documentation> </xsd:annotation> <xsd:attribute name="index" type="ssj:nonNegativeInt" use="required"/> <xsd:attribute name="threshold" type="xsd:int" use="required"/> <xsd:attribute name="rel" type="ccmsk:Relationship" use="required"/> </xsd:complexType> <xsd:complexType name="IndexThreshIntWithTypeParams"> <xsd:annotation> <xsd:documentation> Contains the parameters for a condition comparing an indexed quantity with a fixed integer threshold, possibly for a specific call type. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:IndexThreshIntParams"> <xsd:attribute name="type" type="ssj:nonNegativeInt"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="StatConditionParams"> <xsd:annotation> <xsd:documentation> Regroups the parameters for a condition on statistics collected during some time intervals. The a <tt>measure</tt> attribute indicates the name of a type of performance measure on which the condition applies. The condition checks statistics of the appropriate type during a certain number of intervals given by the <tt>numCheckedPeriods</tt> attribute. The length of the intervals is set up using the <tt>checkedPeriodDuration</tt> attribute. Each statistics has an index whose meaning depends on the type of performance measure. For example, if service level is selected by setting <tt>measure</tt> to <tt>SERVICELEVEL,</tt> the index corresponds to a call type. The conditions on the collected statistics are given using elements. For the overall condition to to true, each condition set up by child elements must apply. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:choice maxOccurs="unbounded" minOccurs="1"> <xsd:element name="statWithThresh" type="ccmsk:IndexThreshParams"> <xsd:annotation> <xsd:documentation> Compares a statistic with index given by the <tt>index</tt> attribute with a constant given by <tt>threshold</tt> attribute, using the relationship given by the <tt>rel</tt> attribute. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="statWithStat" type="ccmsk:TwoIndicesParams"> <xsd:annotation> <xsd:documentation> Compares statistics given by indices <tt>first</tt> and <tt>second</tt> , using the relationship given by <tt>rel.</tt> </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:choice> </xsd:sequence> <xsd:attribute name="measure" type="xsd:string" use="required"/> <xsd:attribute name="numCheckedPeriods" type="ssj:positiveInt" use="required"/> <xsd:attribute name="checkedPeriodDuration" type="ssj:positiveDuration" use="required"/> </xsd:complexType> <xsd:complexType name="ConditionParams"> <xsd:annotation> <xsd:documentation> Represents a condition on the state of a call center. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:group ref="ccmsk:Conditions"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="RoutingCaseParams"> <xsd:annotation> <xsd:documentation> Represents a case inside a routing stage, and described using a routing condition along with vectors of ranks. If the vectors of ranks are omitted, no changes to priorities are performed if the condition applies. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ccmsk:ConditionParams"> <xsd:sequence> <xsd:group maxOccurs="1" minOccurs="0" ref="ccmsk:VectorsOfRanks"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="SegmentParams"> <xsd:annotation> <xsd:documentation> Gives parameters for a segment which is defined here as a group of contact types, agent groups, or main periods. When managing a complex model with many call types and agent groups, a common pratice is to regroup the elements into segments for easier analysis and reporting. In that context, elements of a segment share a common property such as the originating region, location, spoken language, part of day, day of week, etc. Each segment has an optional name which is used in statistical reports, zero or more properties, and a list of indices corresponding to the members of the formed group. The simulator supports segments that regroup inbound call types, outbound call types, call types (inbound or outbound), agent groups, and main periods. Segments are specified using elements in <tt>MSKCCParams.</tt> They have no impact on simulation, only on reports. </xsd:documentation> <xsd:appinfo> <jxb:class> <jxb:javadoc> Gives parameters for a segment which is defined here as a group of contact types, agent groups, or main periods. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <xsd:complexContent> <xsd:extension base="ssj:Named"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="values"> <xsd:annotation> <xsd:documentation> Determines the content of the segment, i.e., the indices of the components included in it. The allowed range for the indices depends on the type of segment described. </xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:list itemType="ssj:nonNegativeInt"/> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="MSKCCParams" type="ccmsk:CallCenterParams"> <xsd:annotation> <xsd:documentation> Main element representing parameters of a call center. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:schema>

XML Schema documentation generated with DocFlex/XML (Kit) v1.6.8 DocFlex/XML (Kit) is a freeware edition of DocFlex/XML, which is a powerful template-driven documentation and report generator from any data stored in XML files. Based on an innovative technology developed by FILIGRIS WORKS, this new tool offers virtuoso data querying and formatting capabilities not found in anything else! Need to convert your XML data into a clear nice-looking documentation or reports? Web-ready hypertext HTML or printable MS Word / OpenOffice.org friendly RTF? DocFlex/XML may be a cheap, quick and effective solution exactly for this task! Have questions? Not sure how to use it? Just send us e-mail to contact@filigris.com and we are always happy to help you! See also our services at www.filigris.com