Computational origami architectures are well-suited for some applications. However, programming a fine-grained, low-interconnect origami computer is a tedious task to do by hand. To solve this problem a compiler was introduced to automate the process of placing and routing logic elements in a two-dimensional alternate-slant origami array. Since the problem of optimally routing an origami array is probably NP-complete, and the compiler should run in polynomial time, the resultant origami array is usually suboptimal. A partial solution to this problem was presented in the form of iterative optimizations. Simulated annealing was used to selectively apply mutations to the array. This resulted in a decrease in final array size by more than 50%in some applications.
The compiler, combined with iterative optimization, provides a viable environment for developing programs for an origami array. The resultant arrays are still not optimal, but are sufficient for experimental purposes. Better optimization methods are discussed in Chapter 5. With these improvements to the optimization method, the compiled array should approach the quality that can be achieved by hand routing.