All Projects → erikerlandson → gibbous

erikerlandson / gibbous

Licence: Apache-2.0 License
Convex optimization for java and scala, built on Apache Commons Math

Programming Languages

java
68154 projects - #9 most used programming language
scala
5932 projects
HTML
75241 projects

Projects that are alternatives of or similar to gibbous

portfolio allocation js
A JavaScript library to allocate and optimize financial portfolios.
Stars: ✭ 145 (+752.94%)
Mutual labels:  linear-programming, optimization-algorithms, quadratic-programming, convex-optimization
pydata-london-2018
Slides and notebooks for my tutorial at PyData London 2018
Stars: ✭ 22 (+29.41%)
Mutual labels:  linear-programming, quadratic-programming, convex-optimization
qpmad
ROS-compatible Eigen-based Goldfarb-Idnani quadratic programming solver
Stars: ✭ 41 (+141.18%)
Mutual labels:  optimization, optimization-algorithms, quadratic-programming
osqp
The Operator Splitting QP Solver
Stars: ✭ 929 (+5364.71%)
Mutual labels:  optimization, quadratic-programming, convex-optimization
Optimization
A set of lightweight header-only template functions implementing commonly-used optimization methods on Riemannian manifolds and convex spaces.
Stars: ✭ 66 (+288.24%)
Mutual labels:  optimization, convex-optimization
awesome-nn-optimization
Awesome list for Neural Network Optimization methods.
Stars: ✭ 39 (+129.41%)
Mutual labels:  optimization, convex-optimization
ProxSDP.jl
Semidefinite programming optimization solver
Stars: ✭ 69 (+305.88%)
Mutual labels:  optimization, convex-optimization
zoofs
zoofs is a python library for performing feature selection using a variety of nature-inspired wrapper algorithms. The algorithms range from swarm-intelligence to physics-based to Evolutionary. It's easy to use , flexible and powerful tool to reduce your feature size.
Stars: ✭ 142 (+735.29%)
Mutual labels:  optimization, optimization-algorithms
GurobiLink
Wolfram Language interface to the Gurobi numerical optimization library
Stars: ✭ 16 (-5.88%)
Mutual labels:  optimization-algorithms, convex-optimization
geneal
A genetic algorithm implementation in python
Stars: ✭ 47 (+176.47%)
Mutual labels:  optimization, optimization-algorithms
good lp
Linear Programming for Rust, with an user-friendly API. This crate allows modeling LP problems, and let's you solve them with various solvers.
Stars: ✭ 77 (+352.94%)
Mutual labels:  optimization, linear-programming
FirstOrderSolvers.jl
Large scale convex optimization solvers in julia
Stars: ✭ 20 (+17.65%)
Mutual labels:  optimization-algorithms, convex-optimization
rmpk
Mixed Integer Linear and Quadratic Programming in R
Stars: ✭ 37 (+117.65%)
Mutual labels:  linear-programming, quadratic-programming
biteopt
Derivative-Free Optimization Method for Global Optimization (C++)
Stars: ✭ 91 (+435.29%)
Mutual labels:  constraint-programming, optimization-algorithms
nuxt-prune-html
🔌⚡ Nuxt module to prune html before sending it to the browser (it removes elements matching CSS selector(s)), useful for boosting performance showing a different HTML for bots/audits by removing all the scripts with dynamic rendering
Stars: ✭ 69 (+305.88%)
Mutual labels:  optimization, optimization-algorithms
procrustes
Python library for finding the optimal transformation(s) that makes two matrices as close as possible to each other.
Stars: ✭ 48 (+182.35%)
Mutual labels:  optimization, optimization-algorithms
Joint-User-Association-and-In-band-Backhaul-Scheduling-and-in-5G-mmWave-Networks
Matlab Simulation for T. K. Vu, M. Bennis, S. Samarakoon, M. Debbah and M. Latva-aho, "Joint In-Band Backhauling and Interference Mitigation in 5G Heterogeneous Networks," European Wireless 2016; 22th European Wireless Conference, Oulu, Finland, 2016, pp. 1-6. URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7499273&isnumber=7499250
Stars: ✭ 36 (+111.76%)
Mutual labels:  optimization, convex-optimization
Nonlinear-Optimization-Algorithms
MATLAB implementations of a variety of nonlinear programming algorithms.
Stars: ✭ 86 (+405.88%)
Mutual labels:  optimization, optimization-algorithms
minizinc-python
Access to all MiniZinc functionality directly from Python
Stars: ✭ 92 (+441.18%)
Mutual labels:  linear-programming, constraint-programming
benchopt
Making your benchmark of optimization algorithms simple and open
Stars: ✭ 89 (+423.53%)
Mutual labels:  optimization-algorithms, convex-optimization

