XPRSrepairweightedinfeas
XPRSrepairweightedinfeas |
Purpose
By relaxing a set of selected constraints and bounds of an infeasible problem, it attempts to identify a 'solution' that violates the selected set of constraints and bounds minimally, while satisfying all other constraints and bounds. Among such solution candidates, it selects one that is optimal regarding to the original objective function. For the console version, see
REPAIRINFEAS.
Synopsis
int XPRS_CC XPRSrepairweightedinfeas(XPRSprob prob, int * scode, const double lrp_array[], const double grp_array[], const double lbp_array[], const double ubp_array[], char phase2, double delta, const char *optflags);
Arguments
prob
|
The current problem.
|
||||||||||||
scode
|
The status after the relaxation:
|
||||||||||||
lrp_array
|
Array of size
ROWS containing the preferences for relaxing the less or equal side of row.
|
||||||||||||
grp_array
|
Array of size
ROWS containing the preferences for relaxing the greater or equal side of a row.
|
||||||||||||
lbp_array
|
Array of size
COLS containing the preferences for relaxing lower bounds.
|
||||||||||||
ubp_array
|
Array of size
COLS containing preferences for relaxing upper bounds.
|
||||||||||||
phase2
|
Controls the second phase of optimization:
|
||||||||||||
delta
|
The relaxation multiplier in the second phase -1.
|
||||||||||||
optflags
|
Specifies flags to be passed to the Optimizer.
|
Related controls
Double
The weighted sum of violations if a solution is identified to the relaxed problem.
|
Further information
1. A row or bound is relaxed by introducing a new nonnegative variable that will contain the infeasibility of the row or bound. Suppose for example that row a
Tx = b is relaxed from below. Then a new variable ('infeasibility breaker')
s≥0 is added to the row, which becomes a
Tx +s = b. Observe that a
Tx may now take smaller values than b. To minimize such violations, the weighted sum of these new variables is minimized.
2. A preference of 0 results in the row or bound not being relaxed. The higher the preference, the more willing the modeller is to relax a given row or bound.
3. The weight of each infeasibility breaker in the objective minimizing the violations is 1/p, where
p is the preference associated with the infeasibility breaker. Thus the higher the preference is, the lower a penalty is associated with the infeasibility breaker while minimizing the violations.
4. If a feasible solution is identified for the relaxed problem, with a sum of violations
p, then the sum of violations is restricted to be no greater than (
1+delta)
p, and the problem is optimized with respect to the original objective function. A nonzero delta increases the freedom of the original problem.
5. Note that on some problems, slight modifications of delta may affect the value of the original objective drastically.
6. The default value for delta in the console is 0.001.
7. Note that because of their special associated modeling properties, binary and semi-continuous variables are not relaxed.
8. If
pflags is set such that each penalty is the reciprocal of the preference, the following rules are applied while introducing the auxiliary variables:
Pref. array | Affects | Relaxation | Cost if pref.>0 | Cost if pref.<0 |
---|---|---|---|---|
lrp_array | = rows | aTx - aux_var = b | 1/lrp*aux_var | 1/lrp*aux_var2 |
lrp_array | <= rows | aTx - aux_var <= b | 1/lrp*aux_var | 1/lrp*aux_var2 |
grp_array | = rows | aTx + aux_var = b | 1/grp*aux_var | 1/grp*aux_var2 |
grp_array | >= rows | aTx + aux_var >= b | 1/grp*aux_var | 1/grp*aux_var2 |
ubp_array | upper bounds | xi - aux_var <= u | 1/ubp*aux_var | 1/ubp*aux_var2 |
lbp_array | lower bounds | xi + aux_var >= l | 1/lbp*aux_var | 1/lbp*aux_var2 |
9. If an irreducible infeasible set (IIS) has been identified, the generated IIS(s) are accessible through the IIS retrieval functions, see
NUMIIS and
XPRSgetiisdata.
Related topics