Git Product home page Git Product logo

lip-bfgs's Introduction

What is LIP-BFGS?

LIP-BFGS stands for Limited-memory Interior-Point Broyden-Fletcher-Goldfarb-Shanno algorithm; and is simply a an interior-point (IP) method which uses the limited-memory BFGS (L-BFGS) algorithm.

LIP-BFGS was written in Matlab by Jesse Lu in the fall of 2011.

Why use LIP-BFGS?

  1. LIP-BFGS can handle large problems (x with millions of elements).
  2. LIP-BFGS is easy to modify. The algorithm and implementation are simple and well-documented.
  3. LIP-BFGS is free. Free as in public domain (see License), you can use it in any way you like.

Installing and running LIP-BFGS

To install LIP-BFGS, simply extract all files to a directory.

To use LIP-BFGS, simply open matlab within the directory, and run the example program from the Matlab command line. The test_all program can also be run from the Matlab command line.

Documentation

All Matlab functions are well documented. To start, try typing help lip_bfgs from the Matlab command line.

To understand the algorithm, look at theory.pdf.

What problem does LIP-BFGS solve?

LIP-BFGS is designed to minimize an objective function with linear equality constraints and simple bounds on the variables:

minimize f(x)
subject to  Ax - b = 0
            l <= x <= u.

In particular, LIP-BFGS is geared towards problems where the size of x is large (i.e. > 1 million elements).

Using LIP-BFGS

LIP-BFGS only requires the following input parameters:

  1. x, a vector of length n. The initial value for the optimization.
  2. g(x), the gradient of the design objective, f(x). A function which returns a vector of length n.
  3. A and b, the matrix and vector defining the equality constraint. A must be of size p by n and b must be of length p.
  4. l and u, the bound constraints on x. Both must be real-valued and of length n.

Note on using complex values

LIP-BFGS still works with complex-valued x, g(x), A, and b; however, the bounds on x, l and u, only apply to the real-part of x and therefore must be real-valued. Lastly, f(x) is required to return a real-valued scalar as well.

License

LIP-BFGS is public domain. Feel free to use and modify as you like.

lip-bfgs's People

Contributors

jesselu 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.