Skip to main content

Write Math, Run Python. A Language for Optimization Specification (LOS).

Project description

LOS — Language for Optimization Specification

License: MIT Python 3.9+ Security: Hardened

LOS is a Language for Optimization Specification. It compiles human-readable model definitions into executable Python code (currently using PuLP as the primary engine), keeping your business logic clean and your data pipeline separate.

"Write Math, Run Python."


Installation

pip install los-lang

Or install from source:

git clone https://github.com/jowpereira/los.git
cd los
pip install -e .

Quick Start

1. Write a Model (production.los)

import "products.csv"
import "factories.csv"

set Products
set Factories

param Cost[Products]
param Capacity[Factories]

var qty[Products, Factories] >= 0

minimize:
    sum(qty[p,f] * Cost[p] for p in Products, f in Factories)

subject to:
    capacity_limit:
        sum(qty[p,f] for p in Products) <= Capacity[f]
        for f in Factories

2. Prepare Data

products.csv

Products,Cost
WidgetA,10
WidgetB,15

factories.csv

Factories,Capacity
Factory1,1000
Factory2,2000

3. Solve (solve.py)

import los

result = los.solve("production.los")

if result.is_optimal:
    print(f"Optimal Cost: {result.objective}")
    print(result.get_variable("qty", as_df=True))

Why LOS?

Feature LOS Raw PuLP/Pyomo
Readability Whiteboard-like syntax Python boilerplate
Data Binding Native CSV imports Manual DataFrame wrangling
Security Sandboxed execution Full Python access
Debug Inspect generated code (model.code()) Black box
Solver CBC, GLPK, Gurobi, CPLEX (via PuLP) Same
Backends PuLP (Pyomo planned) N/A

Advanced: Manual Data Binding

For dynamic data (APIs, databases), inject DataFrames directly:

import los
import pandas as pd

df = pd.DataFrame({"Products": ["A", "B"], "Cost": [10, 20]})

result = los.solve("model.los", data={"Products": df})

Documentation

Document Description
User Manual Full syntax reference and API guide
Security Policy Sandbox details and threat model
Changelog Version history
Backlog Roadmap and future features
Contributing How to contribute

License

MIT © Jonathan Pereira

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

los_lang-3.3.7.tar.gz (280.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

los_lang-3.3.7-py3-none-any.whl (78.7 kB view details)

Uploaded Python 3

File details

Details for the file los_lang-3.3.7.tar.gz.

File metadata

  • Download URL: los_lang-3.3.7.tar.gz
  • Upload date:
  • Size: 280.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for los_lang-3.3.7.tar.gz
Algorithm Hash digest
SHA256 102ef55433f2ac2104dafed9f2008479177953e10a7723d5ff6572c170ff0d08
MD5 3ed9d54e6f64f0db2cbfbdc3ab00f791
BLAKE2b-256 4994cedf2e91ecec9f9a0d01cd9ff6f0ed62f6f30a9f82af274d12e14d606937

See more details on using hashes here.

File details

Details for the file los_lang-3.3.7-py3-none-any.whl.

File metadata

  • Download URL: los_lang-3.3.7-py3-none-any.whl
  • Upload date:
  • Size: 78.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for los_lang-3.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 59800c82845fc199f9608826f408c5aa59f7e51f7353dac06b3d256ffc3706e3
MD5 87b4bf4230fdb1a70607d8da4a1605bd
BLAKE2b-256 16f48120d434bdb4e1db1d315b18403e7cab542567d22d1ef720eef2210de236

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page