# Seed Factories/New Concepts

In Chapter 3.2 we described using existing technical concepts in self-improving systems. Here we present some newer ideas and features that are not yet commonly used, or still need more development. These include resource accounting, new or improved software tools, paths for project evolution, and the idea of a universal factory.

### 1.0 - Resource Accounting

Resources are any kind of useful items which enters as an input to a system, or to internal functions within a system. Products are useful or desirable items that leave a system as outputs to be used elsewhere. Resources can move from one part of a system to another or between systems without being transformed, but this often requires a function or system to do the moving. For example, a design file for a 3D printer may need moving from the designer to the printer. The file itself doesn't change during the move, but a cable or USB drive is needed to do the moving.
Wastes are unusable or unwanted outputs from a given system or function. A waste output from the standpoint of one system can, and ideally should, become a resource for another. For example metal chips produced when machining a part are a waste output of the machining process, but can be recycled as scrap and become an input for making new metal stock. Wastes that can't be used for anything by anyone should be minimized by design, and at least contained and disposed of properly so they don't become a pollutant or hazard. Also racking where they end up allows them to be used in the future if improved technology makes that possible.
Natural Resources are those that already exist without human actions. Examples are land, mineral ores, and renewable energy sources like sunlight and wind. Another category is people and their available Human Resources, such as physical labor, skills, and experience. A third category is items made by or under the direction of people, and available to be used in systems. Examples are stored knowledge, supplies, buildings, tools and machines. Since system boundaries are mental constructs, items like land, intellectual property, or financial assets can enter or leave a system by change of ownership and system boundary rather than physical movement.
From the conservation of flows principle in Chapter 3.2 we can apply simple accounting rules to all the types of resources entering, within, or leaving a system. These are:
* (1) The net sum of all resource inputs to and outputs from any part of a system, or a system as a whole, must equal the internal change in that part.
* (2) The totals at the start and end points of a resource flow entering or leaving a systems, or between its parts, must be equal.
For example, 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. A given flow may combine several starting points or divide into several end points, but the totals must match.
The mathematical convention is inputs to the system as a whole, or individual parts, are positive values (you are supplying a resource), and outputs are negative values (you are delivering or removing an item). By tracking all the resources and making sure the quantities balance, you can ensure the design is complete. In particular, all outputs, including waste products, must be accounted for to balance the flows.
Wastes don't conveniently vanish into nothing. By accounting for them we can optimize the design to minimize them, use them as inputs to other processes, or make sure they are properly disposed of. Additionally, the effort to bring items in or send them out, like transportation, also have to be accounted for. Functionally this accounting method is similar to the double-entry method of bookkeeping, where debits and credits must balance. The main differences are (1) applying it to every type of resource, not just money, and (2) intangible or subjective items used to balance accounting statements, like Goodwill, are not allowed.
Some aspects of resource accounting have previously been used. Examples are Carbon Budgets and Embodied Energy for ecological impacts, and national/world energy and mining statistics for tracking what is being used and what is available. But as far as we know it hasn't been applied in a comprehensive way to design new systems.

### 2.0 - Software Tools

A great amount of Engineering and Productivity software has been developed since 1980, and we expect to use them to design and manage complex self-improving systems. We have identified some new software items that may be useful, and likely need custom development. Their use in many self-improving systems and across the general economy should justify the effort to develop them. The following items should ideally be designed to work together and to integrate with existing software.
       Process Compiler
The purpose of a production system, like a factory or distributed network, is to make some amount of desired outputs. This is accomplished by individual steps or operations, like Manufacturing Processes or Unit Operations. The steps are combined into a Process Flow. The flow as a whole transforms the inputs, like raw materials and energy, into the outputs, like finished products and wastes.
A set of design drawings which only describe the physical shape of the parts do not tell you how to make them. For an automated factory, it also does not include the detailed operations that each machine needs to do. A more complete production data set would include this information, plus what materials to use, assembly instructions, and so forth. A constantly changing and improving production system would frequently need to change the data and process flows. This would be very labor-intensive for people to do each time.
The idea of a Process Compiler is to take that kind of production data, and current information about the available production equipment, and convert them to detailed operations for the current system and the people and machines who do the work. This is similar to a software compiler that converts higher level statements in a given programming language to the machine language a computer actually executes.
We are not aware of such a production 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 largely automated. Just like with software, automated compilation may not produce an ideal result. Some manual coding and optimization may still be needed for particular processes. But to the extent an automated process compiler works, it would be an efficiency improvement.
To make such a compiler, you would need to identify a collection of operating steps which the factory can perform individually. They would be put in order by the compiler, based on the list of parts and assembly steps needed for the item, 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. If a given part of the factory is over-used and becomes a bottleneck, the scheduler can also signal a need for expansion. The decision to expand may be manual by a system operator, or even automated, where the scheduler inserts an order for new factory equipment into the flow.
Production Planning is not a new subject. Some existing methods from industrial and manufacturing Engineering will be relevant, such as manufacturing planning methods and software. Of particular interest is the Process Specification Language, developed by the US National Institute of Standards and Technology since the early 2000's. More work is needed to see what existing methods, software, and languages can be used for the process compiler idea.
       Smart Tool Drivers
