GEEKS! - Let's Write a Y2K Model!

greenspun.com : LUSENET : TimeBomb 2000 (Y2000) : One Thread

Y2K is surrounded by doubts, confusion, and uncertainty. Maybe we can bring a little enlightenment into the looming event by writing a computer model of an abstract manufacturing system. The model would contain probabilistic Y2K disruptions. Basically, what I have in mind is to construct a tree structure where the trunk represents the manufacturer (Main Man) under consideration. The Main Man would manufacture Widgets. The branches of the tree would represent the suppliers to the Main Man. The components of the Widget would not have a specific name, but would be represented by a fractional value. A subcontractor would order components from his/her suppliers, and the subcontractor would assemble ( add the values ) the components into a product ( sum of the component values ). This subcontractor, along with the other subs would pass their products ( values ) along the tree until they all arrive at the Main Man. Unlike most trees, this tree would need to incorporate circular links; A can be a customer of B, and B can be a customer of A. This can be messy.

The modeling process would start with the Main Man issuing a purchase order to all of his/her directs subcontractors. And, the subcontractors would issue purchase orders to all of their subs. Under Y2K, this ordering process would not operate so smoothly. Some of the ordering communications would fail. This could be modeled by having an initial disruption value ( i.e. 1 order out of 875 fails ) which is multiplied by an exponentially decreasing factor. This exponentially decreasing factor would represent repairs made to the communications system. This could be specified by a "repair time constant" which specifies the number of days until the communication failures are reduced to 37% of their initial value.

(comm failures) = (initial failures) * exp( -(1/commTC) * time )

For this model to be developed in a collaborative manner it surely will need to be written in Java. And, for the finished product to be useful, it should be written as an Applet instead of a stand-alone app. I have other ideas about how to develop the model, but I cannot devote more than a couple of hours a day to it. If any of you Geeks are willing to tackle this, then we might be able to finish it in less than a month. I have never worked on a group software project ( "He doesn't work well with others!"), but I suspect that a centralized director would be needed. Are you listening Ed Yourdon!!!? How about it? Is anyone game for peeking into the future?

-- Ken D. (bozogozo@hotmail.com), December 03, 1998

Answers

Ken,

A noble idea, but ... I'm going to be a party-pooper. :-(

Who determines the parameters? The pessimistic will want to skew things their way; the optimistic will prefer to skew things theirs. Who decides which side is correct?

How're we going to test the model against reality in order to have any confidence that it is of any practical utility?

Which corporation is going to volunteer their manufacturing system for such a test? Who will talk them into advancing all their clocks, talk all their suppliers and subcontractors into advancing all of _their_ clocks, and so on? Surely someone in one of those companies will object to the nonzero risk that they will be putting themselves out of business!

Of course it would have to be a *large* manufacturing system for the test to be useful. No little dinky plant.

... and we'd have to run many, many multiple tests in order to have dependable(?) results from a complex situation with many probabilistic variables.

... and we'd have to finish all the modeling and testing in time to distribute the model and persuade folks to use it early enough for their results to be applicable before the Y2K effects occur in real time.

Gee, I really, really wish your idea had a chance in hell of helping for Y2K, Ken ... :-(

OTOH, it's a dandy suggestion for a thesis topic for some bright post-2000 post-graduates! I.e., modeling what went wrong (after the fact). [N.B. I don't expect Y2K to be the end of either civilization or academe.]

AND it might be possible to have a spiffy model ready by 2038 (or whenever-it-is)!

-- No Spam Please (anon@ymous.com), December 03, 1998.


Gee, Nospam, we really don't have to test the model, we just have to develop it, and watch a representative sample of corporations who will test it all on their own live!!

Besides, given the way the numbers work out, we can probably be as optimistic in our number parameters as Infomagic and STILL get an interesting breakdown percentage.

Plus, we can also modify our numbers to see where the tolerance works out to be OK, or FAIL. Though, when you start to talk about multiple iterations and exponential failure rate changes, you start to generate a probability aproaching 1.0........regardless of how you may damp it down.

Chuck

-- Chuck a night driver (rienzoo@en.com), December 03, 1998.


