int user_logical_fixing(void *user, int varnum, var_desc **vars, double *x, char *status, int *num_fixed)
Logical fixing is modifying the stati of variables based on logical implications derived from problem-specific information. In this function the user can modify the status of any variable. Valid stati are: NOT_FIXED, TEMP_FIXED_TO_LB, PERM_FIXED_TO_LB, TEMP_FIXED_TO_UB and PERM_FIXED_TO_UB. Be forewarned that fallaciously fixing a variable in this function can cause the algorithm to terminate improperly. Generally, a variable can only be fixed permanently if the matrix is full at the time of the fixing (i.e. all variables that are not fixed are in the matrix). There are no default options.
void *user | IN | Pointer to the user-defined LP data structure. |
int varnum | IN | The number of variables currently in the LP relaxation. (The length of the *vars and x arrays.) |
var_desc **vars | IN | The variables currently in the LP relaxation. |
double *x | IN | Values of the above variables. |
char *status | INOUT | Stati of variables currently in the LP relaxation. |
int *num_fixed | OUT | Number of fixed variables. |
USER_ERROR | Error. Ignored by SYMPHONY. |
USER_SUCCESS | User changed the stati of the variables she wanted. |
USER_DEFAULT | No logical fixing rules are implemented. |