Posted by Nijland <lukkenaer@planet.nl>
>>MIN(normal_rate_of_winning_customers , potential_customers/dt) (see
Coyle)
>>MIN(Normal_Sales_Rate , Inventory/TIME STEP) (see Fiddaman)
These constructions are dimensionally valid, but have a “scaling error”
(see also the comment of George Richardson).
The first term is expressed as a number of people per unit of time,
the second term as a number of people per (dt units) of time.
Compare: MIN(5[ton_of apples] , 20[kg_of apples]), which is also problematic.
The “unit of time” should not be confused with:
1) the “solution interval” (“dt” or “time step”).
2) the “time constant” or “average_residing_time”
So, shouldn’t one rather replace these equations by:
MIN(normal_rate_of_winning_customers , Inventory / Average_residing_time) ?
MIN(Normal_Sales_Rate , Inventory/TIME CONSTANT) ?
However, the MIN function often gives other problems of unrealistic discontinuities
(see Bill Braun, Tom Fiddaman), and should be avoided as much as possible.
I have tried to collect some comments in this discussion up to now,
and present here a model containing the comments:
Conclusions up to now:
a) disaggregate equations into parts which have substantial meaning (= ecological,
psychological, sociological, economic, biological, chemical etc...),
b) include negative feedback control between levels and their outflows
(this has substantial meaning, for consistent with the first law of thermo-dynamics),
c) keep the dimensions consistent,
d) avoid mathematical tricks (MAX, MIN) to prevent variables to get “unwanted” values
(initially one might use them in the model building process, to get the model running,
later on they should be replaced by more theoretically and empirically valid constructions,
in the end, however, some of them may be reintroduced, as a safeguard against
“time constants” becoming too small under certain dynamic conditions),
e) avoid dt in all substantial equations (except in level equations).
The following model aims to incorporate all these conditions:
actual_customers = maximal_customers – potential_customers
CUSTOMERS NOT YET PERSUADED, BUT STILL TO BE PERSUADED [PEOPLE]
Explanation: is an auxiliary variable. Note, however, that this auxiliary variable has the character of a stock, as it is the complement of the level variable potential_customers (see the discussion about the order of models some time ago on this list).
potential_customers = potential_customers + dt * (-customers_won) (INITIAL value = 2).
ACTUAL NUMBER OF CUSTOMERS [PEOPLE]
Explanation: this is a level equation.
customers_won = (potential_customers / tcnorm )* susceptability
NUMBER OF NEW CUSTOMERS PER TIME UNIT [PEOPLE*MONTH–1]
Explanation: this is the rate equation. This equation closes a negative feedback of the model (potential_customers _> customers_won _> potential_customers), giving the required condition mentioned by Fiddeman, that all outflows from stocks need first-order negative feedback.
maximal_customers = 90
MAXIMUM NUMBER OF CUSTOMERS [PEOPLE]
Explanation: a constant (may be an exogenous variable from another submodel, of course).
tcnorm = 20
NORMAL TIME CONSTANT [MONTH]
Explanation: a constant; the reciprocal of the time constant gives the fraction of “potential_customers” which are persuaded per unit of time (under normal conditions).
susceptibility = { potential_customers / potential_customers(INIT) }**susc_exp
MULTIPLIER FOR EASINESS TO WIN NEW CUSTOMERS [DIM. LESS]
Explanation: an auxiliary. First remark: The first customer will be more susceptible than the last one; the multiplier susceptibility introduces the concept of increasing effort to win new customers, as the stock of potential_customers gets depleted (concepts mentioned by Bill Braun and Tom Fiddaman).
We assume that the customer population has a (skewed) log-normal distribution over the feature susceptibility. (Such log-normal distributions are very common; an important one, which has narrow links with winning of customers and selling of commodities, is income-distribution). As a consequence the susceptibility curve will be a skewed sigmoid curve. This skewed sigmoid may be approximated by a power function of the form “{potential_customers / potential_customers(INIT) }**susc_exp”. Of course one may also replace this relation by a TABLE function.
Second remark: the quotient “tcnorm / suceptibility” may be regarded as the “time-variable” of the customer-winning process, with dimension [MONTH]; The variability of the average_residing_time may imply that we also need a variable solution interval dt !.
(“time constants” are sometimes “time variables”)
Third remark: The susceptibility equation closes a second negative feedback: (potential_customers _> susceptibility _> customers_won _> potential_customers). This feedback gives an extra control on negative values of “potential_customers”. It is possible to aggregate both relations (potential_customers _> customers_won) and (potential_customers _> susceptibility _> customers_won) into one new equation:
customers_won = constant * {potential_customers**(1+susc_exp)}.
Doing such makes the model mathematically more compact, but also conceptually less transparent.
susc_exp=0.5 (0 < susc_exp 1)
SPECIFIC SUSCEPTIBILITY EXPONENT [DIM.LESS]
Explanation: this exponent is a measure for the population’s distribution over susceptibility.
DT=0.1; SAVPER=1; LENGTH=60
In my opinion this model is also an “archetype” for selling of soup, or for selling of cars, as “one car sold” corresponds with “one new customer”. Of course, the real process may need an cascade of these archetypes, as the winning of customers and the selling of products may proceed “in phases”. And an extra positive loop may be needed, which relects a possible self-reinforcement of the process. Such would make the rate equation something like:
customers_won = actual-customers * (potential_customers / tcnorm) * susceptiblily
Geert Nijland,
email:
lukkenaer@planet.nl
Posted by Nijland <lukkenaer@planet.nl>
posting date Thu, 27 Oct 2005 12:43:09 +0200