connor-makowski / scx

MIT's Supply Chain Python Package

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SCx

PyPI version License: MIT

MIT's Supply Chain Micromaster (SCx) Python Package

Documentation

Technical documentation can be found here.

Examples

Setup

Cloud Setup (Google Colab)

  • You can access google colab here
  • Create a new notebook
  • Install the scx package by adding the following to a new code cell at the top of your notebook and running it:
    • pip install scx

Local Setup

Make sure you have Python 3.7.x (or higher) installed on your system. You can download it here.

Recommended (but Optional) -> Expand this section to setup and activate a virtual environment.
  • Install (or upgrade) virtualenv:
python3 -m pip install --upgrade virtualenv
  • Create your virtualenv named venv:
python3 -m virtualenv venv
  • Activate your virtual environment
    • On Unix (Mac or Linux):
    source venv/bin/activate
    
    • On Windows:
    venv\scripts\activate
    
pip install scx

Optimization Getting Started

See all of the optimization examples here.

Basic Usage

from scx.optimize import Model

Simple Optimization

from scx.optimize import Model

# Create variables
product_1_amt = Model.variable(name="product_1", lowBound=0)
product_2_amt = Model.variable(name="product_2", lowBound=0)

# Initialize the model
my_model = Model(name="Generic_Problem", sense='maximize')

# Add the Objective Fn
my_model.add_objective(
    fn = (product_1_amt*1)+(product_2_amt*1)
)

# Add Constraints
my_model.add_constraint(
    name = 'input_1_constraint',
    fn = product_1_amt*1+product_2_amt*2 <= 100
)
my_model.add_constraint(
    name = 'input_2_constraint',
    fn = product_1_amt*3+product_2_amt*1 <= 200
)

# Solve the model
my_model.solve(get_duals=True, get_slacks=True)

# Show the outputs
# NOTE: outputs can be fetched directly as a dictionary with `my_model.get_outputs()`
my_model.show_outputs()

Outputs:

{'duals': {'input_1_constraint': 0.4, 'input_2_constraint': 0.2},
 'objective': 80.0,
 'slacks': {'input_1_constraint': -0.0, 'input_2_constraint': -0.0},
 'status': 'Optimal',
 'variables': {'product_1': 60.0, 'product_2': 20.0}}

About

MIT's Supply Chain Python Package

License:MIT License


Languages

Language:Jupyter Notebook 93.6%Language:Python 6.3%Language:Shell 0.2%