Diigo Links

Wednesday, March 01, 2006

Do you leave work every day with a smile on your face?

It's been a twisty road getting back into manufacturing. In the mid-90's I took a few courses in manufacturing through work. I learned a bit about JIT, MRP, MRPII, and other acronyms popular in manufacturing. I was just starting to get really into the whole field when, for accidental reasons, I shifted to IT. I'm back. I'm getting stuck right back into the same ideas of efficiency and optimization that spun my propeller last time I touched this subject. But now I'm a lot further up the tree. Instead of pushing boxes in a warehouse I've got half a world of warehouses behind my screen. The shunt into IT was not a complete waste. In fact, it's a key tool I needed to learn to get where I am.

So, what do i do now? I schedule jobs. For now that's about it. By "jobs" I mean computer programs that manipulate data in (huge) databases. By "manipulate data" I mean; extract lists, correlate tables, update, move, copy, delete data. I don't have much to do with actually building these jobs, I just schedule them (when they run and what order). See list below for some examples of what the jobs do.

By "schedule" I mean putting the jobs in a sequence so that they get work done in a proper order (i.e. you wouldn't want to commit stock for tomorrow's deliveries before you take into account how much stock left the building today). Scheduling also takes into account the actual computer processor we're using to crunch the numbers and the databases used to store the data. We try to make sure we don't overload the processors or the databases (more than one program asking for the same data at the same time can lock things up).

Here's a list of the types of jobs that run:

  • calculate anticipated stock for receiver
  • housekeeping for domestic Stock Units: data consistancy check
  • Delete Past Due orders (to prepare for a refreshed list)
  • Delete all previous alerts ( to prepare for today's)
  • Establish daily planning Time fence
  • Delete today's received product from tomorrows order requirements.
  • Re-calculate the needed stock again from the Distribution Centers up to the receiving ports
  • Weekly Release Demand Planning information for durable products
  • Delete forecast in preparation for next forcast generation
  • Run Heuristic job for long term 52 week planning (fill the 52 week bucket for today)

  • Roll daily Time Fence for Cold Products
  • Delete forecast in preparation for next forcast generation (for cold products)
  • Cold Daily Delete forecast in FORECAST horizon
  • Cold delete short term deployment
  • Cold Daily Product movements
  • Cold heuristic short term planning job

  • Convert Planned Orders to Process Orders
  • Run 30 DAYS Distribution Requirements Planning program
  • Run 52 WEEK Distribution Requirements Planning program

  • take a Snapshot of stock levels
  • take a Snapshot of current forecast
  • take a Snapshot of actual sales

  • Run Data Consistancy Check accross databases
  • Initalize previous week in the planning with Minimum and Maximum stock cover

  • Create Demand Planning Box: Daily Release of Demand Planning results for Cold products to Supply Network Planning
  • Convert Planned Order to Process Orders
  • Calculate safety stock levels needed.
  • etc.

As I mentioned in a previous post, I'm working with the SAP module APO (Advanced Planner and Optimizer). That's why most of the jobs listed above have something to do with planning and forcasting. The magic jobs above are the ones that have "heuristic" in the description. Heuristics is a brute force way of solving a difficult problem. In our case we let the computer solve all likely solutions to the problem, and select the best. I say this is the magic bit because this is where the computer gets a vaugly human or nominally intelligent result. The rest is just tedious bookkeeping.

Simultaneous with these jobs there would be an equal or greater number of jobs doing a whole host of other things; issuing purchase orders, manufacturing documents, reports, shipping manifests, etc. Some of my jobs are dependant on some of those jobs and visa versa. That's why the scheduling aspect of the position is so important. "The schedule" is very dynamic and complex. Finding the optimum schedule (the shortest run-time with the most accurate result) is what's called an NP-complete problem in the math world (specifically the job shop problem a.k.a. JSP). In regular English we say it's "hard". There are ways of getting computers to solve the problem (such as the heuristic method mentioned above), but at this point we're using an analogue process that combines experience and reckoning (if you can imagine a tiny Laotian man, waist deep in mud, driving an Ox through a rice field with only a willow branch, it's like that).

If you've been following this blog for any time you'll know I'm a fan of complexity, chaos, emergence, all the buzz-word disciplines that evolved from mathemeticians taking the blinders off to intractable problems. You'll also know that I'm almost completely without traditional mathematical education/ability. Why am I always attracted to these areas which I have no practical hope of mastering? I think it has to do with magic (the magic popularly visualized in the 90's by fractals).

Where the calculus, algebra and geometry have been around for hundreds of years, this whole region of problem sets was only revealed after 1936 when Turing developed his theoretical computation model. NP-complete problems weren't even on chalk boards until the early 1970's. NP-complete are one of the many mysterious groups of problems that only reveal structure when looked at in the right way.

The way I see it, if smart people have been unable to solve the problem since 1972, you've got some job security there. Or as the old programmer t-shirt slogan puts it: "If you leave work every day with a smile on your face, you could proabably be replaced by a simple Perl script", or for that matter, Homer Simpson's simple solution, the dipping bird.

However, this sort of job security is a double edged sword. How do I provide value pitted against an intractable problem? Luckily, people are breed apart from computers. We have hunches and reckonings and the entirely too uncommonly used attribute of common sense. I can get by on that if you add some guidance and mix with some book learnin' and patience.

People love intractable problems of computation, but they usually just call them games. A couple other NP-Complete problems are games you'll recognize: minesweeper, chess, Tetris... heck, even very average creative writing is (just) beyond the capacity of (today's) computers. So, until the computers start guessing and writing creatively http://www.elsewhere.org/pomo , I'll be right (and as the current literature has it, when computers start guessing we're basically screwed anyway)

No comments: