vOptSolver

Solver of multiobjective linear optimization problems: description and documents

View the Project on GitHub vOptSolver/vOptSolver

Solver of multiobjective linear optimization problems

vOptSolver is an ecosystem for modeling and solving multiobjective linear optimization problems (MOMIP, MOLP, MOIP, MOCO). It integrates several exact algorithms for computing the set of non-dominated points $Y_N$, and the corresponding complete set of efficient solutions $X_E$, for structured and non-structured optimization problems with at least two objectives.

It is composed of the two julia packages MultiObjectiveAlgorithms (previously vOptGeneric) and vOptSpecific, and hosts vOPtLib, a library of numerical instances:

IMPORTANT (Feb-2023): vOptGeneric.jl has been fully redesigned, and reimplemented. It becomes MultiObjectiveAlgorithms.jl (MOA), a collection of algorithms for multi-objective optimization integrated to JuMP and MathOptInterface. MOA comes with an enriched list of multi-objective algorithms, especially for solving problems with 3 objectives. Consequently vOptGeneric.jl is no longer under active development. It will remain available on Github at https://github.com/vOptSolver/vOptGeneric.jl. From February 2023, the JuMP-dev organization will continue to maintain the MOA package and transition development over the long term.


Content

News

15-Feb-2023: Simple examples from vOptGeneric have been adapted for MOA 
15-Feb-2023: vOptGeneric.jl is no longer under active development
15-Feb-2023: vOptGeneric.jl has been redesigned and reimplemented, it becomes MultiObjectiveAlgorithms.jl
03-Sep-2022: Instances and parser for uncapacitated facility location problems added
12-Mar-2022: vOptGeneric is compliant with JuMP 0.23.0 and MOI 1.1.0
25-Jan-2022: Parser for set partitionning problems added
24-Jul-2021: vOptSpecific updated, and new examples added
21-Jul-2021: Examples for vOptGeneric updated and new examples added
15-Jun-2019: Testing the version of vOptGeneric compliant with JuMP 0.19  
22-Apr-2019: Preparing an update of the documentation 
31-Oct-2018: vOptSpecific and vOptGeneric are compliant with Julia v1.x 
01-Jul-2018: Preparing the switch to Julia 0.7 and to the new version of JuMP 
01-Sep-2017: Algorithms added to vOptGeneric and vOptSpecific, documentation and examples are coming.
20-Jul-2017: Examples presented in conferences (MCDM'2017; IFORS'2017) are online (folder examples)
26-Jun-2017: Source codes of vOptGeneric and vOptSpecific for v0.0.2 are online
17-Jun-2017: Moved from GitLab to GitHub
03-Jun-2017: The next release (v0.0.2) is scheduled for June 2017

Feedback

All bugs, feature requests, pull requests, feedback, etc., are welcome.

Coordinator

Prof. Dr. Xavier Gandibleux, University of Nantes - France (contact)

Developers

By alphabetical order (concerning vOptGeneric and vOptSpecific):

How To Contribute

  1. in adding your examples (code JuMP + data) solved with vOptGeneric to the collection;
  2. in plugging your own C/C++/Julia algorithms into vOptSpecific or vOptGeneric;
  3. in adapting vOptSpecific for windows;
  4. in sending us your suggestions to improve/extend vOptSolver;
  5. in telling us when you have completed a work (exercices for students; research; paper; etc.) using vOptSolver;
  6. in joining the adventure with us as maintainer of the solver, repositories, documents, etc.

In brief, every contributions aiming to share our efforts, our algorithms, our productions around this open source software are welcome.

License

vOptSolver is distributed under the MIT License.

References

Xavier Gandibleux. Multi-objective optimization with JuMP. JuliaCon 2023. Massachusetts Institute of Technology. Cambridge, USA. July 25-29, 2023.

Xavier Gandibleux, Gauthier Soleilhac, Anthony Przybylski. vOptSolver: an ecosystem for multi-objective linear optimization. JuliaCon 2021. Online and everywhere. July 28-30, 2021. Abstract. Reference to use for citing vOptSolver

Anthony Przybylski. Optimisation combinatoire multi-objectif : méthodes de résolution exacte et solveur vOpt. JuliaDay’2019 : Journée « Julia et Optimisation ». 17 Juin 2019. Université de Nantes, France. https://julialang.univ-nantes.fr/journee-julia-et-optimisation

Xavier Gandibleux et Anthony Przybylski, Algorithmes de branch-and-bound multiobjectif et vOptSolver. Tutoriel du GDR CNRS RO, ROADEF’2018 : 19e édition du congrès annuel de la Société Française de Recherche Opérationnelle et d’Aide à la Décision. 22 février 2018, Lorient. Video.

Xavier Gandibleux et Anthony Przybylski, Optimisation combinatoire multiobjectif : deux contributions issues du projet de recherche ANR-DFG vOpt. SPOC16 : 16e journée “Polyèdres et optimisation combinatoire”. LAMSADE/Université Paris-Dauphine. 15 décembre 2017.

Xavier Gandibleux, Pascal Halffmann. Designing and Experimenting with vOptSolver an Algorithm for Computing the Weight Set Decomposition. RAMOO’2017 : 4th International workshop “Recent Advances in Multi-Objective Optimization”, TU-Kaiserslautern, Germany. 2017.

Xavier Gandibleux, Gauthier Soleilhac, Anthony Przybylski, Flavien Lucas, Stefan Ruzika, Pascal Halffmann. vOptSolver, a “get and run” solver of multiobjective linear optimization problems built on Julia and JuMP. MCDM2017: 24th International Conference on Multiple Criteria Decision Making. July 10-14, 2017. Ottawa (Canada).

Xavier Gandibleux, Gauthier Soleilhac, Anthony Przybylski, Stefan Ruzika. vOptSolver: an open source software environment for multiobjective mathematical optimization. IFORS2017: 21st Conference of the International Federation of Operational Research Societies. July 17-21, 2017. Quebec City (Canada).

Support

The development of vOptSolver started in the ANR/DFG-14-CE35-0034-01 research project vOpt (2015-2019) (link) involving Université de Nantes (France) and University of Koblenz-Landau/University of Kaiserslautern (Germany).

Overview

Aims

Purposes

Characteristics

Background

Features

Problems managed

Algorithms integrated

The solving algorithms included compute exact solution(s) corresponding to Y_{lex}, Y_{SN}, or Y_{N}.

Inputs

Outputs

Instructions

Information

Installation and usage Instructions

Refer to the instructions provided for

Documentation and examples

NB: the available documentation is obsolete (written for Julia v0.6.4; new documentation compliant with v1.x is coming).

Old documentation:

Examples of problems ready to be solved:

References


Terms and acronyms used