Summary
Nowadays, the use of system simulation for analyzing complex engineering problems is increasing. Usually, a lot of time is spent on specifying the problem for a computer simulation. Once this has been done, the analyst usually does not attempt to optimize the design. One reason for this is that there is usually no time to go through the lengthy process of varying the input data, running the simulation and comparing the various results. However, it is possible to do automatic optimization
using search techniques that require little effort and time.
Another reason that systems are not optimized is that they are often so complex
that determining the optimal design parameters
is not feasible without using an optimization algorithm.
To overcome these difficulties, GenOpt, a generic optimization program, is being developed.
Since one of the main application fields of GenOpt is
the optimization of cost functions that are evaluated by building simulation programs,
it considers the special characteristics of simulation problems in this area, i.e.:
 the number of independent variables is small
(typically around 5 to 20, but there is no restriction in GenOpt
to the number of independent variables),
 evaluating the cost function is timeintensive compared to determining a new
iterate,
 analytical properties of the cost function are not available.
In order to make the program widely applicable, the following requirements are satisfied:

The program is capable of minimizing a function
for which no analytical properties are available.
 It is possible to couple the optimization program to any simulation program with textbased input and output, on any operating system
that can run Java,
without having to modify and recompile either program.
 The user can select an appropriate optimization algorithm from a library or
implement a custom algorithm without having to recompile and understand
the whole optimization environment.
To ensure platform independence, GenOpt is written entirely in Java.
The coupling to any simulation program can be done by specifying in a configuration file how to exchange data and how to start the simulation program.
The implementation of the user's own optimization algorithms can be done by inheriting a Superclass that offers Methods to use the functionality of GenOpt.
Hence,
to implement a custom optimization algorithm,
it is not necessary to know the overall program structure.
In designing complex systems, as well as in system analysis for research purposes, a generic optimization program like GenOpt offers valuable services.
Note, however, that optimization is not easy:
The efficiency and success of an optimization is strongly affected by the properties and
the formulation of the cost function, and by the selection of an appropriate optimization algorithm.
