In a multi-objective MIP model I am working I have a binary variable *x(t)*. This variable is mostly zero but now and then it is one. One of the goals is to achieve an even spread of the ones. I.e.

The first row has the ones clustered in the middle. The second one looks pretty good.

The following idea is based on how Q-Q plots are used to find distributions in statistical data (http://en.wikipedia.org/wiki/Q-Q_plot).

First we form a running sum:

The “predicted’ running sum for an evenly distributed *x(t)* can be expressed as *tn/T* where *n* is the total number of ones, *t* is the current index and *T* is the last *t*:

Now we try to keep the values *s(t)* as close as possible to the predicted values *tn/T*. I.e.:

Note that n is a variable in my model: I don’t know in advance how many x(t)’s are turned on. Indeed when I run this (with n=3) I see:

---- 42 VARIABLE x.L t3 1.000, t7 1.000, t10 1.000 |

Here are the results when we compare the two solutions (click to enlarge):

Indeed this seems to confirm this approach could work, and we can add d(max)-d(min) as an extra objective to minimize.