• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ds4dm/Tulip.jl: Interior-point solver in pure Julia

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

ds4dm/Tulip.jl

开源软件地址:

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

开源编程语言:

Julia 100.0%

开源软件介绍:

Tulip

DOI

Documentation Build Status Coverage
Docs Docs-dev Build Codecov

Overview

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.

Installation

Just install like any Julia package

] add Tulip

Usage

The recommended way of using Tulip is through JuMP and/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:

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, e.g., Float64 or BigFloat. This allows to solve problem in higher numerical precision. See the documentation for more details.

import MathOptInterface
MOI = MathOptInterface
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

Setting parameters

When using Tulip through JuMP/MOI, parameters can be set either through MOI's generic OptimizerAttributes, e.g., MOI.TimeLimitSec and MOI.Silent, or by name.

  • Through JuMP

    jump_model = JuMP.Model(Tulip.Optimizer)
    
    JuMP.set_optimizer_attribute(jump_model, "IPM_IterationsLimit", 200)
  • Through MOI

    moi_model = Tulip.Optimizer{Float64}()
    
    MOI.set(moi_model, MOI.RawOptimizerAttribute("IPM_IterationsLimit"), 200)
  • Through Tulip's API

    model = Tulip.Model{Float64}()
    
    Tulip.set_parameter(model, "IPM_IterationsLimit", 200)

Parameters description

See the documentation.

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},
}



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap