Skip to main content

Python client for SaaS optimization API

Project description

opticlient

A lightweight Python client for interacting with the SaaS optimization API.
This package provides a clean interface for submitting optimization jobs, polling their status, and retrieving results.

Currently supported tools:

  • MaxSAT - solves a .wcnf instance in the format of "maxsat evaluation" - post 2022
  • Single Machine Scheduling (sms) — submit an Excel instance and obtain an ordered job schedule.

More tools will be added in future versions.

For details visit: https://github.com/Milan-Adhikari/opticlient


Installation

pip install opticlient

Quick Usage Guide

opticlient requires an API key, which you obtain from the website https://cad-eta.vercel.app

You can provide it in either of three ways:

Option 1 - .env file (recommended)

# create a .env file and set the api token in it
OPTICLIENT_API_TOKEN="YOUR_API_KEY"

Option 2 - Environment variable

export OPTICLIENT_API_TOKEN="YOUR_API_KEY"

Option 3 - Pass directly in code

from opticlient import MaxSAT, OptiClient

solver = MaxSAT(api_token="YOUR_API_KEY")
client = OptiClient(api_token="YOUR_API_KEY")

Basic usage: MaxSAT

# use case for maxsat
from opticlient import MaxSAT

# solving from a file
solver = MaxSAT("filename.wcnf")  # reads token/base URL from environment if available
x = solver.optimize()
print("solution:", x)

# solving without a file
solver = MaxSAT()  # reads token/base URL from environment if available
solver.addClause([1,2])
solver.addClause([-1,2])
solver.setObjective({2 : -1 })
x = solver.optimize()
print("solution:", x)

Sample .wcnf File format

c Example WCNF file (post-2023 MaxSAT Evaluation format)
c Offset: 0

h 1 -2 3 0
h -1 4 0

5 2 -3 0
3 -4 0
1 5 0

Basic usage: Single Machine Scheduling

The SMS tool takes an Excel file describing a scheduling instance and returns an ordered sequence of jobs. You can download the sample Excel file from https://cad-eta.vercel.app or see below.

# use case for single machine scheduling problem
from opticlient import OptiClient

client = OptiClient()  # reads token/base URL from environment if available

schedule = client.sms.run(
    file_path="instance.xlsx",
    description="Test run",
)

print("Job schedule:")
for job in schedule:
    print(job)

Sample Excel File format

Job Job1 Job2 Job3 Job4
Job1 0 2 1 1
Job2 3 0 1 1
Job3 5 4 1 2
Job4 2 2 1 0

Versioning

This package follows semantic versioning:

  • 0.x — early releases, API may change
  • 1.0+ — stable API

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

opticlient-0.1.6.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

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

opticlient-0.1.6-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file opticlient-0.1.6.tar.gz.

File metadata

  • Download URL: opticlient-0.1.6.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for opticlient-0.1.6.tar.gz
Algorithm Hash digest
SHA256 e860f8d915dcfdfb4b7a4653ae8c35777908864960806e868d2c8cfb3e4133af
MD5 350da7ef90ebbe408a1342caf3716715
BLAKE2b-256 a45302e48203e76f24700d0025cddc0fa25a76b4ded37d234e1029af6b6ebacb

See more details on using hashes here.

File details

Details for the file opticlient-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: opticlient-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for opticlient-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 21c654071217ebfbc04a63762e3593b1588196008d8e9236b7addae9595e7fd0
MD5 70fd828f3da09ff125ee4ba86f57a20d
BLAKE2b-256 21ca32398078915e65ba249628d4151f0752833c557176a00320d79d228c66ba

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