DYNAMO III(ID:4632/dyn009)


Dynamo with arrays

"In response to the growing number of models containing sectors repeated several times to represent reality in a more disaggregate manner, an array-handling capability was added to DYNAMO by William A. Shaffer and Mr. Pugh of Pugh-Roberts Associates.  This version, designated DYNAMO III, was designed to be consistent with FORTRAN'S and implemented within the framework of DYNAMO II/F.  Through the vehicle of implicit DO loops, equations involving arrays can occur in any order, retaining DYNAMO'S minimal requirements on the order of model statements."



Related languages
DYNAMO II => DYNAMO III   Evolution of
DYNAMO II/F => DYNAMO III   Incorporated some features of
DYNAMO III => DYNAMO HI/370   Implementation
DYNAMO III => Dynamo III/370   Evolution of
DYNAMO III => Dynamo IV   Evolution of
DYNAMO III => Mini-Dynamo   Port

References:
  • PUGH, Alexander L., III: "DYNAMO II user's manual". Cambridge, Mass.; London: MIT Press 1970. X,73 S. ISBN 0-262-66012-1 view details Extract: PREFACE
    PREFACE

    DYNAMO is a computer program for building and running "continuous" simulation models (models which can be described by a set of differential equations).  It was developed by the Industrial Dynamics Group at the Massachusetts Institute of Technology for simulating dynamic feedback models of business, economic, and social systems, but nothing in its design precludes its use for any continuous system.
    DYNAMO has been designed for the person who is problem-oriented rather than computer-oriented.  It makes available easy-to-use computing facilities so that you can focus your attention on building a useful model, undistracted by complex computer requirements.
    DYNAMO'S requirements with respect to the order in which statements appear are trivial, contributing greatly to the ease of using it.  DYNAMO figures out which variables must be computed first, and will even initialize many variables for you.
    DYNAMO thoroughly checks models for errors before trying to run them.  Run-time errors as well as compiler errors are reported in English rather than by number, so that most of the time you will not need the manual to understand an error message.  You will never be left with just a system "dump" to describe an error.
    The mechanics of running DYNAMO are very simple.  Both tabulated and plotted output can be specified easily.  Even the results of different runs can be compared directly (displayed on a single graph or tabulated listing).  This is especially useful for evaluating a policy or parameter change.
    The DYNAMO language includes time subscripts that enable you to comprehend easily how the calculations are made.  These subscripts describe a very simple integration scheme (rectangular or Euler's method), which is also very efficient when great accuracy is not required.  As you gain confidence that DYNAMO isn't doing anything you don't know about, you will be free to concentrate on designing your model and ignore the computational details.  (For the mathematically-minded, DYNAMO IV offers the option of using a third-order Runge-Kutta integration method.)
    Experienced users should note that DYNAMO offers two facilities to simplify the construction of large models.  User-defined functions, or macros, can be written in standard DYNAMO statements with DYNAMO II, III, and IV.  (FORTRAN, or other language, programs can be linked to DYNAMO models via the External Function Facility.)  DYNAMO III and IV also offer the use of arrays, to simplify the modeling of repeated structures.
    Extract: BRIEF HISTORY OF DYNAMO
    BRIEF HISTORY OF DYNAMO
    The history of DYNAMO begins with a program called SIMPLE (Simulation of Industrial Management Problems with Lots of Equations), written by Richard K. Bennett in the spring of 1958 for the IBM 704 Computer.  SIMPLE contained most of the basic features of DYNAMO, including the plotting routine (written by Edward B. Roberts); but the model specifications had to be stated in a rather primitive form, and very few checks were performed on these specifications.  These shortcomings were corrected by DYNAMO (DYNAmic MOdels), written by Phyllis Fox (Mrs. George Sternlieb) and Alexander L. Pugh, III, and completed in the spring of 1959.  Mr. Roberts
    modified and improved the plotting routine, and Grace Duren and David J. Howard assisted with other phases of the program.
    The program was rewritten the following summer by the same team.  Following this effort the maintenance of DYNAMO became the responsibility of Mr. Pugh.  When M.I.T. replaced the 704 with the 709, DYNAMO was converted to run on the new machine. In 1962, Jay W. Forrester of M.I.T. suggested a relaxation of the requirements on initial values, which was implemented. When C.T.S.S. (Compatible Time Sharing System) became generally available, DYNAMO was modified to operate under it.  This facility made it possible to create, debug, and run a model in a matter of hours, the output returning directly back to the console.
    In 1965 it was decided to rewrite DYNAMO.  Although the input language gave the appearance of actual equations, DYNAMO I was basically a macro expansion program.  Simple algorithms for algebraic translation were now well understood and could be utilized in DYNAMO II to relax the restrictions on equation formulation.  Furthermore, higher-level languages had advanced to the point where they could be used as source languages to simplify the chore of rewriting the compiler. Finally, the third generation of hardware was rapidly replacing the equipment for which DYNAMO was written, and some sort of rewrite would be required before long.
    AED (Algol Extended for Design) was chosen as the source language because it appeared to be one of the two or three languages then in existence having the power to do the job and because both the language and its authors were available at M.I.T.  The choice proved to be wise.  AED did have the necessary power; only about 2 percent of the compiler is written in assembly language.  The availability of AED on both machines greatly simplified the conversion from the 7094 (CTSS) to the. S/360.  (Donald A. Belfer assisted in this conversion.)
    DYNAMO II was designed to accept models written for DYNAMO I with few changes. Most models will run with no changes or perhaps one, although models that contain boxcars now require DYNAMO III. The meaning of the asterisk was changed to multiplication as in most algebraic languages. (Back-to-back parentheses continue to imply multiplication.) Error checking was extensive in DYNAMO I; error recovery has been the object in DYNAMO II. Only a few errors preclude the running of a model.
    In response to the demand for DYNAMO on computers other than the IBM 360-370 computers, Richard Wright and Mr. Pugh of the consulting firm of Pugh-Roberts Associates, Inc., developed a FORTRAN-based version in 1971. DYNAMO II/F translates a model into FORTRAN and supports its execution with the standard DYNAMO functions and output routines. As this version is entirely written in FORTRAN, the only hardware requirement for its installation is a computer that supports a version of FORTRAN relatively close to the full American National Standard.
    Interactive (time sharing) versions of DYNAMO have been popular since the advent of the first CTSS version.  DYNAMO II was first checked out as an interactive version, and the first S/360 DYNAMO operated under CP67/CMS.  In 1971, the interactive version was converted to the RAX operating system by Pugh-Roberts Associates and Boston University, and in 1972 this version was tuned to the TSO system.  An interactive version of DYNAMO II/F was developed in 1972 by Mr. Wright.
    An interactive version of DYNAMO suggests the possibility of interaction during the simulation.  The user might examine the state of the system and decide what action he feels is appropriate.  Such a version of DYNAMO has been developed by Mr. Pugh and is referred to as Gaming DYNAMO, as gaming is one of the obvious uses for such a system.  A game is constructed from all the usual DYNAMO equation types plus one additional type ? Decision.  Decisions are those variables that can be changed during interaction with the game.  The current Gaming DYNAMO was developed by D. Ross Hunter of Pugh-Roberts Associates, Inc. as an extension to DYNAMO/F.
    In response to the growing number of models containing sectors repeated several times to represent reality in a more disaggregate manner, an array-handling capability was added to DYNAMO by William A. Shaffer and Mr. Pugh of Pugh-Roberts Associates.  This version, designated DYNAMO III, was designed to be consistent with FORTRAN'S and implemented within the framework of DYNAMO II/F.  Through the vehicle of implicit DO loops, equations involving arrays can occur in any order, retaining DYNAMO'S minimal requirements on the order of model statements.
    The growing size of DYNAMO III models, in conjunction with the size limitation of IBM's FORTRANs, led Mr. Pugh to develop during 1976 a DYNAMO III compiler, specifically for IBM computers, that will compile huge models rapidly.  This version is referred to as DYNAMO HI/370.  Between 1976 and 1983, Mr. Pugh made numerous improvements to DYNAMO HI/370, most notably, the addition of the PRESERVE and RESUME feature.  In 1983, Mr. Hunter and Todd Sjoblom of Pugh-Roberts Associates, Inc. developed DYNAMO III/F+, to incorporate as many of the DYNAMO HI/370 features as possible in a FORTRAN-based DYNAMO.
    To support schools and colleges that were teaching System Dynamics, but only had access to mini-computers, Dr. Shaffer developed Mini-DYNAMO for Pugh-Roberts Associates, Inc. in 1976.  Unlike earlier DYNAMOs, Mini-DYNAMO interpreted rather than executed the code it generated so that runtime errors, such as division by zero, could be reported in a manner the user could easily understand.  Recently, microcomputers have become readily affordable both by schools and by individuals. To make DYNAMO available on such machines, Jay P. Werb of Pugh-Roberts Associates, Inc., converted Mini-DYNAMO to run on the Apple II computer in 1981. (While the language of Mini-and Micro-DYNAMO are upward compatible with DYNAMO II, III, and IV, the reference manuals for those programs are the Mini-
    DYNAMO user's Guide, William A. Shaffer, 1977, published by Pugh-Roberts Associates, Inc., and User Guide and Reference Manual for Micro-DYNAMO, Pugh-Roberts Associates, Inc., 1982, published by Addison-Wesley.)
    Documenting any computer program has always been tedious. To simplify the mechanical chore of merging variable definitions following the equations where they are used, Mr. Pugh wrote the Documentor in 1960.  Once DYNAMO had been converted to the S/360 he rewrote it in AED.  In 1976, Mr. Hunter rewrote it again and improved it.  This time it was written in FORTRAN so that it could be run on practically any machine supporting DYNAMO.  Mr. Hunter also wrote chapter 7 of this book, the DOCUMENTOR/F user's Manual.
    The early development of DYNAMO was supported financially by the Ford Foundation, International Business Machines, Project MAC at the Massachusetts Institute of Technology, and Humble Oil and Refining Co. Extract: BRIEF HISTORY OF DYNAMO
    BRIEF HISTORY OF DYNAMO
    The history of DYNAMO begins with a program called SIMPLE (Simulation of Industrial Management Problems with Lots of Equations), written by Richard K. Bennett in the spring of 1958 for the IBM 704 Computer.  SIMPLE contained most of the basic features of DYNAMO, including the plotting routine (written by Edward B. Roberts); but the model specifications had to be stated in a rather primitive form, and very few checks were performed on these specifications.  These shortcomings were corrected by DYNAMO (DYNAmic MOdels), written by Phyllis Fox (Mrs. George Sternlieb) and Alexander L. Pugh, III, and completed in the spring of 1959.  Mr. Roberts
    modified and improved the plotting routine, and Grace Duren and David J. Howard assisted with other phases of the program.
    The program was rewritten the following summer by the same team.  Following this effort the maintenance of DYNAMO became the responsibility of Mr. Pugh.  When M.I.T. replaced the 704 with the 709, DYNAMO was converted to run on the new machine. In 1962, Jay W. Forrester of M.I.T. suggested a relaxation of the requirements on initial values, which was implemented. When C.T.S.S. (Compatible Time Sharing System) became generally available, DYNAMO was modified to operate under it.  This facility made it possible to create, debug, and run a model in a matter of hours, the output returning directly back to the console.
    In 1965 it was decided to rewrite DYNAMO.  Although the input language gave the appearance of actual equations, DYNAMO I was basically a macro expansion program.  Simple algorithms for algebraic translation were now well understood and could be utilized in DYNAMO II to relax the restrictions on equation formulation.  Furthermore, higher-level languages had advanced to the point where they could be used as source languages to simplify the chore of rewriting the compiler. Finally, the third generation of hardware was rapidly replacing the equipment for which DYNAMO was written, and some sort of rewrite would be required before long.
    AED (Algol Extended for Design) was chosen as the source language because it appeared to be one of the two or three languages then in existence having the power to do the job and because both the language and its authors were available at M.I.T.  The choice proved to be wise.  AED did have the necessary power; only about 2 percent of the compiler is written in assembly language.  The availability of AED on both machines greatly simplified the conversion from the 7094 (CTSS) to the. S/360.  (Donald A. Belfer assisted in this conversion.)
    DYNAMO II was designed to accept models written for DYNAMO I with few changes. Most models will run with no changes or perhaps one, although models that contain boxcars now require DYNAMO III. The meaning of the asterisk was changed to multiplication as in most algebraic languages. (Back-to-back parentheses continue to imply multiplication.) Error checking was extensive in DYNAMO I; error recovery has been the object in DYNAMO II. Only a few errors preclude the running of a model.
    In response to the demand for DYNAMO on computers other than the IBM 360-370 computers, Richard Wright and Mr. Pugh of the consulting firm of Pugh-Roberts Associates, Inc., developed a FORTRAN-based version in 1971. DYNAMO II/F translates a model into FORTRAN and supports its execution with the standard DYNAMO functions and output routines. As this version is entirely written in FORTRAN, the only hardware requirement for its installation is a computer that supports a version of FORTRAN relatively close to the full American National Standard.
    Interactive (time sharing) versions of DYNAMO have been popular since the advent of the first CTSS version.  DYNAMO II was first checked out as an interactive version, and the first S/360 DYNAMO operated under CP67/CMS.  In 1971, the interactive version was converted to the RAX operating system by Pugh-Roberts Associates and Boston University, and in 1972 this version was tuned to the TSO system.  An interactive version of DYNAMO II/F was developed in 1972 by Mr. Wright.
    An interactive version of DYNAMO suggests the possibility of interaction during the simulation.  The user might examine the state of the system and decide what action he feels is appropriate.  Such a version of DYNAMO has been developed by Mr. Pugh and is referred to as Gaming DYNAMO, as gaming is one of the obvious uses for such a system.  A game is constructed from all the usual DYNAMO equation types plus one additional type ? Decision.  Decisions are those variables that can be changed during interaction with the game.  The current Gaming DYNAMO was developed by D. Ross Hunter of Pugh-Roberts Associates, Inc. as an extension to DYNAMO/F.
    In response to the growing number of models containing sectors repeated several times to represent reality in a more disaggregate manner, an array-handling capability was added to DYNAMO by William A. Shaffer and Mr. Pugh of Pugh-Roberts Associates.  This version, designated DYNAMO III, was designed to be consistent with FORTRAN'S and implemented within the framework of DYNAMO II/F.  Through the vehicle of implicit DO loops, equations involving arrays can occur in any order, retaining DYNAMO'S minimal requirements on the order of model statements.
    The growing size of DYNAMO III models, in conjunction with the size limitation of IBM's FORTRANs, led Mr. Pugh to develop during 1976 a DYNAMO III compiler, specifically for IBM computers, that will compile huge models rapidly.  This version is referred to as DYNAMO HI/370.  Between 1976 and 1983, Mr. Pugh made numerous improvements to DYNAMO HI/370, most notably, the addition of the PRESERVE and RESUME feature.  In 1983, Mr. Hunter and Todd Sjoblom of Pugh-Roberts Associates, Inc. developed DYNAMO III/F+, to incorporate as many of the DYNAMO HI/370 features as possible in a FORTRAN-based DYNAMO.
    To support schools and colleges that were teaching System Dynamics, but only had access to mini-computers, Dr. Shaffer developed Mini-DYNAMO for Pugh-Roberts Associates, Inc. in 1976.  Unlike earlier DYNAMOs, Mini-DYNAMO interpreted rather than executed the code it generated so that runtime errors, such as division by zero, could be reported in a manner the user could easily understand.  Recently, microcomputers have become readily affordable both by schools and by individuals. To make DYNAMO available on such machines, Jay P. Werb of Pugh-Roberts Associates, Inc., converted Mini-DYNAMO to run on the Apple II computer in 1981. (While the language of Mini-and Micro-DYNAMO are upward compatible with DYNAMO II, III, and IV, the reference manuals for those programs are the Mini-
    DYNAMO user's Guide, William A. Shaffer, 1977, published by Pugh-Roberts Associates, Inc., and User Guide and Reference Manual for Micro-DYNAMO, Pugh-Roberts Associates, Inc., 1982, published by Addison-Wesley.)
    Documenting any computer program has always been tedious. To simplify the mechanical chore of merging variable definitions following the equations where they are used, Mr. Pugh wrote the Documentor in 1960.  Once DYNAMO had been converted to the S/360 he rewrote it in AED.  In 1976, Mr. Hunter rewrote it again and improved it.  This time it was written in FORTRAN so that it could be run on practically any machine supporting DYNAMO.  Mr. Hunter also wrote chapter 7 of this book, the DOCUMENTOR/F user's Manual.
    The early development of DYNAMO was supported financially by the Ford Foundation, International Business Machines, Project MAC at the Massachusetts Institute of Technology, and Humble Oil and Refining Co.
  • Pugh, Alexander L. DYNAMO User's Manual: Including DYNAMO II/370, DYNAMO II/F, DYNAMO III, Gaming DYNAMO. Cambridge, MA: MIT Press, 1976. view details Abstract: DYNAMO user's Manual
    Sixth Edition
    by Alexander Pugh 111
    DYNAMO is a computer language for simulating models of business, economic, social, biological, and engineering systems. It permits easy communicatiori with the computer and easier communication among modelers and can be mastered by nonprogrammers in days rather than the weeks or months required for most languages.                                         -? "
    The sixth edition of the DYNAMO user's Manual introduces the basic DYNAMO language, includes a reference manual for-DYNAMO II with an expanded section on macros, and documents all the improvements that have been made to, DYNAMO 111 since it was completed in 1976. Experience with this system has led to changes that make the array feature even more useful than before in the construction of large, disaggregated models. The manual introduces DYNAMO IV, with its improved integration method, and describes Gaming DYNAMO. Typical errors in model construction (and their corrections) are presented, along with a complete
    list of DYNAMO error messages. This edition also includes the new DOCUMENTOR program, which produces annotated model listings, cross references, and indices.
    DYNAMO compilers are available in versions specific to the IBM/370 and in versions written in ANS FORTRAN.
  • Gordon, Geoffrey "System simulation" (2nd ed.) Prentice-Hall, Englewood Cliffs, N.J., 1978, 324 pp., ISBN 0-13- 881797-9 view details
  • Sammet, Jean E "Roster of programming languages for 1976-77" pp56-85 view details
          in SIGPLAN Notices 13(11) Nov 1978 view details
  • Scher, J. M. review of Gordon 1977 view details
          in ACM Computing Reviews 19(06) June 1978 view details
  • Scher, J. M. review of Pugh 1976 view details Abstract: To review this manual, one must initially decide whether to evaluate the language (and its new extensions) or to evaluate a book about the language. It is difficult to make this distinction, since the DYNAMO developers (Pugh Roberts Associates) appear to have the only detailed book on the market describing this language. Our perspective will lean more towards evaluating the book, rather than the language.

    An earlier edition of this manual presented the DYNAMO II Language, which is included in this fifth edition along with extensions for DYNAMO III and Gaming DYNAMO. DYNAMO III provides the highly desirable features of a full array capability, along with several arithmetic and logical functions for vector transformations. Gaming DYNAMO provides for true human interaction with the simulation model. Pedogogically, the presentation is somewhat weak, with very few examples to illustrate the language syntax. It reads more like vendor specifications (which it is) than a user-oriented publication (which it should be).

    DYNAMO is intimately associated with the systems dynamics modeling philosophy. It is this reviewer's opinion that to logically isolate the language from its modeling applications is a gross error. Integrating the language into a text such as [ 1 ] or [ 2 ] would provide a more "user-oriented" approach.

    REFERENCES
    [ 1 ] FORRESTER, J. W. Principles of systems, Wright-Allen Press, Cambridge, Mass., 1968.
    [ 2 ] GOODMAN, M. R. Study notes In systems dynamics, Wright-Allen Press, Cambridge, Mass., 1974.
          in ACM Computing Reviews 19(05) May 1978 view details
  • SHAFFER, W. A. "DYNAMO" Simulation 34,4 (April 1980), 134-136. view details
          in ACM Computing Reviews 19(05) May 1978 view details