Tulip

Interior-point solver in pure Julia

https://github.com/ds4dm/tulip.jl

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.7%) to scientific vocabulary

Keywords

interior-point-method julia linear-programming optimization

Keywords from Contributors

optim fluxes matrix-exponential optimisation unconstrained-optimisation julialang unconstrained-optimization graphics convex-optimization semidefinite-programming
Last synced: 4 months ago · JSON representation ·

Repository

Interior-point solver in pure Julia

Basic Info
  • Host: GitHub
  • Owner: ds4dm
  • License: other
  • Language: Julia
  • Default Branch: master
  • Homepage:
  • Size: 1.64 MB
Statistics
  • Stars: 158
  • Watchers: 7
  • Forks: 21
  • Open Issues: 17
  • Releases: 25
Topics
interior-point-method julia linear-programming optimization
Created over 7 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License Citation

README.md

Tulip

DOI

Tulip is an open-source interior-point solver for linear optimization, written in pure Julia. It implements the homogeneous primal-dual interior-point algorithm with multiple centrality corrections, and therefore handles unbounded and infeasible problems. Tulip’s main feature is that its algorithmic framework is disentangled from linear algebra implementations. This allows to seamlessly integrate specialized routines for structured problems.

License

Tulip is licensed under the MPL 2.0 license.

Installation

Install Tulip using the Julia package manager:

julia import Pkg Pkg.add("Tulip")

Usage

The recommended way of using Tulip is through JuMP or MathOptInterface (MOI).

The low-level interface is still under development and is likely change in the future. The MOI interface is more stable.

Using with JuMP

Tulip follows the syntax convention PackageName.Optimizer:

julia using JuMP import Tulip model = Model(Tulip.Optimizer)

Linear objectives, linear constraints and lower/upper bounds on variables are supported.

Using with MOI

The type Tulip.Optimizer is parametrized by the model's arithmetic, for example, Float64 or BigFloat. This allows to solve problem in higher numerical precision. See the documentation for more details.

julia import MathOptInterface as MOI import Tulip model = Tulip.Optimizer{Float64}() # Create a model in Float64 precision model = Tulip.Optimizer() # Defaults to the above call model = Tulip.Optimizer{BigFloat}() # Create a model in BigFloat precision

Solver parameters

See the documentation for a full list of parameters.

To set parameters in JuMP, use: julia using JuMP, Tulip model = Model(Tulip.Optimizer) set_attribute(model, "IPM_IterationsLimit", 200)

To set parameters in MathOptInterface, use: julia using Tulip import MathOptInterface as MOI model = Tulip.Optimizer{Float64}() MOI.set(model, MOI.RawOptimizerAttribute("IPM_IterationsLimit"), 200)

To set parameters in the Tulip API, use: julia using Tulip model = Tulip.Model{Float64}() Tulip.set_parameter(model, "IPM_IterationsLimit", 200)

Command-line executable

See app building instructions.

Citing Tulip.jl

If you use Tulip in your work, we kindly ask that you cite the following reference (preprint available here).

@Article{Tulip.jl, author = {Tanneau, Mathieu and Anjos, Miguel F. and Lodi, Andrea}, journal = {Mathematical Programming Computation}, title = {Design and implementation of a modular interior-point solver for linear optimization}, year = {2021}, issn = {1867-2957}, month = feb, doi = {10.1007/s12532-020-00200-8}, language = {en}, url = {https://doi.org/10.1007/s12532-020-00200-8}, urldate = {2021-03-07}, }

Owner

  • Name: CERC Data Science For Decision Making
  • Login: ds4dm
  • Kind: organization
  • Location: Montreal

Citation (CITATION.bib)

@TechReport{Tulip.jl,
    title = {{Tulip}.jl: an open-source interior-point linear optimization
    solver with abstract linear algebra},
    url = {https://www.gerad.ca/fr/papers/G-2019-36},
    Journal = {Les Cahiers du Gerad},
    Author = {Anjos, Miguel F. and Lodi, Andrea and Tanneau, Mathieu},
    year = {2019}
}

GitHub Events

Total
  • Create event: 4
  • Commit comment event: 7
  • Release event: 1
  • Issues event: 5
  • Watch event: 5
  • Delete event: 3
  • Issue comment event: 7
  • Push event: 15
  • Pull request review comment event: 1
  • Pull request review event: 3
  • Pull request event: 14
Last Year
  • Create event: 4
  • Commit comment event: 7
  • Release event: 1
  • Issues event: 5
  • Watch event: 5
  • Delete event: 3
  • Issue comment event: 7
  • Push event: 15
  • Pull request review comment event: 1
  • Pull request review event: 3
  • Pull request event: 14

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 365
  • Total Committers: 11
  • Avg Commits per committer: 33.182
  • Development Distribution Score (DDS): 0.099
Past Year
  • Commits: 6
  • Committers: 3
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.5
Top Committers
Name Email Commits
mtanneau m****u@g****m 329
github-actions[bot] 4****] 8
Oscar Dowson o****w 8
Mathieu Besançon m****n@g****m 6
Alexis 3****n 6
Pratyai Mazumder p****r@g****m 2
Neven Sajko s@p****m 2
Julia TagBot 5****t 1
Fredrik Ekre e****k@g****m 1
David Widmann d****n 1
Benoît Legat b****t@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 34
  • Total pull requests: 86
  • Average time to close issues: 4 months
  • Average time to close pull requests: 14 days
  • Total issue authors: 25
  • Total pull request authors: 13
  • Average comments per issue: 3.21
  • Average comments per pull request: 1.08
  • Merged pull requests: 74
  • Bot issues: 0
  • Bot pull requests: 10
Past Year
  • Issues: 3
  • Pull requests: 7
  • Average time to close issues: 7 days
  • Average time to close pull requests: 10 days
  • Issue authors: 3
  • Pull request authors: 4
  • Average comments per issue: 1.33
  • Average comments per pull request: 0.86
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • freemin7 (4)
  • nsajko (3)
  • stelmo (2)
  • mtanneau (2)
  • pratyai (2)
  • blegat (2)
  • juliohm (1)
  • mohamed82008 (1)
  • exaexa (1)
  • JuliaTagBot (1)
  • dpo (1)
  • ericphanson (1)
  • joehuchette (1)
  • dellamonica (1)
  • ketch (1)
Pull Request Authors
  • mtanneau (47)
  • github-actions[bot] (10)
  • amontoison (9)
  • odow (8)
  • nsajko (4)
  • pratyai (3)
  • yuyichao (2)
  • ericphanson (2)
  • matbesancon (2)
  • devmotion (1)
  • blegat (1)
  • fredrikekre (1)
  • JuliaTagBot (1)
Top Labels
Issue Labels
bug (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • julia 126 total
  • Total dependent packages: 6
  • Total dependent repositories: 0
  • Total versions: 25
juliahub.com: Tulip

Interior-point solver in pure Julia

  • Versions: 25
  • Dependent Packages: 6
  • Dependent Repositories: 0
  • Downloads: 126 Total
Rankings
Stargazers count: 5.1%
Average: 8.3%
Forks count: 8.9%
Dependent packages count: 9.4%
Dependent repos count: 9.9%
Last synced: 4 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
.github/workflows/Documentation.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite