Tie-breaking in PuLP optimization

279 views Asked by At

Story

I'm trying to write a baseball elimination problem using the PuLP (python) minimization. The basic problem looks like this:

enter image description here

Basically x_ij is the future wins of team i over team j, g_ij is the overall games left between teams i and j, k is the team we're interested in, p_j is the points a team has so far. Variable z_j is just auxiliary, it's 1 when team j is ahead of k (by total wins) and 0 if behind.

Problem

I have no problem writing this in terms of PuLP and solving the optimization problem. However, I wanted to add some tie-breaking rules, to adjust the constraints, so that if, e.g., t_j == t_k, it compares, lets say, x_jk with x_kj to decide whether team j is ahead of k.

Question

So basically I need a condition that kicks in only under particular circumstances. Is there a way to do this easily in PuLP? Maybe by introducing some other variable? If not, what module/method would you suggest to solve this kind of tie-breaking thing?

1

There are 1 answers

0
thomaskeefe On

Since you have a lot of tie breaking rules that compete with each other, you may need a more complicated objective function that rewards or penalizes certain teams according to the tiebreak rules. You will need to somehow "price" the conditions using the objective function. Dummy variables and Big M constraints may be helpful for "if/then" conditions