Re: How to linearize a weighted average with a decision variable?

Heinrich Schuchardt <[email protected]>
Newsgroups gmane.comp.gnu.glpk
Message-ID <[email protected]>
On 04/25/2018 03:15 AM, Matt wrote:
> Hi all,
> 
> I'm trying to model a problem but it turned out to be non linear.
> 
> A simplified version of the model is written below. Basically it
> averages the weighted value of all enabled points, provided there are
> exactly M enabled points.
> 
> *max sum(i) { enabled[i] * value[i] * weight[i] } / sum(i) { enabled[i]
> * weight[i] }*
> *s.t. sum (i) enabled[i] = M

If there are no further constraints there is no need for a MIP solver.
The problem can be solved by sorting by value and weight.

If the number of binaries is small (<= 20) you will be able to iterate
over all permutations with sum(enabled) = M sorted by descending
objective and to take the first combination satisfying all constraints.

Regards

Heinrich

> *
> 
> - *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)
> 
> The model is very simple so I'm guessing there probably is a way to
> linearize it or some workaround I'm not aware of.
> 
> Thanks,
> Matt
> 
> 
> _______________________________________________
> Help-glpk mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/help-glpk
> 


_______________________________________________
Help-glpk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-glpk
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.