[From Bill Powers (2011.08.04.0705 MDT)]
Shannon Williams (2011.08.04.0730 CST) --
SW: What you are saying is that you have a selection of goods that have a
list of properties which and each property has a satisfaction value.
For example, the product 'Ice Cream' satisfies 1) hunger X by amount,
2) the desire to socialize Y amount * the number of friend who might
select ice Cream, 3) the desire to stay busy by z amount, etc.
BP: Not quite, but yes. Each of these should be expressed as the numerical value of the present amount of a variable: amount of ice cream, number of friends, degree of busy-ness, and so on, with some suitable measure of each. Then there is a reference level for each amount: how much ice cream, how many friends, how busy one is aiming for. The level required for satisfaction is not in the perception, but is specified by the reference signal. The amount of ice cream that satisfies one person'e reference for ice cream might be too much for another person and not enough for a third. So it can't be the ice cream that "has" the value -- or as economists say, the "utility."
SW: To get the item, you either have it come to you or you go to it.
BP: Yes. Mainly, however, you have to pay for it as you transfer it from the supplier's inventory to yours and transfer the price from your bank account (or mattress) to the supplier's.
>BP earlier: I'm not trying to make things more difficult, just trying to >show that what we need to give the model are properties, not behaviors. The >behaviors will emerge from the properties.
SW: OK. You stay focused on making the model receive input, make
decisions, and make output. I will stay focused on the ones and
zeros. My goal is to build an App that you can start and stop and
configure and play with. Also, my goal is to have an app that will
predict the flow of money/goods and services through a society given
certain initial conditions.
BP: This is where you have to adjust the parameters of the model so it behaves as nearly like the real system as possible. First, when we get far enough to make this possible, the model has to match the real flows as observed over some period in the past, and from that make a correct pseudo-prediction of data from just after that period ("pseudo" because we actually know the result already but are pretending we don't). You get the initial conditions from the last verified state of the economy before the model is started up.
SW: For the example above, it may turn out that going to a 'store' or
location versus having it come to you, is all that is needed for the
model. The Store itself can be modeled as fulfilling a need and you
do not need to model the actual products. If that is the case, then
you do not need to model 'picking up and item'. I guess we just model
the results of a behavior. Hunger level is at x, socialization need
is at Y, money level is at Z, etc. for this controller and money level
and goods(if appropriate) reset in the 'providing' controller.
BP: That will work better if you express the states of the items in terms of error signals: hunger error at X, socialization error at Y, money error at Z, and ditto for the goods. The error will simply produce an output of money (or for inputing money, an output of labor time) that affects the flow of money and goods. The object is to achieve as close to zero error as possible. The aggregate effect will be the sum of all these effects over all the consumers, each with some distribution of preferences and reference levels. The control systems themselves, without further direction, will seek the state of minimum achievable overall error.
We DO need to model the actual products, at least by category like "food", and the actual exchanges of money for them. That's how you get the model to produce behavior. We don't need to model how the consumer and the goods get together unless there's some unusual cost in goods and services involved, like driving 200 miles to get the product one bought. Then we just add that to the price.
You have to think quantitatively, not just qualitatively. A store doesn't just "fulfill a need" or not; you pay a certain amount of the money you have to a store (or more generally, a producer) to obtain some of the good you need, and keep paying more until you have as much as you want, or until a conflict arises with spending money on something else you need just as much (this is where the phenomena of supply and demand and price theory get into the act).
Where you get the good doesn't matter in a simple model. It will matter when there is more than one source and each store has different prices.
Goods are used up or depreciate at a certain rate, depleting the consumer's inventory, so they have to be replenished at that same rate by spending money to keep the inventory of each good at the desired level (for services, it's the frequency of use that has to be maintained since there is no inventory. Or maybe it's something like the rate at which grass and hair grow, or houses get dirty). Likewise, spending money depletes the inventory of money, which must be replaced by wages or capital income to keep the level of reserves at the desired level. If you allow credit in the system, the money inventory can go negative. Otherwise, the spending stops when the money is gone.
The properties of the economy are determined in part by the loop gains and reference levels for each good that are set by each consumer, or rather by all of them together.
>BP earlier: I suggest that we tackle something really simple and see how it >goes. That will make a lot of things clearer.
SW: Excellent. I am not ready to try that for another few weeks maybe.
But I can watch what you are doing. Here are three framework tasks
that I see remaining. I am working on #1. I am getting the simple
and unconditional framework stuff nailed down.
BP: Hey, I'm not doing it, you are. I'm the one driving from the back seat. We need your framework tasks in any case, but that's just getting ready to start the modeling. Let's set up one control system for each inventory of goods and one for the money reserves, with arbitrary reference levels and gains that we can play with. Then we model the way money is used to adjust the goods inventories upward and the way use or depreciation adjusts them downward, with the complementary effects, plus the effects of income, on the money inventories. These control systems make up our model of one consumer.
I'll gladly supply anything needed to overcome the start of the learning curve -- just say what you're baffled about, if anything, and I'll try to fix it. I'll turn the helm over to you at any time you wish (remembering that the pilot has legal control until the ship gets out of the harbor and you can dump him overboard).
I think you'll very quickly get a nice law of supply and demand out of this (not to mention the Giffen Effect when income is too low). You can change prices and see the effects. Likewise you can change reference levels and loop gains. Much later, these changes will occur through actions by other parts of the model, but for now this model is just a disconnected fragment. The idea is always to have a fragment that runs, with the missing parts replaced by independent variables we can simply set to different values to see what the local effects of remote causes would be. We don't have to wait for the whole model to be finished before we can see how we're doing.
Would you like a simple practice problem to work on just to get your feet wet?
Here's one. A consumer wishes to have Rg amount of goods ("R"eference amount, subcategory "g"oods). The goods inventory already contains N units of goods. The goods cost Cg for each unit. The customer's money inventory stands at M dollars to start with. Write a control system model for bringing N to the value Rg, by spending money from the inventory M. For various initial values of the variables, determine whether the desired amount of goods will be obtained. Don't calculate it yourself; make the model show you the answer.
Hint: M is not allowed to go negative.
Second hint: make the rates of buying and spending be per minute, so only very small amounts are exchanged in one minute. You need B bananas per week, which is B/10080 banana per minute. Setting dt = 0.0001 week, we can calculate the amount of spending on bananas during one iteration of the program which represents one minute of real time.
$ = Cg*B*dt
where $ = dollars spent in one interval of dt minutes.
This will give a smoothed-out picture of something that actually occurs in jumps, but you can always make dt larger if you wish.
Best,
Bill P.