use grb::prelude::*;
fn main() -> grb::Result<()> {
let env = Env::new("qp.log")?;
let mut model = Model::with_env("qp", &env)?;
let x = add_ctsvar!(model, name: "x", bounds: 0..1)?;
let y = add_ctsvar!(model, name: "y", bounds: 0..1)?;
let z = add_ctsvar!(model, name: "z", bounds: 0..1)?;
model.set_objective(
x * x + x * y + y * y + y * z + 2 * (z * z) + 2 * x,
Minimize,
)?;
model.add_constr("c0", c!(x + 2 * y + 3 * z >= 4))?;
model.add_constr("c1", c!(x + y >= 1))?;
model.optimize()?;
model.write("qp.lp")?;
model.write("qp.sol")?;
Ok(())
}