I am excited to announce 5 new packages for solving Multiobjective Mixed Integer Linear Programs:
FPBH.jl: It is a linear programming based heuristic for computing an approximate nondominated frontier of any (both structured and unstructured) multiobjective mixed integer linear program in Julia.
- It has been successfully tested on nearly 700 (both structured and unstructured) instances, including instances up to 5 objectives, > 1000 constraints, > 10000 variables
- It is compatible with JuMP and supports LP and MPS file formats
- No mixed integer programming solver is required and any linear programming solver supported by MathProgBase.jl can be used. It has been tested with GLPK, CLP, SCIP, Gurobi and CPLEX
- All parameters are already tuned, only timelimit is required.
- Supports parallelization
- FPBHCPLEX.jl: It is an efficient implementation of FPBH.jl for CPLEX using CPLEX.jl and CPLEXExtensions.jl.
Modof.jl: It is a framework used for solving multiobjective mixed integer programs in Julia. It can:
- handle multiple linear objectives using ModoModel ( a JuMP extension )
- select, sort, write and normalize a nondominated frontier
- compute ideal and nadir points of a nondominated frontier
- compute the closest and the farthest point from the ideal and the nadir points
- compute quality of a nondominated frontier (hypervolume, cardinality, coverage and uniformity)
- includes wrappers for (tested only on linux): MDLS (for multidimensional knapsack and biobjective set packing problems) and NSGA-II (for biobjective binary programs)
- Modolib.jl: It is a collection of instances and their efficient frontiers (if available) of various classes of multiobjective mixed integer programs. Around 700 instances with their true frontiers (biobjective assignment, knapsack, set covering, set packing, mixed binary and uncapacitated facility location; multiobjective assignment, knapsack and mixed binary) are included. It can also generate different classes of random multiobjective mixed integer programs commonly used in the literature.
- Modoplots.jl: It is a Julia package capable of plotting nondominated frontiers of biobjective and triobjective optimization problems.
A small example:
Solving the following multi-objective mixed integer linear program using FPBH.jl and Clp as the underlying LP Solver:
using Modof, JuMP, FPBH, Clp
model = ModoModel() @variable(model, x[1:2], Bin) @variable(model, y[1:2] >= 0.0) objective!(model, 1, :Min, x + x + y + y) objective!(model, 2, :Max, x + x + y + y) objective!(model, 3, :Min, x + 2x + y + 2y) @constraint(model, x + x <= 1) @constraint(model, y + 2y >= 1)
@time solutions = fpbh(model, lp_solver=ClpSolver(), timelimit=10.0, threads=1)
For users interested in the algorithm and the supporting results, we refer them to: