NonNegative Bounds in Linear Programming problem

Hello everyone,

I am not really sure where to post about Linear Programming. I am trying to program an LP problem using PuLP, as I am very familiar with Python.

I faced the issue of having decision variables which can take negative value,

i.e. they are bound between -k1 and K2. I have seen the advice of introducing

a new variable into the problem, so the original cosntraint is shifted in

order for the new variable to be non-negative only. I'd guess that the

substitution has to be carried out throughout the problem, i.e anywhere the

original variable appears (including objective function) but I would be

grateful if someone could confirm this.

Below I have written a simple problem and the reformulated proble.

I would like to know:

- is what I am doing correct?

- is there a better approach to this problem?

Many Thanks in advance

Paolo

Original problem,

Max -p1x1 - p2x2

x1 >= -10

x1 <= 20

x2 >= -30

x2 <= 40

Inv + x1 >= 0

Inv + x1 + x2 >= 0

Inv + x1 <= TC

Inv + x1 + x2 <= TC

with TC and Inv being positive constants

Reformulated Problem:

Given L1 = -10, y1 = x1 - L1 x1 = y1 + L1

x1 >= -10 y1 + L1 >= -10 y1 >= 0 (change var and subtract L1)

x1 <= 20 y1 + L1 <= 20 y1 <= 20 + 10 (change var and subtract L1)

Inv + x1 >= 0 Inv + y1 + L1 >= 0 Inv + y1 >= 10 (change var and

subtract L1)

Inv + x1 <= TC Inv + y1 + L1 <= TC Inv + y1 <= TC + 10 (change var and

subtract L1)

Given L2 = -30, y2 = x2 - L2 x2 = y2+ L2

x2 >= -30 y2 + L2 >= -30 y2 >= 0 (change var and subtract L2)

x2 <= 40 y1 + L2 <= 40 y1 <= 40 + 30 (change var and subtract L2)

Given L1 = -10 and L2 = -30

Inv + x1 + x2 >= 0 Inv + y1 + L1 + y2 + L2

>= 0

Inv + y1 + y2 >= -(L1 + L2) Inv + y1 + y2 >= 40

Inv + x1 + x2 <= TC Inv + y1 + L1 + y2 + L2

<= TC

Inv + y1 + y2 >= -(L1+L2) + TC Inv + y1 + y2 <= 40 + TC

Finally, Max -p1x1 - p2x2 Max -p1(y1+L1) - p2(y2+L2)