public class CuttingPlaneExtCTMCSimOptimizer extends CuttingPlaneExtOptimizer
global SL target - CTMCtoSimGlobal
and the service level for each call type reaches SL target - CTMCtoSimCall
.
If one would like to ignore the global service level test, he can set CTMCtoSimGlobal
to 1.
Set CTMCtoSimCall
to 1, if the user wants to ignore the tests on all call types.
The local search is executed with the DE simulator.
Note that the first simulator does not necessarily need to be a CTMC simulator; it could be any type of simulator or even an approximator.
CuttingPlaneOptimizer.LocalSearchMethod
Modifier and Type | Field and Description |
---|---|
protected CuttingPlaneTest |
cpCTMCTest
The simulation tester with the CTMC simulator.
|
protected CuttingPlaneTest |
cpDETest
The simulation tester with the DE simulator.
|
protected ContactCenterEval |
ctmcSim
The CTMC simulator.
|
double |
CTMCtoSimCall
This parameter controls a part of the CTMC-to-DE switching condition, with respect
to the per call type service level (SL).
|
double |
CTMCtoSimGlobal
This parameter controls a part of the CTMC-to-DE switching condition, with respect
to the global service level (SL).
|
protected AbstractCallCenterSim |
deSim
The discrete-event (DE) simulator.
|
cutexParams, lsSimParams
agentCosts, arrivalRates, callGroups, cc, constraintCount, constraintMap, cpTest, cutp, eval, numAgents, numAgentsNoRound, numGroups, numTypes, objValue, optSL, optSLPerCall, optSolution, serviceRates, serviceRatesIG, solver, solverTimeSec, staffNoRoundDf, varIndexMap, verbose
Constructor and Description |
---|
CuttingPlaneExtCTMCSimOptimizer(CallCenter cc,
CuttingPlaneExtParams cutParams,
CuttingPlaneTest cpCTMCTest,
CuttingPlaneTest cpDETest,
ContactCenterEval ctmcSim,
AbstractCallCenterSim deSim,
SimParams deSimParams,
double CTMCtoSimGlobal,
double CTMCtoSimCall)
Constructs and initializes a cutting plane optimizer.
|
Modifier and Type | Method and Description |
---|---|
static void |
main(String[] args)
Runs the optimization with the entered parameters files.
|
void |
optimize()
Executes the cutting plane optimizing algorithm.
|
protected StaffingSolution |
optimizeCP()
Executes the cutting-plane optimization.
|
getCuttingPlaneExtParams, isTimeUp, localSearch, optimizeLocalSearch, solverSolve
addConstraint, addHeuristicCut, addIntConstr, addIntMaxFlowConstr, addSubGradientConstraint, adjustHeuristicCut, ccEval, changeConstraintRhs, createSolverInstance, equal, exportLP, freeSolver, generateSolver, getBestStaffing, getBestStaffingCost, getCuttingPlaneParams, getCuttingPlaneTest, getMapFlowIndex, getMapStaffingIndex, getOptimalSL, getOptimalSLPerCall, getPerAgentCost, getStaffingCost, localSearch, optimizeLocalSearch, printNumAgents, printNumAgents, setDefaultSolver, setMapFlowIndex, setMapStaffingIndex, solveMaxFlow
protected ContactCenterEval ctmcSim
protected AbstractCallCenterSim deSim
protected CuttingPlaneTest cpDETest
protected CuttingPlaneTest cpCTMCTest
public double CTMCtoSimGlobal
global SL target - CTMCtoSimGlobal
.
The switching occurs only when both the global and per call type conditions are
satisfied. The CTMC-to-DE simulator switch occurs only once.public double CTMCtoSimCall
SL target - CTMCtoSimCall
.
The switching occurs only when both the global and per call type conditions are
satisfied. The CTMC-to-DE simulator switch occurs only once.public CuttingPlaneExtCTMCSimOptimizer(CallCenter cc, CuttingPlaneExtParams cutParams, CuttingPlaneTest cpCTMCTest, CuttingPlaneTest cpDETest, ContactCenterEval ctmcSim, AbstractCallCenterSim deSim, SimParams deSimParams, double CTMCtoSimGlobal, double CTMCtoSimCall)
cc
- the call center parameterscutParams
- the parameter file for the cutting-plane optimizercpCTMCTest
- the CuttingPlaneTest
that will be used to compute
the service level (SL) using the CTMC simulator ctmcSim
cpDETest
- the CuttingPlaneTest
that will be used to compute the SL
using the discrete-event (DE) simulator deSim
ctmcSim
- the CTMC simulator; this will be replaced by deSim
in the second part
of the algorithm.deSim
- the discrete-event (DE) simulatordeSimParams
- the simulator parameters for deSim
CTMCtoSimGlobal
- the parameter CTMCtoSimGlobal
CTMCtoSimCall
- the parameter CTMCtoSimCall
public void optimize() throws OptimizerException
CuttingPlaneOptimizer
If a composition of call type is not covered by the skill supply (not enough agents), then there is a Minimum-Cut in the Max-Flow of the network representation of the call center. The number of agents must be equal or greater than the ρ of that composition.
If the SL of a call type is below its minimum required SL, then it adds a heuristic constraint to satisfy its minimum SL. Else, if the SL does not satisfy the overall SL, then a subgradient cut is generated.
However, satisfying the SL constraint might violate the skill supply constraint. The algorithm iterates until both constraints are satisfied or until it exceeds a maximum number of iterations.
optimize
in interface StaffingOptimizer
optimize
in class CuttingPlaneExtOptimizer
OptimizerException
- if an error occurred in the optimization.protected StaffingSolution optimizeCP() throws OptimizerException
optimizeCP
in class CuttingPlaneExtOptimizer
OptimizerException
- if an error occurred while trying to add a constraintpublic static void main(String[] args) throws Exception
The arguments are:
args
- see the descriptionException