GithubHelp home page GithubHelp logo

coin-or / metslib Goto Github PK

View Code? Open in Web Editor NEW
25.0 5.0 12.0 3.67 MB

An Open Source Tabu Search Metaheuristic framework in C++

License: GNU General Public License v3.0

Shell 4.99% HTML 0.13% C++ 78.84% Makefile 1.73% M4 14.30%

metslib's Introduction

METSlib
=======

METSlib: a metaheuristic framework.
-----------------------------------

This project is under development and, althought useful, must be
reviewed to be ready for anyone to use.

METSlib is an OO (Object Oriented) metaheuristics optimization
framework in C++ designed to make easy implementing or adapting
models. The model is modular: all the implemented search algorithms
can be applied to the same model.

Once the model is implemented one can test some Tabu Search Strategies
or Simulated Annealing or other local search based search strategies.

METSlib is Open Source and is covered by the GNU GPL license or, at
your option, by the Common Public License 1.0. Commercial licensing
or custom development can be considered by the author upon request.

METSlib implements the basics of some metaheuristics algorithm:

    * Random Restart Local Search
    * Variable Neighborhood Search
    * Iterated Local Search
    * Simulated Annealing (with linear, exponential and custom cooling
      schedule)
    * Tabu Search.

In its current state, the main focus of the library is on Tabu Search,
other algorithm may have some rough edges.

To use any algorithm you must implement an objective function, a
neighborhood (move manager) and some moves.

For each algorithm you are free to use some of the already implemented
termination criteria and/os cooling schedule (for SA) and/or tabu
lists and aspiration criteria (for TS), or you can implement you own
specialized versions.

The object oriented structure was carefully thought out to be highly
reusable and the algorithm where reviewed by more than one person and
more than one time.

This OO library was inspired by the OTS library released by the
Coin-OR project.

You may want to read https://github.coin/coin-or/metslib


Complete API Documentation
--------------------------

    - https://coin-or.github.io/metslib/docs/stable/0.5/html/


Tutorial 
--------

A METSlib Tutorial is available here:
  - https://coin-or.github.io/metslib/docs/stable/0.5/metslib-tr.pdf

You can also look in the distributed examples in project
https://github.com/coin-or/metslib-examples.

Contact Information
-------------------

This library was used in different projects by different developers
and proved quite useful to implement a new model (or to adapt an old
one) without re-inventing the wheel each time you need to change the
algorithm or the neighborhood. At the same time it's young so I'll be
happy to help you while implementing the nuts and bolts of your own
model since documentation is still a work in progress.

Feel free to write an email to <[email protected]>.


Need help? Willing to help?
---------------------------

Join the mailing list
http://list.coin-or.org/mailman/listinfo/metslib 
and start contributing


Credits
-------

I'd like to thank all the people at the Global Optimization Laboratory
(http://gol.dsi.unifi.it) for continuous support and the many useful
discussions, in particular Fabio Schoen, Bernardetta Addis and Paola
Cappanera.

The automake template was borrowed from some projects by Murray
Cumming <[email protected]> and Cedric Gustin <[email protected]>


If you use the library you should cite it in your work:
=======================================================

    - Mirko Maischberger, "COIN-OR METSlib, a Metaheuristics Framework
      in Modern C++" April 2011

    BibTex Entry:

@misc{metslib2011,
  author={Mirko Maischberger},
  title={{COIN-OR} {METSlib}, a Metaheuristics Framework
      in Modern C++},
  month={April},
  year={2011},
  howpublished = {https://coin-or.github.io/metslib/docs/stable/0.5/metslib-tr.pdf},
}

- Mirko Maischberger

metslib's People

Contributors

baol avatar svigerske avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

metslib's Issues

Simulated Annealing

Issue created by migration from Trac.

Original creator: @baol

Original creation time: 2010-12-12 08:58:04

Assignee: @baol

Version: 0.5.1

Cannot compile SA algorithms in 0.5.0 and 0.5.1.

How to compile metslib?

Just wanna have a try, but meet the following error message:

config.status: error: cannot find input file: `Makefile.in'

Licensing clarification

Issue created by migration from Trac.

Original creator: rmattes

Original creation time: 2013-08-11 16:45:06

Assignee: @baol

In the metslib 0.5.3 release, abstract_search.hh only includes CPL copyright information. I wanted to verify that this file is indeed dual-licensed between GPLv3+ and CPL like the rest of the code.

autoreconf: error: automake failed with exit status: 1

AUTHORS     autom4te.cache  config     config.log   configure      COPYING       debian       INSTALL  Makefile.am  metslib.pc.in  README  shave.in  testmetslib-trunk-2020-05-13 ./autogen.sh 
configure.ac:40: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.
./lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
aclocal.m4:705: AM_INIT_AUTOMAKE is expanded from...
configure.ac:40: the top level
configure.ac:52: warning: The macro `AC_LANG_CPLUSPLUS' is obsolete.
configure.ac:52: You should run autoupdate.
./lib/autoconf/c.m4:262: AC_LANG_CPLUSPLUS is expanded from...
configure.ac:52: the top level
configure.ac:69: warning: The macro `AC_TRY_COMPILE' is obsolete.
configure.ac:69: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
configure.ac:69: the top level
configure.ac:107: warning: AC_OUTPUT should be used without arguments.
configure.ac:107: You should run autoupdate.
configure.ac:40: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.  For more info, see:
configure.ac:40: https://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:105: error: required file 'config/ltmain.sh' not found
metslib/Makefile.am:10: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
autoreconf: error: automake failed with exit status: 1

Mixed Integer-Continuous Optimization

Issue created by migration from Trac.

Original creator: vdebuen

Original creation time: 2012-01-27 12:22:17

Assignee: @baol

Version: 0.4.3

Hello

(Sorry for my poor english)

I'm Victor de Buen, from Bayes Forecast - Spain, the main developer of open source project TOL, and I'm thinking to create a port package to METSlib to be used by TOL users in order to solve complex problems of real bussines world.

In this kind of problems, we can do almost no assumption over domain, restrictions nor behaviour of variables and cost function. Some times, evaluation of cost function is not analytical, you cannot express as a mathematical formulae, you have only a black-box process that takes a set of parameters and returns a value.

For continuous domain problems we use IPOPT, when gradient and hessian are available, and NLOPT when we have only the gradient or even a non continuous cost function.

We have no speciallized method for integer or mixed-integer problems, and I think that meta-heuristic algorithms are the best option in real world problems.

I supose that algorithms will be much more efficient when user gives specific methods to manage moving, and other algorithm related methods, but I'm afraid that many times user don't know almost anything about the problem except the cost function. However, the CPU time is everytime cheaper, so it could be sufficient having a low convergence rating.

I've readed the documentation, the source code and the examples and I believe that is a good option for TOL due to it's written in C and have a wide battery of algorithms. I don't know much about meta-heuristic methods and I don't understand very well the neighbourhood-related methods. It's mandatory to define a problem-dependent moving methods, or it exists a default one that works for a black-box cost function? I have the same doubt about specific methods to configuration of algorithms like tabu related methods.

Thanks in advance.

install on windows

Issue created by migration from Trac.

Original creator: FabioKnupp

Original creation time: 2015-05-13 17:29:50

Assignee: @baol

Version: 0.5.1

Keywords: install

Poderiam por favor me mandar um explicativo de como instalar a biblioteca no windows? Uso a IDE codeblocks mingw 4.8

agradeço desde já

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.