INVERSE logo - click to load Inverse home
 

INVERSE Philosophy


    Inverse is a general-purpose shell for solving inverse and optimization problems. It is designed for solving practical industrial problems as well as for academic use (i.e. for development and experimentation with various optimization and auxiliary tools within a general optimization environment). In general it is supposed to be used in conjunction with simulation programmes, although stand-alone use is possible.

    Openness, flexibility and portability it the basic guidance followed at Inverse development.

    Openness means that the programme is easily integrated or interfaced with other programmes that accomplish performing specific functions not available in Inverse. It also means that different modules of the programme can be developed independently at different locations and then merged together at any time. Things which are not dependent one upon another are also implemented this way, therefore implementation and development of certain functionality does not affect already implemented functions. As a result, for example, someone who develops an interface with a specific simulation programme does not need to care about how optimization algorithms are implemented in the shell.

    Flexibility means that the shell is capable of solving a great variety of problems that have very little in common. A flexible user interface implemented as file interpreter plays the main role here. User of the shell has a great freedom at defining the problem and solution strategy. The shell is structured in several layers where the most basic layers form a framework characterized by means common more or less to all optimization problems. For example, the fact that one or more objective functions are defined and that the solution procedure of optimization problems consists of repetitive evaluations of the objective and possibly some other functions define this framework. A minimum amount of standard conventions are defined at this level, e.g. the place where the objective function value is stored. These conventions form the only rules which user is usually obliged to keep.
    Above the basic layer there are various tools of different levels and complexity. The user can use these tools within the basic framework. By combining the existent tools it is possible to solve a great variety of optimization problems . Several high level and specialized tools can be added to ease solving of several specific classes of problems. Use of these tools is left to user choice.

    Portability means that the programme can be easily ported to different computer environments. The basic framework of the programme is coded in ANSI C which is available on almost all platforms. Use of other higher level  or less standard development tools and libraries is avoided within the Inverse development group. System requirements of the programme are also low. Programme is a terminal application and can therefore be used on any system from this point of view. It is possible that specific parts of the programme or upgrades of the user interface will not meet these requirements. However, in this case these parts will be implemented at a higher level so that they can be simply omitted on platforms which would not provide sufficient support for them.

    Solution of practical optimization problems usually induces a number of sub problems that must be solved. This is especially true when definition of optimization objective includes response of a complex physical system, which is calculated by an appropriate mathematical model - and this is exactly the scenario for which the shell has been primarily designed.   Inverse provides a number of tools for various kinds of sub problems related to different areas of optimization. They are implemented as file interpreter and expression evaluator functions organized in so called modules. These are sets of functions oriented towards solving problems of specific areas. The tendency is that organization of modules follow simple and clear mathematical logic where provided functionality is closely related with nature of the problems and adapted to user's way of thinking at the same time. Provided functions should clearly reflect basic feature of the problems they solve as are seen by user, but must hide from user solution details that are not essential for problem understanding.
 


 
Upper Level C3M home