There are many synergies between the modeling and optimization worlds (something we have tried to explore in our MELO workshops). Optimization has been largely applied to solve testing and verification problems for models (see this state of the art or our own solution). The opposite direction, i.e. how modeling techniques can help in optimization problems, has been much less studied.
MOPLAF is a step in that direction. Indeed, facilitating the development of optimization applications with modeling techniques is the goal of this framework. Michel Schaffers, the man behind the framework, gives us a short introduction on MOPLAF. Enter Michel.
MOPLAF is a thin layer on top of Eclipse/EMF. The framework provides a number of components, allowing us to build Planning or Optimization applications focusing on domain specific matters. It takes care of many technical concerns, like visualization or integration with solvers and databases. Its goal is to allow to build a functionality which is a 100% match to the business needs, starting from a white page, with as little effort as possible.
We observe indeed that every optimization problem is very domain specific. Applying a standard software, or customizing it simply does not work. The specificities are not taken into account, or badly, or to nonproportional cost. The end result is a clumsy application with poor results. The way to design and build an application solving exactly the problem at hand and producing the expected solution is by modeling. By building an application on top of Eclipse/EMF, we are able to model the domain specificities of the to-be-solved problem in the application.
MOPLAF is thus a domain agnostic framework, leveraging Eclipse and EMF, making it possible to build from scratch (read without any premise on the domain) a system solving the targeted optimization problem.
Although the goal of MOPLAF is to make it possible to implement the desired functionality starting from a white page, out of experience, we observe that some functions are recurrent in optimization applications. For instance how to discretize time (implement time buckets), how to handle quantities varying in time like stocks and capacities, how to maintain derived data, how to integrate a solver in an optimization application. These functions are provided by MOPLAF. The less generic function provided so far is capacity planning functionality (supporting the decisions how much of an activity is done, how much of a product is consumed/produced/stored, how much of a resource is available/used in a period of time).
The application infrastructure (graphical or not) is provided by the eclipse platform and the object infrastructure by EMF, thus established and reliable components. MOPLAF provides components doing the integration with database systems (synchronization functionality between database data and application data in both directions), with solver engines (the integration with the engine software, pattern supporting the concepts of scenarios, problem instance with goals, runs, solutions), with GIS and with reporting systems.
MOPLAF provides as well graphical components like plots (plotting a quantity against time), Gantt charts (showing activities of resources along the time) and KPI views (dashboards). The applicative objects need just to implement the MOPLAF api’s, and the data are displayed in MOPLAF views showing the data in a chart, in a Gantt chart or on a dashboard.
The end result is that very little code is needed to produce an optimization application solving a problem that matches perfectly the requirements.
Featured image by chuttersnap on Unsplash