public class FluidRatioCCProblem extends FluidCCProblem
FluidCCProblem
in order
to take into account the activity assignments by the routing policy.
Instead of allowing the flows to take any value as long as their sum is below
the number of agents in each group,
this new model assumes a fixed activity distribution ratio for each group on each call type.
This would allow a better representation of priority rules into the fluid model, for example.abanThresholds, arrivalRates, cc, cplex, currPeriod, flowVarMap, LARGE_NUMBER, listCallCenter, numGroups, numScenarios, numTypes, rMinusCost, rMinusVar, rPlusCost, rPlusVar, scenParams, scenVar, solveIP, staffCost, useRecourse, yVar, zVar
Constructor and Description |
---|
FluidRatioCCProblem(CallCenter cc,
ScenariosParams scenParams,
double[] staffCost,
int currentPeriod,
boolean solveIP)
Constructs the stochastic staffing problem with recourse and chance constraint.
|
Modifier and Type | Method and Description |
---|---|
protected void |
addFlowConstraints(double[][] arrivalRates,
double[][] abanThresholds,
double[][][] workRatio)
Adds the flow covering constraints.
|
ilog.cplex.IloCplex |
buildProblem(double[][] arrivalRates,
double[][] abanThresholds,
double[][][] workRatio)
Build the stochastic staffing problem with recourse and chance constraint with Cplex.
|
addFlowConstraints, addFlowVariables, buildProblem, getCplexModel, getUseRecourse, initIP, initLP, setUseRecourse
public FluidRatioCCProblem(CallCenter cc, ScenariosParams scenParams, double[] staffCost, int currentPeriod, boolean solveIP)
cc
- the call center model, this is used to read all the parameters, except the arrival rates which must
be given separately to the method double[][], double[][][])
scenParams
- the scenario parametersstaffCost
- the per-agent staffing cost vectorsolveIP
- set to true
to create an MIP problem, or false
to create an LP problempublic ilog.cplex.IloCplex buildProblem(double[][] arrivalRates, double[][] abanThresholds, double[][][] workRatio) throws ilog.concert.IloException
arrivalRates
- the arrival rates of each call type for each scenario, with index [type][scenario]
.
This matrix must be of size
K×M, where K is the number of call types and M is
the number of scenarios.abanThresholds
- the maximum abandonment ratio thresholds for each call type and aggregated call type,
and for each scenario.
The matrix has indexes [call type][scenario]
.
Let K be the number of call types and M the number of scenarios. If K = 1, then this matrix must be of size 1×M. If K >= 2, this matrix must be of size (K + 1)×M, with element index 0 to K - 1 corresponding to the call types and element K corresponding to the aggregated call types.
workRatio
- the distribution ratio of activities of a group over all call types, for each scenario.
The sum of ratio over all call types must be 1 for each group and scenario. A ratio cannot be negative.
The indexes are [type][group][scenario]
.ilog.concert.IloException
- an error occurred while creating the problem with Cplexprotected void addFlowConstraints(double[][] arrivalRates, double[][] abanThresholds, double[][][] workRatio) throws ilog.concert.IloException
double[][], double[][][])
.
This also adds the constraints that limit the work activity of each group over each call type.
The constraints are used to approximate the work load assigned by a routing policy
(because the fluid model does not consider the real routing policy of the call center).arrivalRates
- the arrival rates for each call type and each scenario, with indexes [type][scenario]
abanThresholds
- the maximum abandonment ratio threshold for each call type and aggregated calls, and for each scenario.
See method double[][])
.workRatio
- the distribution ratio of activities of a group over all call types, for each scenario.
The sum of ratio over all call types must be 1 for each group and scenario. A ratio cannot be negative.
The indexes are [type][group][scenario]
.ilog.concert.IloException