-
Notifications
You must be signed in to change notification settings - Fork 18
Description
Hey, I want to use the function of "SCIPcreateExprPow". It is not available currently.
Therefore, I want to add it by my self.
pub(crate) fn create_pow_expr(
&mut self,
base: &Variable,
exponent: f64,
) -> Result<Expr, Retcode> {
let mut expr_ptr = MaybeUninit::uninit();
scip_call! { ffi::SCIPcreateExprPow(
self.raw,
expr_ptr.as_mut_ptr(),
base.raw as *mut _,
exponent,
None,
std::ptr::null_mut(),
) };
let expr_ptr = unsafe { expr_ptr.assume_init() };
Ok(Expr { raw: expr_ptr })
}
pub fn add_pow_expr(&mut self, base: &Variable, exponent: f64) -> Rc {
let exp = self
.scip
.create_pow_expr(base, exponent)
.expect("Failed to create express power in state ProblemCreated");
let exp_rc = Rc::new(exp);
return exp_rc;
}
Here is an example to utilize it,
// Create model
let mut model = Model::new()
.hide_output()
.include_default_plugins()
.create_prob("test")
.set_obj_sense(ObjSense::Maximize);
// Add variables
let x1 = model.add_var(0., f64::INFINITY, 3., "x1", VarType::Integer);
let xx = model.add_pow_expr(&x1, 2.0);
model.add_cons(
vec![x1.clone(), **xx.clone()**],
&[2., 1.],
-f64::INFINITY,
100.,
"c1",
);
I found that I cannot utilize it in model.add_cons .
Is any suggestion?
Thank you!
Young