"Maximising the max" is inherently nonconvex. You will need to use a MIP trick here. And you must be able to get lower and upper bounds on the objects you're taking the max of in order to do so. Any finite bound will do, but sharper bounds will give a tighter relaxation that will probably solve faster and be nicer numerically.
Suppose you've got the following problem, which is marginally more general than the one you gave:
maximize max(3x, 2y)
s.t. 0 <= x <= A, 0 <= y <= B.
Notice that 3x
is trivially bounded below by 0
and above by 3A
. Similarly, 2y
is bounded below by 0
and above by 2B
. Now you introduce two binary variables, c_1
and c_2
, and you ask that exactly one of them be 1
. c_1
corresponds to the choice of 3x
from the max
and c_2
corresponds to the choice of 2y
from the max
. Then you write
maximize z_1 + z_2
s.t. z_1 <= 3A c_1
z_1 <= 3x
z_2 <= 2B c_2
z_2 <= 2y
c_1 + c_2 = 1
0 <= x <= A, 0 <= y <= B
c_1, c_2 binary
The first constraint "turns off" z_1
so that it has zero contribution if the max is attaned by 2y
. The second constraint limits z_1
by 3x
in the case where the max is attained by 3x
.