By the way, this is basically the same question with a better explanation
and a simple example:

https://math.stackexchange.com/questions/2752558/how-to-linearize-a-weighted-average-with-a-decision-variable

On Wed, Apr 25, 2018 at 11:04 AM, Michael Hennebry <
[email protected]> wrote:

> On Tue, 24 Apr 2018, Matt wrote:
>
> *max sum(i) { enabled[i] * value[i] * weight[i] } / sum(i) { enabled[i] *
>> weight[i] }*
>>
>> *s.t. sum (i) enabled[i] = M*
>>
>> - *value* is a vector of decimal numbers in [0, 1] (precomputed)
>> - *weight* is a vector of decimal numbers in [0, 1] (precomputed)
>> - *enabled* is a vector of either 0 or 1 (decision variable)
>>
>
> For linear constraints, there is a tranformation to an LP:
> https://en.wikipedia.org/wiki/Linear-fractional_programming#
> Transformation_to_a_linear_program
> It does not convert an integer problen to an integer problem.
> My suggestion is to use it to get an LP-based bound, call it q.
> Then maximize numerator - q*denominator as an IP.
> If it's zero, you are done.
> If it's negative, the true objective gives you another q.
> If it's positive, you made a mistake.
>
> You might need to explicitly bound the denominator.
>
> --
> Michael   [email protected]
> "Sorry but your password must contain an uppercase letter, a number,
> a haiku, a gang sign, a heiroglyph, and the blood of a virgin."
>                                                              --
> someeecards
>
_______________________________________________
Help-glpk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-glpk

Reply via email to