public class CuttingPlaneParams extends Object
CuttingPlaneOptimizer
.Modifier and Type | Field and Description |
---|---|
boolean |
changeHeuristicCut
If
true , then checks the service level improvement after adding
a heuristic cut and updates the cut if necessary. |
int |
currentPeriod
Select the period to optimize (period count starts with 0).
|
int |
defaultSubStep
The default step length when computing the subgradient by finite difference.
|
double[] |
loadCoefficient
Coefficient vector that is used to adjust the fraction of work load or arrival rate
to be satisfied by the Max-flow problem or the flow covering equations, for each call type.
|
CuttingPlaneOptimizer.LocalSearchMethod |
localSearchMethod
Sets the local search method to be used at the end of the cutting-plane algorithm,
if the parameter
useLocalSearch is set to true . |
int |
lowOverallSubStep
The step length when computing the subgradient by finite difference
when the service level is below
pivotOverallSL . |
double |
minEachSLH
The minimum service level (SL) for every call type, if the SL of a call type
is lower then
minEachSLH , then generates a heuristic cut. |
double |
pivotOverallSL
If the global service level (SL) is below
pivotOverallSL , then it will use
lowOverallSubStep to generate the subgradient of the global
SL, else, it will use the defaultSubStep . |
double |
pivotPerCallSL
If the global service level (SL) is equal or above
pivotPerCallSL , then it generates
a subgradient cut for each call type with an unsatisfied SL,
else it generates the subgradient for the global SL. |
double |
skillCost
The cost premium for each additional skill (above 1) of an agent.
|
double |
slHCorrectionGap
When adding a heuristic cut to satisfy
minEachSLH service level (SL),
the program will enable a cut correction procedure if
this heuristic cut improves too much, that is, above minEachSLH + slHCorrectionGap . |
boolean |
solveIP
Selects to solve the staffing problem with integer staffing variables (
true ),
or continuous variables (false ). |
String |
solverClass
The package and name of the class of the solver class to use.
|
String |
solverParams
The parameters for the solver instance, concatenated into a single
String . |
boolean |
solveWithMaxFlowCut
If the service times are independent from agent groups, set to
true
to generate max-flow cuts, otherwise set to false to use the alternative
flow covering equations. |
boolean |
useLocalSearch
If
true , then the program will execute a local search at the
termination of the cutting-plane algorithm. |
boolean |
verbose
Prints the output of the optimization to the screen if
true . |
Constructor and Description |
---|
CuttingPlaneParams() |
Modifier and Type | Method and Description |
---|---|
List<Double> |
getLoadCoefficient()
Returns a new list containing the array
loadCoefficient . |
void |
setLoadCoefficient(List<Double> l)
Sets the array
loadCoefficient . |
public int currentPeriod
public double skillCost
skillCost
.
If the user sets a negative value, then the program will use the busy cost parameter
returned by AgentGroupManager.getBusyCost()
.public double minEachSLH
minEachSLH
, then generates a heuristic cut.public double slHCorrectionGap
minEachSLH
service level (SL),
the program will enable a cut correction procedure if
this heuristic cut improves too much, that is, above minEachSLH + slHCorrectionGap
.
Note that to allow heuristic cut correction, the parameter
changeHeuristicCut
must be set to true
.public int defaultSubStep
public int lowOverallSubStep
pivotOverallSL
. The minimum value is 1.public double pivotOverallSL
pivotOverallSL
, then it will use
lowOverallSubStep
to generate the subgradient of the global
SL, else, it will use the defaultSubStep
.
This value is limited to [0, 1]
.public double pivotPerCallSL
pivotPerCallSL
, then it generates
a subgradient cut for each call type with an unsatisfied SL,
else it generates the subgradient for the global SL.
The value is limited to the interval [0, 1]
.
This value must not be greater than the global SL target.
public double[] loadCoefficient
null
(this parameter has not been set in the XML
file), then the program will initialize this parameter to 1 for all call types.
To simplify the input when the coefficient is the same for all call types,
we allow the user to input a single value (instead of one value for each
call type). The program will then create a vector of the correct
size and duplicate this given coefficient value on the whole vector.public boolean changeHeuristicCut
true
, then checks the service level improvement after adding
a heuristic cut and updates the cut if necessary. The algorithm
will try to limit the improvement made by any heuristic cuts.public boolean useLocalSearch
true
, then the program will execute a local search at the
termination of the cutting-plane algorithm.
The local search method is determined by the parameter localSearchMethod
.public CuttingPlaneOptimizer.LocalSearchMethod localSearchMethod
useLocalSearch
is set to true
.public boolean solveIP
true
),
or continuous variables (false
).public boolean solveWithMaxFlowCut
true
to generate max-flow cuts, otherwise set to false
to use the alternative
flow covering equations.public boolean verbose
true
.public String solverClass
public String solverParams
String
.
If the class with name solverClass
implements the interface Initializable
,
then the program will initialize the parameters each time an instance is created by calling
Initializable.initFromString(java.lang.String)
if
Initializable.canInitFromString()
returns true
.
The exact String format depends on the solver class used.
If this string is null
, then the program will not call
Initializable.initFromString(java.lang.String)
.
public List<Double> getLoadCoefficient()
loadCoefficient
.public void setLoadCoefficient(List<Double> l)
loadCoefficient
.l
- the list containing the load coefficient for each call type