Hardware drivers for an operating system are not a new idea, but suitable control software for new smart factory elements will be needed. Smart elements use a combination of automation, robotics, software and artificial intelligence to operate. 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 with their own processing units. Recent work related to smart tools is being done under the name Internet of Things (IoT), as well as the individual fields of automation, robotics, software. and AI.
       Augmented Reality Simulation
Unlike editing software, correcting mistakes in building and operating a factory or other production system would be relatively expensive and wasteful. Good simulation tools can help avoid such problems. Augmented Reality combines real world views with computer-generated elements. An example would be a 3D headset that overlays simulated future factory elements over real life views of the existing factory. This allows observing new and modified factory layouts and operations before doing them in real life. Ideally the display can be used both while designing the new items, and while walking around the actual factory space. It can also be used for training and during operation.
The augmented reality equipment should be able to use data from Product Lifecycle Management (PLM) and other groups of Computer-Aided Technologies. This would include outputs from the process compiler type software identified above. Preferably it would use stereo 3D displays with force feedback for realism. As of 2022, a number of portable headsets are available. Wireless communication allows moving around a large space like a factory without having to carry the full computing capacity and power supply. Augmented reality can be accomplished by modern mobile phones, but separate inputs to each eye and tactile feedback gloves provides more realistic interaction. Wearable units can be augmented by cameras, sensors, and displays distributed across a production or design space.
       Remote Operations Software
This would use similar user equipment as augmented reality simulation, except it interfaces with real hardware and sensors for remote operations. It would be used to control robots and other smart tools in an immersive fashion, when remote control is desirable. Local operators in a production space or automated self-operation are alternatives to remote control. Which one is preferred will depend on the detailed situation. Remote operations have the most advantage when the remote environment is difficult to reach, conditions are hostile, or operations are hazardous. They can also be an advantage when personal presence is only needed intermittently. It then saves the time and travel cost of bringing people to a location and then returning.
A lot of people's time and money are consumed in commuting to and from daily jobs. The COVID-19 pandemic prompted working remotely from home out of necessity. It demonstrated that modern electronics is good enough to work remotely, at least for office-type work. Remote operations software would extend this to physical tasks like production. There are large potential savings in costs, people's time, and energy use if it can be implemented.
Some aspects of remote operations are already in use. It is quite common to control computers in a data center remotely, or use one personal computer from another with the Windows Remote Desktop function. Telepresence provides visual images to and from a sender, and Telerobotics is concerned with controlling robots from a distance. The latter has often been used for spacecraft, military, and undersea operatioins, where the environments are particularly hostile or remote. It is not yet commonly used in industrial settings or at costs suitable for individuals. Radio-controlled drones with cameras are affordable, but are mostly used in line-of-sight rather than at long distance through networks. So there is room for improvement in the equipment, software, costs, and integrating remote operation into complete systems.

### 3.0 - System Evolution

The 1980 NASA AASM study described a seed factory as a complete system delivered as a unit to the Moon, where it proceeded to copy itself multiple times. Such a complete design is very complex and difficult to do, and unnecessary even assuming 1980-level transportation to the Moon. If you can deliver a whole factory, you can also deliver pieces of it incrementally, and supply parts and materials for items it cannot yet make afterwards.
Rather than an "all-at-once" design that doesn't change, a key feature of the self-improving systems we describe in these books is that they can evolve in a number of ways besides making direct copies of their own equipment. Starting smaller and simpler reduces the cost and design effort to get started, allows cost-effective import of items as needed, and gains experience to make further improvements to the systems as they evolve. Since we have adopted it as a core idea, it is worth describing the ways a system can change over time, and how to organize them.
       Scaling and Phases
