The structure of DESDEO
In the big picture, DESDEO is not just meant to be a collection of interactive multiobjective optimization methods, but a full stack solution (which can be run as an application) to provide decision-support for decision makers to tackle real-life multiobjective optimization problems by utilizing interactive methods. Being a full stack solution, it consists of three main components:
- the core-logic,
- the web-API, and
- the web-GUI.
We will describe each of these components in the following sections.
The core-logic
The core-logic of DESDEO is implemented in Python and contains tools and functionalities for modeling multiobjective optimization problems and implementing interactive multiobjective optimization methods. This also includes a plethora of other functionalities that are required, such as scalarization utilities and (programmatic) interfaces to existing optimization software.
The core-logic itself consists of four main modules. The first of these is
desdeo.problem, which has functions and classes for problem modeling, parsing,
and evaluation. In addition, the module contains also pre-defined test problems
that can be utilized to readily benchmark and pilot, e.g., interactive methods.
The problem model is also defined in
desdeo.problem, which is at the very core when it comes to how multiobjective
optimization problems are handled in the core-logic.
The second main module is desdeo.tools. This module contains additional
utilities, which can be considered to be generic, and not specific to any type
of interactive methods (such as MCDM or EMO, covered next). This includes
scalarization and solver interfaces to existing optimization algorithms, for
example, Gurobi, or utilities, such as the payoff-table method.
Next, we have the first of the main modules that are contain logic for
implementing interactive multiobjective optimization methods, desdeo.mcdm. The
name MCDM refers to interactive methods that have been inspired by more
traditional approaches in the field of multi-criteria decision-making. In
practice, these are interactive methods that often rely on scalarization in one
way or another, and utilize exact optimizers to generate solutions that can be
guaranteed (to a varying degree) to be Pareto optimal. The methods have been
implemented in a modular fashion, meaning, that relevant steps of different
methods are implemented as functions. These functions can be mixed and matched
to create existing interactive methods, or completely new ones with relative
little effort.
Lastly, the second of the main modules containing logic for implementing interactive
methods is desdeo.emo. This module is for evolutionary multiobjective optimization
methods, which utilize heuristic to improve a population of solutions iteratively.
Unlike MCDM methods, EMO (evolutionary multiobjective optimization) methods are implemented
using templates and publish-subscribe patterns.
Nonetheless, the desdeo.emo contains many different cross-over, mutation, selection, and
termination operators, which can be combined in different way to create existing
or new EMO methods.
Apart from the main modules, other modules exist as well. The main modules,
and others, can be found in the /desdeo/ directory of the source tree.
The web-API
The web-API (application programming interface) is a web interface that allows software and applications to utilize DESDEO through HTTP endpoints over a web connection. Its main purpose is to enable other applications to have access to the core-logic of DESDEO.
In addition, the web-API introduced a database. This allows DESDEO to handle users and users sessions, which is critical for building decision-support tools.
WIP
The web-API is currently under heavy development. Be free to explore it and contribute, but understand things will be changing fast and nothing is stable!
If you are interested in contributing to the web-API, please check out this issue and be sure to hop on our Discord server for additional support!
The web-API can be found in the directory desdeo/api/ in the project source tree.
The web-GUI
The web-GUI is the frontend part of DESDEO. It implements an interface, which allows users to utilize DESDEO through a graphical user interface. Development of the web-GUI is in early stages of development.
WIP
The web-GUI is currently under heavy development. Be free to explore it and contribute, but understand things will be changing fast and nothing is stable!
If you are interested in contributing to the web-API, please check out this issue and be sure to hop on our Discord server for additional support!
The web-GUI will be found in the directory desdeo/gui/ in the project source tree.