I have an optimizer for which the independent variables are continuous, which currently optimizes a complex objective function. I would like to add discrete or integer variables. I understand one of the techniques is Branch and Bound, but after doing a little reading, it seems B&B needs to solve the problem first treating all variables as continuous and then bifurcating the problem for each integer variable into the floor and ceiling for that variable.
My question is: what happens if it is not possible to solve the objective function treating the integer variables as continuous? For example, a variable might be number of pump stages, or pump on or off. If my B&B algorithm sends 3.46 as the number of pump stages, the objective function cannot be evaluated.
It's true that if your problem does not have continuous NLP relaxations that provide lower bounds for the objective function to be minimized, then you can't use NLP relaxations to obtain lower bounds in a branch-and-bound algorithm.
In order to make branch-and-bound work, you'd have to find some other way of obtaining a lower bound on the objective function that would be problem-specific.
Do you have some way of obtaining a lower bound on the objective value if (for example) the number of pump stages is restricted to being a whole number between 1 and 3?