gibbous

Convex optimization built on Apache Commons Math

Implementation of the Barrier Method from §11.3 of Convex Optimization, Boyd and Vandenberghe, Cambridge University Press, 2004

Documentation

Full API javadoc is available at: https://erikerlandson.github.io/gibbous/java/api/

Some examples are included below.

How to include gibbous in your project

gibbous is a java project, and so can be used either with java or scala.

Versions prior to gibbous 0.3.0 were published to bintray, which is no longer operative. It is now available through oss.sonatype.org

gibbous 0.3.0 is equivalent to 0.2.x, with the exception of now including "org.apache.commons" % "commons-math3" % "3.6.1" as an explicit dependency.

libraryDependencies ++= "com.manyangled" % "gibbous" % "0.3.0"

Examples

Minimize a convex function under constraints
import org.apache.commons.math3.optim.PointValuePair;
import org.apache.commons.math3.optim.InitialGuess;
import org.apache.commons.math3.optim.nonlinear.scalar.ObjectiveFunction;

import com.manyangled.gibbous.optim.convex.*;

// create a convex objective function
QuadraticFunction q = new QuadraticFunction(
    new double[][] { { 1.0, 0.0 }, { 0.0, 1.0 } },
    new double[] { 0.0, 0.0 },
    0.0);

// optimize function q with an inequality constraint and an equality constraint,
// using the barrier method
BarrierOptimizer barrier = new BarrierOptimizer();
PointValuePair pvp = barrier.optimize(
    new ObjectiveFunction(q),
    new LinearInequalityConstraint(
        new double[][] { { -1.0, 0.0 } }, // constraint x > 1,
        new double[] { -1.0 }),
    new LinearEqualityConstraint(
        new double[][] { { 0.0, 1.0 } },  // constraint y = 1,
        new double[] { 1.0 }),
    new InitialGuess(new double[] { 10.0, 10.0 }));

double[] xmin = pvp.getFirst();  // { 1.0, 1.0 }
double vmin = pvp.getSecond();   // 1.0
Using a feasible point solver to get a feasible initial guess
import org.apache.commons.math3.optim.PointValuePair;
import org.apache.commons.math3.optim.InitialGuess;
import org.apache.commons.math3.optim.nonlinear.scalar.ObjectiveFunction;

import com.manyangled.gibbous.optim.convex.*;

// create a convex objective function
QuadraticFunction q = new QuadraticFunction(
    new double[][] { { 1.0, 0.0 }, { 0.0, 1.0 } },
    new double[] { 0.0, 0.0 },
    0.0);

// Declare constraints separately to use for solving a feasible point
LinearInequalityConstraint ineqc = new LinearInequalityConstraint(
    new double[][] { { -1.0, 0.0 } }, // constraint x > 1,
    new double[] { -1.0 });
LinearEqualityConstraint eqc = new LinearEqualityConstraint(
    new double[][] { { 0.0, 1.0 } },  // constraint y = 1,
    new double[] { 1.0 });

// solve for a feasible point that satisfies the constraints
PointValuePair fpvp = ConvexOptimizer.feasiblePoint(ineqc, eqc);
// if not < 0, there is no feasible point
assert fpvp.getSecond() < 0.0;
double[] ig = fpvp.getFirst();

// optimize function q with the same contraints, using the feasible point
// for the initial guess
BarrierOptimizer barrier = new BarrierOptimizer();
PointValuePair pvp = barrier.optimize(
    new ObjectiveFunction(q),
    ineqc,
    eqc,
    new InitialGuess(ig));

double[] xmin = pvp.getFirst();  // { 1.0, 1.0 }
double vmin = pvp.getSecond();   // 1.0
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].