bilevel optimization scheme