Hi Sina, There are tools appropriate for this type of problem, but that discussion is probably outside the scope of the glpk-help list. So I'll email you privately.
Jeff On Tue, Apr 2, 2013 at 9:52 AM, Andrew Makhorin <[email protected]> wrote: > -------- Forwarded Message -------- > From: Sina Burkhardt <[email protected]> > To: 'Andrew Makhorin' <[email protected]> > Subject: AW: [Fwd: Re: [Help-glpk] [Fwd: How to rewrite a nonlinear > expression in a linear one]] > Date: Tue, 2 Apr 2013 10:51:13 +0200 > > Hi Jeff, > > thanks for your answer. > > You're right. The idea is to use this SIR type of model as a small part in > another model which is a linear one. > Is there another tool like MathProg that I can use for? > > The problem is that I must get a solution of my model until Friday, so in > the next 3 days, to do some analysis on it and so on. > > Regards, > Sina > > > -----Ursprüngliche Nachricht----- > Von: Andrew Makhorin [mailto:[email protected]] > Gesendet: Dienstag, 2. April 2013 01:34 > An: Sina Burkhardt > Betreff: [Fwd: Re: [Help-glpk] [Fwd: How to rewrite a nonlinear expression > in a linear one]] > > -------- Forwarded Message -------- > From: Jeffrey Kantor <[email protected]> > To: Andrew Makhorin <[email protected]> > Cc: GLPK <[email protected]> > Subject: Re: [Help-glpk] [Fwd: How to rewrite a nonlinear expression in a > linear one] > Date: Mon, 1 Apr 2013 18:47:28 -0400 > > Hi Sina, > > > This looks like a compartmental SIR type of model with multiple > contagions. These models are inherently nonlinear because of the > denominator in the term you indicated was a problem, and additional terms > for infection rate, etc. I'm afraid there's not much you can do if you're > looking for a global linearization without imposing some pretty rigid > controllers in place which force linearization. > > > You could obtain a local linearization valid in the neighborhood of a > steady state. That might be useful if you're eventually looking for > optimal control policies. You could also create a convex outer > approximation for the dynamics, but I'm not sure how helpful that would be > for this problem. > > > So if what you're looking for is a global linearization of this inherently > nonlinear model, I'm afraid MathProg may not be the right tool for the job. > > > Jeff > > > > > > > On Mon, Apr 1, 2013 at 6:04 PM, Andrew Makhorin <[email protected]> wrote: > -------- Forwarded Message -------- > From: Sina Burkhardt <[email protected]> > To: [email protected] > Subject: How to rewrite a nonlinear expression in a linear one > Date: Mon, 1 Apr 2013 23:31:16 +0200 > > Hi all, > > > > I’m currently writing my Master thesis and I hope someone can > help me to > solve the following problem(s) with my model as quickly as > possible. > > I use glpk(gusek) and my model needs unfortunately two nonlinear > expressions. > > Is there any possibility to rewrite these nonlinear expressions > into > linear ones to solve it with gusek? > > Or can I assign a solution value of var to an parameter or > something > like that to avoid the nonlinear type? > > > > Here’s an abstract of the model : (the “problems” are red > labeled) > > > > > > ###Declarations#### > > param T, integer; #horizont of time > > set D; # DemandPoints > > > > /*Periodenzeitraum*/ > > set P, default{1..T}; # Planungshorizont T > > > > var susceptible{j in D,t in 0..T}>=0,integer; > > var N{j in D,t in 0..T}>=0,integer; # > Population > at DemandPoint j in periode t > > var I{j in D,t in 0..T}>=0; # Persons who > are > infected at DemandPoint j in periode t > > var I_nB{j in D,t in 0..T}>=0,integer #Infected without > treatment at > DemandPoint j in periode t > > var I_neu{j in D,t in P}>=0; # > add. > infected persons in j in t > > var lambda{j in D,t in P}>=0; > #Infectionrate > > > > /*Index of contagions*/ > > param c, >=0,<=1; > > > > /*contactrate*/ > > param kappa{D}; > > > > param beta{j in D}:=kappa[j]*c; > > > > /*Init. in t=0*/ > > init_Population{j in D}: N[j,0]=init_N0[j]; > > init_Infiziert{j in D}: I[j,0]=init_I0[j]; > > init_Gesund{j in D}: susceptible[j,0]=N[j,0]-I[j,0]; > > > > population{j in D,t in P}: N[j,t]=susceptible[j,t]+I[j,t]; > #with var > I{j in D,t in P} > > Gesunde{j in D,t in P}: susceptible[j,t]= susceptible[j,t-1]- > I_neu[j,t]; > > > > #Calculate infectionrate > > s.t. infekt_rate{j in D,t in P}: lambda[j,t]=beta[j]* > (I_nB[j,t-1] /N[j,t-1]); #Here’s the first Problem because its > nonlinear > and glpk can not solve NLP. > > > > #Calculate the new infected persons > > Neuinfiziert{j in D,t in P}: I_neu[j,t]= > lambda[j,t]*susceptible[j,t-1]; > > > > # example data > > > > data; > > set D:= D1; > > param T:=3; > > param c:=0.2; > > param kappa:= D1 10; > > param init_N0:= D1 100000; > > param init_I0:= D1 1000; > > > > end; > > > > > > > > I would be very happy about your help. > > Thanks in advance. > > > > Regards, > > Sina > > > > > > > > > > > > _______________________________________________ > Help-glpk mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/help-glpk > > > > > > > > > _______________________________________________ > Help-glpk mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/help-glpk >
_______________________________________________ Help-glpk mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-glpk
