### 4 releases

0.2.0 | Nov 20, 2019 |
---|---|

0.1.2 | Jan 28, 2019 |

0.1.1 | Jan 27, 2019 |

0.1.0 | Jan 27, 2019 |

#**901** in Algorithms

**MIT**license

17KB

415 lines

# Multi-Objective Combinatorial Optimization - Anytime Behavior Model (moco_abm)

This software provides both a binary and a library (see note) for an anytime behavior model of multi-objective combinatorial optimization algorithms that, at each iteration, collect an efficient solution that maximizes the hypervolume contribution. It is assumed that all objective functions are to be maximized.

**Note**: the current software is intended to be used as a binary for now. The library API is not yet properly defined and no documentation is provided for now.

## Binary

Install the latest binary using

with:`cargo`

`cargo`` install moco_abm`

or compile from source with:

`cargo`` build`` --`release

### Usage

`USAGE:
moco_abm [OPTIONS] -n <num>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-f <file> file with piecewise approximation definition (stdin is used if not set)
-n <num> number of points to retrieve
`

The input file should contain at least one segment in the following format

`u1 u2 v1 v2
`

where $(u_1, u_2)$ and $(v_1, v_2)$ denote the coordinates of the linear segment endpoints. Multiple segments, and coordinates within the segments, can be separated by any whitespace.

**Note**: Points in the segments must be provided such that

and `v1 > u1`

`v2 ``<` u2

. Moreover, when multiple segments are provided, e.g.:`u1 u2 v1 v2
p1 p2 q1 q2
`

it is required that

and that `p1 >= v1`

`p2 ``<=` v2

.Example of a valid segments list file:

`0.``0` `1.``0` `0.``7` `0.``7`
`0.``7` `0.``7` `1.``0` `0.``0`

### Output

The output is returned to

and consists of a `stdout`

with the following fields`.`tsv

field | description |
---|---|

index | index of the current point (starts at 1) |

hv_contribution | hypervolume contribution of this point |

hv_current | hypervolume of all returned points up to now |

hv_relative | current_hv relative to maximal hypervolume |

point | comma separated coordinates of the point |

## Library

Add this to your

:`Cargo.toml`

`[``dependencies``]`
`moco_abm ``=` `"`0.1`"`

and this to your crate root:

`extern` `crate` moco_abm`;`

#### Dependencies

~155KB