Include those parameters in the input: Be tricky - assigning all the "degree of failure" factors and "time of failure" factors to each variable ( power, water, transportation, finance, welfare, taxes, payrolls, receipts, accounting, and that to do it again for each supplier, and repeat for each customer, that affect even one business.

That's why speculation is so much fun. Theory is harmless and cheap.

But the lab test started this year.

-- Robert A. Cook, P.E. (Kennesaw, GA) (cook.r@csaatl.com), December 03, 1998.


Unfortunately, any realistic model will exhibit "sensitivity to initial conditions", a.k.a. chaotic behaviour. In short, it'll be a complete waste of time, like trying to forecast next year's weather.

The much simpler problem of modelling a national economy under NORMAL circumstances has not been solved; the models exist, but the forecasts they produce seem to be of doubtful validity. Throw in a step discontinuity on just about every parameter, and what you'll get is GIGO (garbage in, garbage out).

(BTW, the econometric modelling programs are there already. If you're keen enough, go ahead and try it. No need to write any code!)

-- Nigel Arnot (nra@maxwell.ph.kcl.ac.uk), December 03, 1998.


Thanks All! NoSpam: The model would be about an abstract system. The model could be run for various sets of parameters. However, it would be more relevant if the parameters were kept in the range of the possible. The goal, as Chuck pointed out, would be to establish under which situations the system would be OK/FAIL. An attempt would be made to correlate the parameters to the real world.

Chuck: The sample formula I used was vague! Rewriting:

(failure prob) = ((nFailures)/(nTries))*exp((-1)*(1/commTC) * time )

After commTC days the failure probability would have dropped from (nFailures/nTries) to a value of 0.37 * (nFailures/nTries). The parameters commTC & (nFailures/nTries) would be inputed into the problem by the user. Gartner, et.al., would have us believe that commTC would be in the range of 3 or 4 days and that (nFailures/ nTries) would be relatively low. GN, on the other hand, believes that (nFailures/nTries) = 1 and commTC is infinite.

Robert: I agree that time is short. Therefore, it is essential to keep the model as simple as possible. If the model proves useful, and time allows, then it can be expanded to become more comprehensive.

Nigel: Modeling with probabalistic parameters absolutely generates unforseen results. This means that the model, for a given set of parmeters, will have to be run MANY times. Since time is short, the results will have to be averaged rather than seeking some kind of deviation. In the weather analogy, as more hurricanes are observed the NOAA models become better. I agree that GIGO, but currently we have Nothing but rumor, thin facts, speculation, and lies to go on. Wouldn't it be better to have some real numbers to work with? Besides, this project could be a hoot!

All: When I stated in the original post that widget componets would be represented by a value only I was wrong! Allowances must be made for dual-sourcing, and this means that each component type will need to have some kind of name or tag or part number. I will be spending the upcoming weekend writing a proposed spec for the model. It really would be helpful if others did the same; that way, we could synergistically produce a more viable result. I don't know about you all, but I have found that it really is useful to have a written spec or set of goals before slinging the first LOC.

Ed Yourdon: Once the coding starts, where do we go? How do we handle a project like this? I certainly don't want to eat up your forum space, but we will need a site where source code can be observed by all. Can it all be done via e-mail?

-- Ken D. (bozogozo@hotmail.com), December 03, 1998.



I've already developed such a Java program and it works wonderfully. Well, it's not exactly to the specifications that you mention but nevertheless, it's close.....

Apart from the math stuff and projections stuff etc. I suppose it doesn't work on quite as many levels as you need but I can always modify it...........Oh yeah, it's not multi-threaded either....

Well, in all honesty, there's a lot of work still to be done......at the moment, all it actually does is print "Hello, World!" on the screen.........

-- Craig (craig@ccinet.ab.ca), December 03, 1998.


Craig

You'll know it's working right when it prints "Goodbye World"

-- Uncle Deedah (oncebitten@twiceshy.com), December 03, 1998.


Unk - "Goodbye: Parts of the World, Part of the Time, - You Guess which Parts, What Times...."

Which is what he's trying to model in the first place.

-- Robert A. Cook, P.E. (Kennesaw, GA) (cook.r@csaatl.com), December 03, 1998.


Unk and Robert........You've inspired me to modify the program!!

How 'bout I have a "Hello World" and a "Goodbye World" strings. I use a random number generator to give me either a 0 or a 1. If it comes up as 1, the screen prints the Hello World. If it comes up as a 0, the screen prints Goodbye World.

Much easier to program than the complex model that has been suggested, probably as reliable, and by God, I have the technology to produce such an animal. Hey, we could even expand it by giving the user a pull-down menu to choose what part of the globe they are enquiring about and then generate a result for any geographical area they are interested in,

For Example:

USA "Hello World" Russia "Goodbye World" China "Goodbye World" Alberta "Hello World" Luton "Goodbye World" Georgia "Hello World" Boise "Error: Please choose another location. Nobody gives a sh*t about Boise"

-- Craig (craig@ccinet.ab.ca), December 03, 1998.


All: I have been thinking about the model this afternoon, and it might be useful to share a few thoughts. The tree structure might look roughly like this:

-------Sub1,1 | ------Sub2,1 | | Main Man -- ------Sub1,2 ----- | | | -------Sub2,2 ------Sub1,3 | ... -------Sub2,(M-1)-------Sub3,1 | | -------Sub1,N ------ | -------Sub2,M

The first subscript of the Subs represents its "tier". In this example there are 3 tiers. The second subscript delineates the Subs within a tier. I did not try to show crosslinking of the tree; such a link would exist, for example, if Sub2,M was a customer of Sub1,1. While tinkering with the problem it occurred to me that it should be possible to quantify the size of the Main Man by the number of first tier subcontractors. General Motors would have about 100,000 first tier elements while a small tool & die shop might have 30. Although I have been talking about subcontractors this classification also should include any supplier of critical materials.

Another thing that I have come up with is statistical function which should prove useful. If any of you have done any modeling then you know that unbounded functions can lead to all kinds of grief. Suppose that the user inputs a value, j, and wants it to be distributed on the range j-k and j+k. This can be accomplished by using the function

J = j + S * k * ((exp(R) - 1) / e)

where R is a random number on the range of 0.0 to 1.0. S is the sign of the second term, and it randomly takes on the value of (-1) or (+ 1). The good thing about this function is that J never can have values outside of j-k and j+k.

-- Ken D. (bozogozo@hotmail.com), December 03, 1998.



OOPS!! Sorry! The tree structure does not look like the above! Oh well, hopefully the written description suffices.

-- Ken D. (bozogozo@hotmail.com), December 03, 1998.

Oops! Again! The above formula was copied from wrong sheet of paper. Sorry! I have been working on the project, and is my usual, I started coding without writing the spec. Is coming along nicely though. If any of you want copies of the Java source code as the project proceeds then send me your email address and I'll send it to you. I actually think this thing may work!

-- Ken D. (bozogozo@hotmail.com), December 07, 1998.

Sorry to see someone dropped the ball on this thread.

I'm a firm believer in "A problem precisely defined, is already partially solved"

-- Whitney (Y2KWhit@aol.com), December 20, 1998.


actually, I would like to take one small part of the puzzle, maybe one key item on the shelves of a supermarket, and trace that back to its producer. Stay high level, and just worry about amount of items in stock, frequency of purchase, strategy for reordering, etc [at each level up the chain].

Then go for it. Right now, I have a very simple model with producer/ warehouse 1, intermediate warehouse two, grocery, and consumer. It demonstrates some basic behaviors, like the need to have larger amounts of stock when lag time between order placed and order received goes up.

But I don't know the details at all. Any of you know people in the food biz that I can talk to/email?

Thanks.

-- Rick Stahlhut

-- Rick Stahlhut (stahlhut@net-link.net), March 01, 1999.


There's a Publix "regional office" up the street - I'll see what I can find out there tomorrow: So check these "simple" distribution assumptions, and give me some reasonable feedback: going backwards from me: 1 automatic withdrawal, my bank, ??, their bank, their ???, their store, their register, 6 products, their inventory control, their shelves, their refrigerator, 1 store, 1 recepit, 1 bill, 1 truck, 1 warehouse, 3 receipts, 3 bills, 3 trucks, 3 distributors, 3 fork lift loads, 3 warehouses, 3 receipts, 3 bills, 3 trucks, 3 forklift loads, 3 warehouses, 3 food processors, 3 bills, 3 receipts, 3 storage centers, 3 trains, 3 orders, 3 bills of lading, 3 receipts, 3 shipping fees, 3 grain elevators, 3 receipts, 3 bills, 3 trucks, 3 receipts, 3 bills, 3 farms, 3 tractors and fertilizers and water and gas and ...., 3 seeds.

-- Robert A. Cook, P.E. (Kennesaw, GA) (cook.r@csaatl.com), March 01, 1999.


Moderation questions? read the FAQ