• by elonmollusc on 10/15/2021, 3:58:31 PM

    I recall discussing this in an integer programming class many years ago, and being told that binary variables were the better option. This Stack Exchange post seems to confirm:

    https://or.stackexchange.com/questions/3209/how-to-choose-be...

    The answer, which sounds reasonable to me, is that branching on a binary variable fixes its value, which effectively reduces the dimensionality of the model in subsequent evaluations. Branching on an integer variable restricts its range, but keeps it in the model. It may be easier to add cuts to the binary model.

    I also have a copy of Wolsey's Integer Programming that I flipped through, but couldn't find anything clearly relevant to the question.

    From a modeling perspective, if you care about the selection of individual items, then individual binary variables seem to be the natural choice. Trying to "compress" ten binary selection variables into an integer from 0 to 10 will be indirect and you'll probably have to add a bunch of extra constraints to encode that a variable assignment like x_c = 2 corresponds to selecting item #2 from category c.

    (I have done some OR in the past but I'm not an expert on MIPs, so I defer to anyone with better knowledge.)

  • by nanis on 10/15/2021, 1:14:33 PM

    One thing that is missing from your problem statement is the objective function. What are you trying to maximize?