By its nature, a self-improving production system will continuously evolve from a starter set to a larger and more capable one by a repeated process, where each addition or upgrade is used to help make the next one. It would be difficult to design the entire evolution of such a system and all its elements as a single project. This is especially true if the internal changes are open-ended, and the desired products and outputs can change too.
Conventional factory design includes breaking it down into individual machines and processes. These are easier to design for individually. The factory layout is traditionally optimized for a given set of products and quantities, without considering future changes. In our approach, change is assumed and expected, and planned for from the start to make it easier.
One way to do this is to break the design effort, and making the changes afterwards, into smaller steps by Scaling equipment parameters, and in time and locations with Phases. Scaling steps can increase output by duplicating existing equipment or adding larger versions of the equipment. Scaling can also go to smaller sizes for finer or more precise work, or to higher quality or more durable equipment.
A phase is a group of changes that make a meaningful step in system evolution. This includes adding new types of equipment, new products and production flows, and new construction or locations. Scaling is generally at the equipment or process level, while phases encompass multiple changes or improvements. What they have in common is breaking up the total system evolution into smaller and easier to design pieces.
The initial design work can then be reduced to the original equipment list and their specifications, and the initial set of processes and instructions for a Starter Set. Sets of new equipment and modifications for later stages of evolution we can call Expansion Sets. The design of expansion sets can build on experience gained from prior steps, directed research and development for improvements, and general progress in knowledge and technology. From an economic standpoint, deferring some of the design work until later allows an earlier return on the first part of the work. The system can start operating and making products to use or sell sooner.
Division of the design and installation into smaller chunks is a mental construct to simplify what is actually a continuous process. There is no requirement that a seed factory-type starter set, or later expansion sets, need to be installed all at once. The design may call for, say, installing a total of eight 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. The scaling and phase steps define an interval over which the changes happen. Within the interval, there can be many smaller increments.
       Starter Sets and Growth Sequences
When trying to determine what should be in a starter set, and later expansion sets, we can identify guidelines. But the best contents and sequence will be affected by the goals and circumstances of a particular project.
Early elements should be Flexible, meaning they can make do a variety of tasks, especially if custom attachments are added to the basic element. A simple example is a portable electric drill. You can use a multitude of drill and driver bits, and other accessories, as needed. But a portable drill can also be mounted in a vertical frame to use as a more accurate drill press, or a horizontal frame to power a small lathe. It is not ideal for all these uses, but if you have a small budget it is enough to get started.
Power Multi Tools and the Shopsmith brand of multipurpose tools are commercial examples that are designed for flexibility, where one power source can be used for multiple tasks. They save on cost and physical space by sharing components. The drawbacks are they can only do one task at a time, you need to change setups between tasks, and they may not perform as well as specialized equipment.
Flexibility can allow making diverse items for self-improvement, and widen the market for sales to pay for items that's can't be made internally. Early elements should also provide Leverage, in terms of the percentage of mass or cost of later items they can contribute to making. For example, houses in the US are mostly made from wood, stone, and metal-derived products. So equipment that can work with these materials should have high leverage for construction.
It is preferable that early equipment can function in small and simple versions, which reduces initial cost, and in turn the number of parts and materials they themselves require to copy them. Later stages of evolution can employ larger and more optimized units with more features. Later versions of starter and expansion sets, to be used after the first sets and locations are installed, can take advantage of the outputs of the earlier ones to supply parts and materials. They can also take advantage of operating experience from the earlier ones.
We expect multiple Generations of designs to evolve over time. Both experience and local conditions at new locations will likely drive the growth sequence and contents of starter and expansion sets of equipment. A single standardized growth sequence and equipment list is not likely to be the right answer for all times and places. Instead, a Design Catalog of sorts can evolve, from which particular items are selected for a location or project. This is similar to how construction equipment is selected from a portfolio of existing types, as needed for a particular building project.

### 4.0 - Universal Factory

In computer science, we have the idea of a Universal Turing Machine, which can process any computable sequence. In the field of Nanotechnology, a Universal Molecular Assembler could in theory assemble 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 having made itself, and so is 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. So people as a group can also be thought of as universal factories, because we made all the artifacts of our civilization including all the tools and machines. It just took a very long time and a lot of people to go from nothing to being able to produce all known products.
We can consider the idea of universality in relation to self-improving systems. If we allow sufficient time to build all the necessary equipment, can a starter set and some number of expansion sets 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? How large and complex does such a set need to be relative to civilization as a whole?
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 materials and processes. If we list every known process, we can then identify the equipment needed to carry each of them out. This set of equipment is a subset of all possible products. We can then categorize the parts for 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 the equipment needed to perform all the processes to make itself, plus all other equipment and process types. It is therefore 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.
A different approach is to minimize cost by supplying knowledge and information rather than equipment. The "starter set" then consists of tutorials, design files, and other data. Modern technology allows storing and delivering a lot of such data at very low cost. A group of people then follow instructions in this data, and start building up a production capacity with whatever funds and resources they have available.
The idea of universal factories is very new, and more work is needed to understand it and how to apply it. The idea of universal Turing machines has proven very useful in computer science. We think it is worth exploring universality in production on the chance it proves equally useful.