nariaki3551 / ppulp

An extension PuLP, linear programming modeling tool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ppulp

P(retty)PuLP is an extension of PuLP, linear programming problem modeling tool using flopt. You can use the basic features of pulp and the following useful extensions to make modeling simpler.

document

Documentation Status PyPI version License: MIT


Install

PyPI

pip install ppulp

GitHub

git clone https://github.com/nariaki3551/ppulp.git

Features

  • Variable product
  • If-then constraints
  • Absolute values
  • Piecewise linear approximation of nonlinear functions
  • Logical operations (And, Or, Xor)
  • Reduction (Sum, Prod)

Examples

Variables productions

# from pulp import *
from ppulp import *

# create variables
x = LpVariable("x", cat="Binary")
y = LpVariable("y", cat="Binary")

# create variable production
z = x * y

If-then constriant

from ppulp import *

x = LpVariable("x", lowBound=-1)
y = LpVariable("y", lowBound=-1)

prob = LpProblem(sense="Minimize")

# add if-then constraints
prob += (x <= 0) >> (y >= 0)  # if (x <= 0) then (y >= 0)
prob += (y <= 0) >> (x >= 0)  # if (y <= 0) then (x >= 0)

Absolution value

x = LpVariable("x")
y = LpVariable("y")
Abs(x+y)

Approximation of nonlinear functions

from ppulp import *
import math

x = LpVariable("x", lowBound=3)
y = LpVariable("y", lowBound=4)

# create non-linear function
f = PiecewiseLinear(math.log, xl=7, xu=100, num=3)

prob = LpProblem()
prob += f(x + y)
prob += f(x) >= 10

Reduction

from ppulp import *

x = [LpVariable(name=f"x{i}", ini_value=2) for i in range(5)]

# summation
lpSum(x)

# production
lpProd(x)

Learning more

document

About

An extension PuLP, linear programming modeling tool

License:MIT License


Languages

Language:Python 100.0%