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

Reply via email to