optimizing parameter values

Use this forum to post Vensim related questions.
Post Reply
malli
Member
Posts: 44
Joined: Wed Nov 15, 2006 5:10 am

optimizing parameter values

Post by malli »

I want to optimize a model by making a parameter take different values across time. Essentially, a variable such as 'delay in conversion' could be a parameter. Currently when I run optimization it takes one value which best fits, given the payoff. I feel that making it take different values would give a better fit to the model

Tried subscripting across time, but did not work.

The basic skeletal model is attached. The idea is to optimize the delays and fractions involved

Any help on this would be greatly appreciated

Malli

[Edited on 2-21-2008 by malli]
Attachments
ResourceFlow04.mdl
(7.99 KiB) Downloaded 329 times
LAUJJL
Senior Member
Posts: 1477
Joined: Fri May 23, 2003 10:09 am
Vensim version: DSS

varying parameter

Post by LAUJJL »

Hi Malli.

First, there are bugs in your model. Probably minors, like lack of initializing levels.
Secondly there are no units. I really hate to work on a model without unit.
Units help to understand the structure of the model and its objective.
Thirdly, I think that you confuse the different kind of parameters in a model.
You can have parameters which represent a stable characteristic of reality, called in
Vensim, unchanging parameters and the changing parameters which represent policies and
can take different values but only one during a run.
What you are talking is about policy parameters.
Policies define rules that will govern how decisions will be taken depending on the
preceding situation (the set of levels) and the chosen rules or set of rules.

If you feel that a rule must be changed during the time, you must define a rule that will govern
how it will change, and the parameter is becoming a variable.

It is of course possible to define different parameters and decide that the parameter that you
want to change will take the values of these different parameters at a predefined time, but
you are no more making an SD model where the decisions are strictly governed by the preceding levels the overall fixed parameters and changeable policy parameters and eventually exogenous data if the model is not closed.
Closed models are easier to study, because the SD paradigm
is working fully as there is no more or less unpredictable exogenous data to disturb the rationality of the model.
The solution is to give a minimum of rationality to the
exogenous data.
You can optimize and find the values of the different parameters that will change the value of your first parameter over time, it works in Vensim, I have often done it, but I think it is a bad practice and is generally the consequence of a badly conceptually built model and a bad understanding of the SD paradigm.
In these kind of models where you try to define the policy in advance, the feed back loops that govern the decisions are replaced by a direct optimization.
The method of direct optimization has too a sever drawback: if you have many parameters and you want to make them change a significant number of time, it may be necessary to optimize a huge quantity of parameters that may increase considerably the time of optimization.
Regards.
JJ

[Edited on 21-2-2008 by LAUJJL]

[Edited on 21-2-2008 by LAUJJL]

[Edited on 21-2-2008 by LAUJJL]
bob@vensim.com
Senior Member
Posts: 1107
Joined: Wed Mar 12, 2003 2:46 pm

Post by bob@vensim.com »

If you want to vary parameters at different times use equations such as

constant to use = IF THEN ELSE(Time < switch time, first constant,second constant)

if you want to switch at more than a few times you can use the VECTOR LOOKUP function as in

constant to ue = VECTOR LOOKUP(constants at times[t1],Time/unit time,initial time, final time,0)

where

tsub : (t1-t6)

or similar.
malli
Member
Posts: 44
Joined: Wed Nov 15, 2006 5:10 am

Post by malli »

Hi Bob & JJ,

Thanks!

JJ - agree with what you are saying. This was a strictly work in progress model, and hence I put the model in before keying in Initial values and doing units consistency.

Also, I do not intend to parameterize all values - only very few (maybe 1 or 2). For the rest, I intend to use policy levers - instance, effect of advertising on fraction accepting.

Many thanks for your inputs

Regards
Malli
Post Reply