Giter VIP home page Giter VIP logo

gelpia-cs6230's Introduction

#Global Extrema Locator Parallelization for Interval Arithmetic

##Gelpia algorithm Gelpia is a cooperative, interval-arithmetic branch-and-bound based algorithm (IBBA). It rigorously finds an upper bound on the global maximum of a multivariate function on a given interval. This means that its answer is guaranteed to be above the global maximum on the interval when evaluated using real arithmetic.
Gelpia is a cooperative solver in the sense that we concurrently run fast, approximate algorithms which find local maxima to inform the IBBA of new lower bounds. This causes the IBBA to refocus its attention on more promising regions of the search space. Meanwhile, the IBBA informs the cooperative algorithms of the search space currently being explored to keep them focused on trying to find the global maximum. We have found that this bi-directional communication significantly reduces runtime, allowing us to handle functions with many variables.

##Building and usage Known to build on Ubuntu 14.04 through 16.04
Currently only Linux is explicitly supported.

  • Requirements:
    • Not included:
      • python3
        • ply
      • bison
      • flex
      • c++ compiler
      • c compiler
      • wget
    • Included:
      • rust nightly
      • gaol
      • crlibm

For automatic building of the requirements run make requirements
For building by hand see documents/BuildingRequirements

Once requirements are met, gelpia may be compiled by running make
This runs Rust's cargo build system as well as adding the correct files to bin for execution.

Gelpia may then be ran, it is an executable gelpia in the bin directory.
It has a built in help system for argument clarification.
A file may be specified which has arguments in it, one per line, this filename must be preceded by the @ symbol. The benchmarks/fptaylor_generated directory has many of these files.
Additional arguments, or overwiting arguments, may be specified after the file.

####Example uses:

>./bin/gelpia @benchmarks/fptaylor_generated/gelpia_jet.txt
[119895.48836548299, {
'x2' : [4.993896484375, 5],
'x1' : [4.990234375, 5],
}]
Solver time: 0.21112608909606934

Overriding input tolerance

>./bin/gelpia @benchmarks/fptaylor_generated/gelpia_jet.txt -ie 1e-15
[118943.03731237334, {
'x2' : [4.999999976716935, 5],
'x1' : [4.999999981373548, 5],
}]
Solver time: 0.34747815132141113

###Dreal dOp format support We currently support a subset of Dreal's dOp optimizer input format. An example can be found at benchmarks/dop_benchmarks/pows.dop. Full examples can be found in benchmarks/dreal_dop_benchmarks

####An example run:

>./bin/dop_gelpia benchmarks/dop_benchmarks/pows.dop
[390625, {
'x' : [4.9990234375, 5],
}]

Parsing time: 0.07706475257873535
Solver time: 0.3199582099914551

Gelpia's dOp mode cannot currently handle constraints as constraint propogation is not currently implemented.

##Issues Gelpia may outlive the supplied time limit. This is because it goes through the remaining branches in the priority queue โ€“ this can sometimes be a lengthy process. This is why we have a grace option which is an additional grace period after the supplied timeout before gelpia is killed hard.

When used for minimization, Gelpia will report a guaranteed lower bound on the global minimum.

Authors

Gelpia is authored by Mark S. Baranowski and Ian Briggs

gelpia-cs6230's People

Contributors

keram88 avatar wfchiang avatar ianbriggs avatar

Watchers

 avatar  avatar

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.