help-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-glpk] LP problem with variable coeffcients (parametric LPsimpl


From: Paolo Rossi
Subject: Re: [Help-glpk] LP problem with variable coeffcients (parametric LPsimplex)
Date: Mon, 4 Apr 2011 20:09:30 +0100

Hi Jeff,
 
thanks for that. I had figured it out in the meantime (while cradling my son to sleep!) that the first one could be solved by something like
 
INJi <= MaxInj * BInj
Withi <= MaxWith * BWith
BInj + BWith = 1
 
which is I think exactly what you mention. So thank you very much  for your reply, as I was wondering if my reasoning was making sense! At the very beginning I thought I'd need to introduce BInj*INJi in the objective function - that is why I stopped due to the introduction of non-linearity in the objective function.
 
I get the hint from your remark on my second question but I really have to think about how to implement it. Sorry my background is not in operations Research..
 
Paolo 
 

 
On 4 April 2011 19:23, Kelly, Jeff (ON0F) <address@hidden> wrote:

Paolo;

 

Your first issue of INJi * WITHi = 0 complementarity is easily modeled by adding two binary variables for each quantity i.e., yINJi and yWITHi then you need three constraints:

1.       INJi <= uINJi * yINJi

2.       WITHi <= uWITHi * yWITHi

3.       yINHi + yWITHi = 1 or <= 1

4.       yINJi, yWITHi are binary

The first two constraints are semi-continuous and third is a SOS1/GUB where the “u” prefix is the upper bound on the quantities.  A lower bound is an exercise for you.

 

Your second issue requires piecewise linear approximation of the cost curves due to most likely economizes/diseconomies-of-scale.  You will need to define regions of linearity and create extra binary variables for these regions with either SOS1 or SOS2 constraints depending on how you implement the “separable programming” aspects.

 

I hope this helps - Jeff

 

 

From: help-glpk-bounces+jeff.kelly=honeywell.com@gnu.org [mailto:help-glpk-bounces+jeff.kelly=honeywell.com@gnu.org] On Behalf Of Paolo Rossi
Sent: Monday, April 04, 2011 1:48 PM
To: address@hidden
Subject: [Help-glpk] LP problem with variable coeffcients (parametric LPsimplex)

 

Hi everyone,

 

I am trying to replicate the modelling Byers, 2006. Commodity Storage Valuation: A linear optimization based on Traded Instruments, Energy Economics. The author is quite concise on how the model has been specified but it says that he used LpSolve

 

The paper assesses the value of a gas storage facility. The value is a function of:

-          Injected quantity:                                INJ

-           Withdrawn quantity:                          WITH

-          Price paid for injections:                    Pi

-          Price paid for withdrawals:                Pw

-          cost ofinjecting one unit of gas:         ci

-          cost of withdrawing one unit of gas: cw

 

If one takes two periods,

 

Max    -INJ1 x pi,1   +   WITH1 x pw,1   –   ci,1 x INJ1   –  cw,1 x WITH1  –   INJ2 x pi,2    +   WITH2 x pw,2  –  ci,2 x INJ2– cw,2 x WITH2

 

Constraints

-          For each time period i, if INJi > 0 then WITHi = 0 and if WITHi > 0 then INJi = 0 - you can either withdraw or inject. I thought of using a binary variable but then I realised that it would need to multiply INJi and WITHi so I got stuck as it would violate linearity of objective functions

-           

-          For each time period I, cw,I and ci,I (cost of withdrawing and cost of injecting) are a function of the gas stored in the facility.  The right curve here would be something similar to an exponential function through the origin for ci, i.e. the more gas you have in the facility the more it costs to push an extra unit of gas in. If one works with strep functions, the formulation would be something like

ci =      1  if sum of (inj – with ) over the periods up to i  is         <= 3

              2  if sum of (inj – with ) over the periods up to i is          > 3 and <= 6

              3  if sum of (inj – with ) over the periods up to i is          >  6

 

For cw, the curve would be symmetric to the one above.

cw =     3  if sum of (inj – with ) over the periods up to i is            <= 3

              2  if sum of (inj – with ) over the periods up to i is           > 3 and <= 6

              1  if sum of (inj – with ) over the periods up to i is          >  6

 

I am pretty stuck here so thanks a lot for any help

 

Paolo

 

 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]