3.3 - New Concepts

A Resource is any kind of item which moves from one part of the system to another. It includes materials, energy, information, human labor, and hardware. From the conservation of flows rule above we can apply a simple accounting method to all the types of resources within the system. The method is that the sum of all resource inputs and outputs within the system must be zero. If a ton of raw material is an input to a processing unit, then a ton of raw material must be supplied from somewhere else to balance the total. That could be a mining unit, or as an input from outside the factory. Either way, raw materials don't appear from nothing, they need a source. The convention is inputs are negative values (you are consuming a resource), and outputs are positive values (you are supplying a resource). By tracking all the resources and making sure the quantities balance, you can ensure the design is complete. Functionally, this accounting method is similar to the double-entry method of bookkeeping, where debits and credits must balance. The main difference is applying it to every type of resource, and not just money.

Conventional engineering and office software will be used, but we have identified some new ones that likely need custom development. The following items should be designed to work together:

Process Compiler

The purpose of a factory is to produce some kind of desired outputs. This is accomplished by a series of steps or operations, called a Process, which transforms the inputs, like raw materials and energy, into the outputs. A set of design drawings which only describe the physical shapes of the parts do not tell you how to make it. More particularly, for an automated factory, it does not include the detailed operations that each machine needs to do. More complete design files would include information on the materials to use, assembly instructions, and so forth. A Process Compiler would take that kind of information and convert them to detailed operations for a given factory. This is similar to a programming language compiler that converts higher level statements in a given language to machine language.

We are not aware of such a process compiler, but it would be very useful for a general purpose automated factory, especially one that grows and changes constantly. Instead of having to plan a manufacturing process for each new product, or change it each time the factory is modified, that task can be automated. To make such a compiler, you would need a collection of low level operations which the factory can perform individually. They would be put in order by the compiler, based on the higher level design, and scheduled for execution. Inventory supply levels will vary, and other scheduled items may use up the supplies. The compiler would therefore need to check these levels, and add steps to increase inventory if needed. So a given production order might cascade through the factory or generate purchase orders for items that cannot be made internally.

Production planning is not an entirely new topic. Some existing methods from Industrial and Manufacturing Engineering that may be relevant include Process Specification Language, and various manufacturing planning methods and software.

Tool Drivers

Hardware drivers for an operating system are not a new idea, but suitable control software for the factory elements will be needed. This will require custom drivers if the elements are treated as peripherals, or local software at each element if they are treated as network nodes.

Augmented Reality Simulation

Mistakes in building and operating the factory would be expensive and wasteful. A good simulation tool can help avoid such problems. The type here would overlay virtual factory elements over real life views. This allows observing new and modified factory layouts and operations before doing them in real life. It can also be used for training operators. It should be able to use outputs from the Computer-Aided design/engineering/manufacturing software group, and outputs of the process compiler software. Preferably it would use stereo 3D displays with force feedback for realism

Remote Operations Software

This would use the same core as the augmented reality simulations, except it interfaces with real hardware for remote operations. It would be used to control robots, and other factory equipment in an immersive fashion, when remote control is needed. Local operators in the factory, and automated operation are alternatives to this method.

By its nature, a Seed Factory will continuously evolve from a starter set to a larger and more complex production capacity. It would be difficult to design the entire evolution of such a factory and all its parts as a single task. This is especially true if the factory growth is open-ended. Conventional factory design includes breaking it down into component machines and processes. These are easier to design individually, but the factory layout is normally considered at a single point in time. For an evolving system, like the ones in this book, we also introduce the idea breaking the design into smaller steps by size, called Scaling, and by complexity, called Phases. Scaling steps represent increase in output capacity by duplicating existing equipment or adding larger versions of the equipment. Phases represent steps which add new types of equipment or new types of products. Scaling and phases do not have to be entirely separate. A growth stage of the factory can include some of each. The important idea is breaking up the evolution of the factory in the time dimension.

The initial design work can then be reduced to the original sizes and equipment list in the starter set. The new equipment and modifications needed for each of the later growth steps we can call Expansion Sets. Since these growth steps are smaller, they are simpler to design individually. They can build on experience developed in the earlier steps, plus new technology developed in parallel with using the existing factory. From an economic standpoint, deferring some of the design work till later allows making an earlier return on the first part of the work.

Division of the design into smaller chunks is a mental construct to simplify what is actually a continuous growth process. There is no requirement that the Seed Factory starter set or later expansion sets be installed all at once. The design may call for, say, installing 8 automated machines in the starter set. But these machines can be added one by one to an original conventional workshop, and the parts for these machines made incrementally. The capability to produce things would then grow as each new machine gets completed. Thus scaling and phase steps define an interval over which the capacity grows by a set amount. Within the interval, there can be many smaller increments.

Growth Sequence

When trying to determine what should be part of the starter set vs expansion sets, we can identify guidelines, but the exact sequence will be affected by the requirements and circumstances of the particular project. Early elements should be Flexible, meaning they can produce a wide range of outputs and tasks, especially if custom attachments are added to the basic element. This not only enables making diverse items for expanding the factory, but widens the market for selling items to pay for things it cannot yet make. Early elements should also provide Leverage, in terms of the percentage of mass or cost of later items they can contribute to making. Preferably they should function in small and simple versions, which reduces initial cost, and in turn number of parts and materials they themselves require to reproduce. Later stages of factory growth can employ larger and more optimized units with more features.

Expansion Ratios

We can describe various ratios of final set to starter set as Expansion Ratios. The simplest of these are ratios of physical size. The final factory can be measured in mass or floor area relative to the starter factory. Measures of complexity can count the number of processes or equipment types in the final vs starter sets, or look at the relative data for their design in terms of computer files, number of drawings, or number of production steps to build the equipment.

In computer science, we have the idea of a Universal Turing Machine, which can compute any computable sequence. In the field of nanotechnology, a Universal Molecular Assembler could in theory assembly any physical object by individually positioning reactive molecules. We introduce the idea of a Universal Factory, which can produce any known kind of product, when given suitable design files as input. As an existence proof, the total industrial capacity on Earth produces all known products, including itself, and is thus a Universal Factory. It is just a very large one which we think of as "a civilization" rather than "a factory". The world's industrial capacity was built entirely from raw materials and energy starting from nothing but human labor. Thus humans can be thought of as Universal factories, because we made all the artifacts of our civilization including all the tools and machines. It just takes a very long time for humans to go from nothing to being able to produce all known products.

Relation to Seed Factories

We can now consider the question of universality in relation Seed Factories. If we allow sufficient time to build all the necessary equipment, can a Seed Factory grow to become universal, able to make any product? Can we prove a given starter set has or does not have that capability? What are the minimum necessary processes or equipment to reach universality?

An approach to answering these questions is to recognize that every known product is made of a finite number of parts, each of which are made by a finite series of production steps, using a finite set of processes. If we list every known process, we can then identify the equipment needed to carry out each process. This set of equipment is a subset of all possible products. We can then categorize the parts of each equipment item by the processes needed to make that part. That second list of processes is likely to be a subset of all known processes. In turn we look at the parts for the equipment for this lesser subset, and again make a list of processes. This cycle is repeated until the list of processes and equipment is no longer getting smaller. We have now defined a set which can make all its own equipment to perform all the processes to make itself, plus all other equipment and process types, and is thus a universal factory.

This universal factory can then be carefully examined to see if design changes or material substitution can further simplify the set. Ultimately you can reach an optimized set which has the fewest number of processes and types of equipment. Such a set may not be the fastest growing, however. A different set of starter machines, which may not be universal at first, and take inputs of added parts and equipment, may grow more quickly to a desired capacity.