GenOpt: A Generic Optimization Program
GenOpt is a generic multiparameter program being developed for system optimization. It automatically determines the values of user-selected design parameters that lead to the best operation of a given system. It can also determine unknown parameters in a data-fitting process. GenOpt optimizes a user-selected objective function, such as a building's calculated annual energy use. It also offers an interface for easily adding users' own optimization algorithms to its library.
GenOpt is currently being developed as a console application, written entirely in Java so that it is platform-independent. The interface for coupling external simulation programs and adding custom optimization algorithms has been completed. GenOpt currently works under UNIX Solaris 2.5.1, Windows NT, and Windows 95.
A lot of time is spent specifying the input for a simulation model, but once this is done, the user usually does not try to optimize it. This can be because there is no time left for the tedious process of changing input values, running the simulation, interpreting the new results, and guessing how to change the input for the next trial, or because the systems being analyzed are so complex that the user is not capable of understanding the interactions of the various parameters. GenOpt makes it possible to do automatic multiparameter optimization with search techniques that require only a little effort.
How GenOpt Works
To perform the system optimization, GenOpt automatically writes an input file. The generated input file is based on an input template written for the simulation program. GenOpt then launches the simulation, reads the value of the function being minimized from the simulation result file, checks possible simulation errors, and determines a new set of input parameters for the next run. The whole process is repeated iteratively until the minimum of the function is found. If the simulation problem has some underlying constraints, they can be taken into account either by a default implementation or by modifying the function that has to be minimized. GenOpt offers a default scheme for simple constraints on the independent variables (box-constraints), as well as a formalism that allows constraints to be added to the simulation problem by means of so-called penalty or barrier functions. For example, GenOpt could be used to find the area of the windows or facades of a house that minimizes annual energy use subject to the constraint that each area must be within user-specified minimum and maximum values.
Interface for Simulation Program
GenOpt has an open interface on both the simulation-program and optimization-algorithm sides. It permits the easy coupling of any external program like SPARK, DOE-2, BLAST, or a user-written program by modifying a configuration file.
The data exchange between GenOpt and the external program is done with text files only (see the figure). GenOpt automatically generates a new input file for the simulation engine based on an input template file. To generate such a template, the user accesses the already-defined simulation input file and replaces the numerical values of the parameters to be modified with keywords. GenOpt then replaces those keywords with the corresponding numerical values and writes the simulation input file. This approach makes GenOpt capable of writing text input for any simulation program. In a configuration file, the user can specify how the simulation program is to be launched and where GenOpt can find the current value of the objective function to be minimized. This makes it possible to couple any external program to GenOpt without modifying and recompiling either program. The only requirement of the external program is that it must read its input from a text file and write the function value to be minimized (plus any possible error messages) to a text file.
For more information, contact:
- Kathy Ellington
- (510) 486-5711; fax (510) 486-4089
The alpha version of GenOpt is ready to be tested by a limited number of users. For further information and to register as a tester, visit the GenOpt web site.
This research is sponsored by the U.S. Department of Energy's Office of Building Technology, State and Community Programs.