YALMIP picks the best possible, which in your case is quadprog (which isn't that good...)
However, the problem you have is that the outer problem is nonconvex. THe local solver quadprog fails miserably. It doesn't even manage to solve the problem with inner optimality removed
optimize([server_cons(price),user_cons(a)],server_obj(a,price),sdpsettings('solver','quadprog'))
struct with fields:
yalmipversion: '20181012'
yalmiptime: 0.3186
solvertime: 0.2754
info: 'Infeasible problem (QUADPROG)'
problem: 1
That problem is trivially feasible though
optimize([server_cons(price),user_cons(a)])
yalmipversion: '20181012'
yalmiptime: 0.3259
solvertime: 0.0791
info: 'Successfully solved (GUROBI-GUROBI)'
problem: 0
However, trying to solve a bilvel problem with nonconvex outer problem is optimistic, to say the least...but your problem appears to be trivial as bmibnb easily solves it to global optimality
[res1,res2]=solvebilevel(server_cons(price),server_obj(a,price),user_cons(a),user_obj(a,price),a,sdpsettings('bilevel.outersolver','bmibnb'))