Originally posted by: EdKlotz
I'm still confused. As you say, at any point, one function may attain the maximum value (although actually more than one could attain the same value). But different functions can attain the maximum at different points in the domain. So while I agree that you may have functions that never attain the maximum, I still don't understand what you mean when you apparently refer to a maximum single function over a specified domain. Or do you break up the original domain into subsets on which a single function is a maximum over that subset?
Suppose we have a simple example. Let the domain of x be [0,10] and let f1(x) = 5 - 1/2 x, f2(x) = 1/2 x and f3(x) = 1 + 1/5 x. If you draw this, f1(x) is the maximum function over [0,5], f2(x) is the maximum over [5,10] and f3(x) never attains the maximum, but takes on values > f1(x) in part of the domain, and takes on values > f2(x) in other parts of the domain. So what is your maximum function in this simple example?
Regarding discarding linear functions for processing, you can do some preprocessing by looking for functions that are completely dominated by some other function, i.e. if one function has all coefficients < another function, it is dominated and can be discarded from consideration. Then after that preprocessing, you could apply Paul's linear programming approach to hopefully fewer than N functions. You could probably construct some sort of hashing function to avoid having to compare N*(N-1) pairs of functions to look for dominated ones.
Note that this type of domination does not exist in the simple example I described. In that simple case where the domain involves simple bound constraints, perhaps you could do something by looking at the infimum and supremum values for each linear constraint. But in the more general case where the domain is described by full blown linear constraints rather than simple bound constraints, I'm not sure you can do anything without solving LPs, which means you might as well just go with Paul's approach. But maybe there's another way.
#CPLEXOptimizers#DecisionOptimization