Actually after reading my mail Sum with i from 1 to N (lc(x1) * INVi1 + lc(xi2) * INVi2 + lc(xi3) * INVi3 + lc(xi4) * INVi4)
should be Sum with i from 1 to N (lc(T1) * INVi1 + lc(T2) * INVi2 + lc(T3) * INVi3 + lc(T4) * INVi4). where Ts are the thresholds which don't change across time, hence no need to add the i as an index lc stays for linearised cost. Paolo On 4 April 2011 22:24, Paolo Rossi <[email protected]> wrote: > Jeff, > > > With your help and some googling I am now at the next step. I hope so, at > least! > > > > Suppose that my cost function depends on a SOS with 4 variables, i.e. 4 > regions where I decide to linearise my cost function. When I say cost > function I mean a function describing total cost of production if production > falls into that region, not unitary cost of production as I meant in my > original post. > > > > I understand I need 4 mutually exclusive binary variables, say INVi > (inventory) > > INV1 + INV2 + INV3 + INV4 = 1. > > > > I have been thinking how to model the relationship between the value of the > variable switching the binary INV on and off and the threshold values at > which the binaries INV get switched on/off. Let’s call these thresholds T0, > T1, T2, T3 and T4 so that when the switching variable x is between T0 and T1 > INV1 gets switched on. > > > > if x >=T0 and if x < T1, INV1 is on, if T1 <= x < T2, INV2 etc. > > > > My constraints would look like > > x >= T0 x INV1, x <= T1*INV1 > > x >= T1 x INV2, x <= T2 x INV2 > > … > > x >= T3 x INV4, x <= T4 x INV4 > > > > Do they make sense? > > I actually saw on the net that this can be simplified to > > T1* INV1 + T2* INV2+ T3* INV3 + T4 * INV4– x = 0 with x > 0, X being the > switching variable > > > > but it would be nice to know if my reasoning makes sense. > > > > The cost function which goes into the objective function is > > becomes lc(x1) * INV1 + lc(x2) * INV2 + lc(x3) * INV3 + lc(x4) * INV4. So, > being pedant, the cost function is actually not linearised but approximated > by a step function. Is this true? > > > > So in terms of the objective function, max total profits = max [ total > revenues - total costs] = max [total revenues - lc(x1) * INV1 + lc(x2) * > INV2 + lc(x3) * INV3 + lc(x4) * INV4 ]. > > > > If I wanted to use cost per unit of production, rather than total cost, I > would need to multiply an expression similar to lc(x1) * INV1 + lc(x2) * > INV2 + lc(x3) * INV3 + lc(x4) * INV4 (at least in spirit) by the variable x. > That would make my problem non-linear. Is this the reason why it is better > to model total costs? > > > > Finally, this works for one time-period only, so if I have N time periods, > I need N sets of mutually exclusive variables so that in each time period > ith only one varibale in the ith set is on. My cost function becomes Sum > with i from 1 to N (lc(x1) * INVi1 + lc(xi2) * INVi2 + lc(xi3) * INVi3 + > lc(xi4) * INVi4). I am assuming the thresholds constants across time > periods, which suits me fine. > > Is this correct? > > > > Thanks a lot for your help. I am exhausted. I cannot wait to start > analysing data instead of doing this type of thinking! > > > > Thanks again, > > Paolo > > > On 4 April 2011 20:15, Kelly, Jeff (ON0F) <[email protected]>wrote: > >> Paolo; >> >> >> >> That’s ok, I’m a chemical engineer. >> >> >> >> Unless you want to write your own MISLP you will have to linearize your >> cost profiles and then have the binaries select what region or segment the >> costs should be in. It is actually a relatively easy thing to do. >> >> >> >> Jeff >> >> >> >> *From:* Paolo Rossi [mailto:[email protected]] >> *Sent:* Monday, April 04, 2011 3:10 PM >> *To:* Kelly, Jeff (ON0F) >> *Cc:* [email protected] >> *Subject:* Re: [Help-glpk] LP problem with variable coeffcients >> (parametric LPsimplex) >> >> >> >> 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) <[email protected]> >> 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:* [email protected] [mailto: >> [email protected]] *On Behalf Of *Paolo >> Rossi >> *Sent:* Monday, April 04, 2011 1:48 PM >> *To:* [email protected] >> *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 >> >> >> >> >> >> >> > >
_______________________________________________ Help-glpk mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-glpk
