SCIPgetConsCopy

Function SCIPgetConsCopy 

Source
pub unsafe extern "C" fn SCIPgetConsCopy(
    sourcescip: *mut SCIP,
    targetscip: *mut SCIP,
    sourcecons: *mut SCIP_CONS,
    targetcons: *mut *mut SCIP_CONS,
    sourceconshdlr: *mut SCIP_CONSHDLR,
    varmap: *mut SCIP_HASHMAP,
    consmap: *mut SCIP_HASHMAP,
    name: *const c_char,
    initial: c_uint,
    separate: c_uint,
    enforce: c_uint,
    check: c_uint,
    propagate: c_uint,
    local: c_uint,
    modifiable: c_uint,
    dynamic: c_uint,
    removable: c_uint,
    stickingatnode: c_uint,
    global: c_uint,
    valid: *mut c_uint,
) -> SCIP_RETCODE
Expand description

returns copy of the source constraint; if there already is a copy of the source constraint in the constraint hash map, it is just returned as target constraint; elsewise a new constraint will be created; this created constraint is added to the constraint hash map and returned as target constraint; the variable map is used to map the variables of the source SCIP to the variables of the target SCIP

@warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may be declared feasible even if it violates this particular constraint. This constellation should only be used, if no LP or pseudo solution can violate the constraint – e.g. if a local constraint is redundant due to the variable’s local bounds.

@note The constraint is not added to the target SCIP. You can check whether a constraint is added by calling SCIPconsIsAdded(). (If you mix SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add explicitly and what is already added.)

@note The constraint is always captured, either during the creation of the copy or after finding the copy of the constraint in the constraint hash map

@note In a multi thread case, you need to lock the copying procedure from outside with a mutex. @note Do not change the source SCIP environment during the copying process

@return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref SCIP_Retcode “SCIP_RETCODE” for a complete list of error codes.

@pre This method can be called if sourcescip is in one of the following stages: - \ref SCIP_STAGE_PROBLEM - \ref SCIP_STAGE_TRANSFORMED - \ref SCIP_STAGE_INITPRESOLVE - \ref SCIP_STAGE_PRESOLVING - \ref SCIP_STAGE_EXITPRESOLVE - \ref SCIP_STAGE_PRESOLVED - \ref SCIP_STAGE_INITSOLVE - \ref SCIP_STAGE_SOLVING - \ref SCIP_STAGE_SOLVED

@pre This method can be called if targetscip is in one of the following stages: - \ref SCIP_STAGE_PROBLEM - \ref SCIP_STAGE_TRANSFORMING - \ref SCIP_STAGE_INITPRESOLVE - \ref SCIP_STAGE_PRESOLVING - \ref SCIP_STAGE_EXITPRESOLVE - \ref SCIP_STAGE_PRESOLVED - \ref SCIP_STAGE_SOLVING - \ref SCIP_STAGE_EXITSOLVE

@note sourcescip stage does not get changed

@note targetscip stage does not get changed

See \ref SCIP_Stage “SCIP_STAGE” for a complete list of all possible solving stages.