Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jakobbossek/omnioptr

Interface to Omni-optimizer heuristic by Deb and Tiwari.
https://github.com/jakobbossek/omnioptr

heuristic-search-algorithms optimizer optmization

Last synced: 3 days ago
JSON representation

Interface to Omni-optimizer heuristic by Deb and Tiwari.

Awesome Lists containing this project

README

        

---
output: github_document
---
# omnioptr: Omni-Optimizer Algorithm

[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
[![R-CMD-check](https://github.com/jakobbossek/omnioptr/workflows/R-CMD-check/badge.svg)](https://github.com/jakobbossek/omnioptr/actions)
[![codecov](https://codecov.io/gh/jakobbossek/omnioptr/branch/main/graph/badge.svg?token=88YGQRYJ4W)](https://codecov.io/gh/jakobbossek/omnioptr)
[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/omnioptr)](https://cran.r-project.org/package=omnioptr)

## 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

```r
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](http://cran.r-project.org) *when it is done*. If you are interested in trying out and playing around with the current github development version use the [devtools](https://github.com/hadley/devtools) package and type the following command in R:

```{r, eval = FALSE}
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](https://github.com/jakobbossek/omnioptr/issues). 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.