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]
optimizing parameter values
optimizing parameter values
- Attachments
-
- ResourceFlow04.mdl
- (7.99 KiB) Downloaded 329 times
varying parameter
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]
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]
-
- Senior Member
- Posts: 1107
- Joined: Wed Mar 12, 2003 2:46 pm
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.
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.
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
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