bi-level programming model