use grb::prelude::*;
fn main() -> grb::Result<()> {
// create an empty model.
let mut model = Model::new("qcp")?;
// add & integrate new variables.
let x = add_ctsvar!(model, name: "x")?;
let y = add_ctsvar!(model, name: "y")?;
let z = add_ctsvar!(model, name: "z")?;
// model.update().unwrap();
// set objective funtion:
// f(x,y,z) = x
model.set_objective(x, Maximize)?;
// add linear constraints
// c0: x + y + z == 1
model.add_constr("c0", c!(x + y + z == 1))?;
// add quadratic constraints
model.add_qconstr("qc0", c!(x * x + y * y <= z * z))?;
model.add_qconstr("qc1", c!(x * x <= y * z))?;
// optimize the model.
model.optimize()?;
// write the model to file.
model.write("qcp.lp")?;
model.write("qcp.sol")?;
Ok(())
}