[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-glpk] [Fwd: AW: [Fwd: Re: [Fwd: How to rewrite a nonlinear express
From: |
Andrew Makhorin |
Subject: |
[Help-glpk] [Fwd: AW: [Fwd: Re: [Fwd: How to rewrite a nonlinear expression in a linear one]]] |
Date: |
Tue, 02 Apr 2013 17:52:53 +0400 |
-------- Forwarded Message --------
From: Sina Burkhardt <address@hidden>
To: 'Andrew Makhorin' <address@hidden>
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:address@hidden
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 <address@hidden>
To: Andrew Makhorin <address@hidden>
Cc: GLPK <address@hidden>
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 <address@hidden> wrote:
-------- Forwarded Message --------
From: Sina Burkhardt <address@hidden>
To: address@hidden
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
address@hidden
https://lists.gnu.org/mailman/listinfo/help-glpk
- [Help-glpk] [Fwd: AW: [Fwd: Re: [Fwd: How to rewrite a nonlinear expression in a linear one]]],
Andrew Makhorin <=