/omnioptr

Interface to Omni-optimizer heuristic by Deb and Tiwari.

Primary LanguageCGNU General Public License v3.0GPL-3.0

omnioptr: Omni-Optimizer Algorithm

Project Status: Active – The project has reached a stable, usable state and is being actively developed. R-CMD-check codecov CRAN_Status_Badge

Introduction

Simple interface to the C-implementation of the Omni-optimizer by Deb and Tiwari (1,2). The algorithm “is designed as a generic multi-objective, multi-optima optimizer” (2).

  1. Kalyanmoy Deb, Santosh Tiwari: Omni-optimizer: A generic evolutionary algorithm for single and multi-objective optimization. European Journal of Operations Research 185(3): 1062-1087.

  2. Kalyanmoy Deb, Santosh Tiwari: Omni-optimizer: A Procedure for Single and Multi-objective Optimization. In: Proceedings of the Evolutionary Multi-Criterion Optimization Conference (EMO) 2005: 47-61.

Example

library(omnioptr)
library(smoof)

# Single-Objective Example (see reference (2), Section 4.2)
# ===

set.seed(1) # reproducibility
fn = smoof::makeHimmelblauFunction()
res = omniopt(fn, 100, 200, var.space.niching = TRUE, delta = 0.001, frequency = 1L, verbose = FALSE)

# final points in decision space
plot(fn)
points(t(res$dec))

# visualization of progress
for (i in 1:length(res$history)) {
  e = res$history[[i]]
  if (is.null(e))
    next
  plot(fn, main = sprintf("Iteration %i", i))
  points(t(e$dec))
  Sys.sleep(0.1)
}

# Multi-Objective Example
# ===

set.seed(1) # reproducibility
fn = smoof::makeZDT2Function(dimension = 4L)
res = omniopt(fn, 100, 1000, p.cross = 0.9, verbose = FALSE)
plot(t(res$obj))
pairs(t(res$dec))

Installation Instructions

The package will be available at CRAN when it is done. If you are interested in trying out and playing around with the current github development version use the devtools package and type the following command in R:

devtools::install_github("jakobbossek/omnioptr")

Getting help

Please address questions and missing features about the omnioptr as well as annoying bug reports in the issue tracker. Pay attention to explain your problem as good as possible. At its best you provide an example, so I can reproduce your problem quickly. Please avoid sending e-mails.