Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 26.1.8.3 instead.
Reason given by maintainers: old

AIMMS Python library

This is a BETA version of the AIMMS Python library. Any feedback, bug reports, or feature requests are welcome.

With this library it is possible to interact with AIMMS models from Python.

Features

  • Seamless integration with AIMMS models from Python
  • Assign and retrieve data using Python dicts, Pandas, Polars, or Arrow tables
  • Execute AIMMS procedures and retrieve results programmatically
  • Built with pybind11 for high-performance C++ integration
  • Flexible data return types for different workflows

Getting Started

To use the AIMMS Python library, you need to have an AIMMS developer version installed (see https://www.aimms.com/support/downloads/), a valid license (see https://licensing.aimms.cloud/license) and an already existing AIMMS project. Below is a step-by-step example of how to use the library to solve a simple transportation optimization problem.

Step 1: Initialize the AIMMS Project

First, initialize the AIMMS project by specifying the AIMMS executable path, project path, and other configurations.

Note: Ensure that the aimms_path points to a valid AIMMS Bin (or Lib on linux) folder of an installed AIMMS version. You use can the utility function find_aimms_path to automatically search your system for that path.

import os

from aimmspy.project.project import DataReturnTypes, Project, AimmsException, AimmsPyException, Model
from aimmspy.utils import find_aimms_path


# Initialize the AIMMS project
project = Project(
    # path to the AIMMS Bin folder (on linux the Lib folder)
    aimms_path=find_aimms_path("25.4.3.3"),

    # path to the AIMMS project
    aimms_project_file=R"C:\AimmsProjects\MyAimmsProject\MyAimmsProject.aimms",

    # url
    license_url=R"wss://licensing.aimms.cloud/license-ws/license?profile=community&license=12345678-90ab-cdef-1234-567890abcdef"
)
my_aimms : Model = project.get_model(__file__)

Step 2: Assign Data to Parameters

This is an example of assigning data to parameters with Pandas DataFrames.

demand_df = pd.DataFrame({
    "c": ["Houston", "Phoenix", "Philadelphia"],
    "demand": [50.0, 60.0, 40.0]
})

supply_df = pd.DataFrame(data={
    "w": ["NewYork", "LosAngeles", "Chicago"],
    "supply": [70.0, 80.0, 60.0]
})

unit_transport_cost_df = pd.DataFrame({
    "w": ["NewYork", "NewYork", "NewYork", "LosAngeles", "LosAngeles", "LosAngeles", "Chicago", "Chicago", "Chicago"],
    "c": ["Houston", "Phoenix", "Philadelphia", "Houston", "Phoenix", "Philadelphia", "Houston", "Phoenix", "Philadelphia"],
    "unit_transport_cost": [5.0, 6.0, 4.0, 3.0, 2.0, 7.0, 4.0, 5.0, 3.0]
})

my_aimms.demand.assign( demand_df)
my_aimms.supply.assign( supply_df)
my_aimms.unit_transport_cost.assign( unit_transport_cost_df)

You can assign doubles, integers, strings to AIMMS parameters. The library will automatically convert the data types to the appropriate AIMMS types. The sets will be filled automatically based on the data you assign to the parameters.

Step 3: Execute the Optimization Procedure

It is possible in AIMMS to define procedures that encapsulate the logic of your optimization model. These procedures can be executed from Python using the AIMMS Python library. In this example we run the main procedure in the AIMMS project to solve the optimization problem.

my_aimms.MainExecution()

It is also possible to run procedures with arguments for example:

my_aimms.run_procedure(test1=5.0, test2=10.0, test3="hello")

Make sure the order of the arguments is correct, as well as the types.

Step 4: Retrieve and Display Results

Retrieve the results of the optimization, such as the total transport cost and the transport plan.

# Retrieve results
print(f"Total Transport Cost: {my_aimms.total_transport_cost.data()}")
print(f"Transport Plan: {my_aimms.transport.data()}")

The .data() function is used to fetch the current value of an AIMMS identifier (e.g., a parameter, variable, or set) into Python. This function is efficient and only fetches data if it has changed since the last fetch.

Data Types Returned by .data()

depending on the data_type_preference you set in the Project constructor, the .data() function will return different types of Python objects:

Sets always return a list of strings.

For parameters and variables, .data() can return:

  • A scalar value (e.g., float or int or string) if the parameter or variable is scalar.
  • A dictionary where the keys are tuples of strings (representing indices) and the values are float, int, string.
  • A Arrow Table or Pandas or Polars DataFrame depending on the data_type_preference set in the Project constructor.

Example Output

Depending on you return type preference the python object returned from the .data() function will be different, the output for dictionaries can look like this:

Total Transport Cost: 150.0
Transport: {("NewYork", "Houston"): 30, ("LosAngeles", "Phoenix"): 50, ...}

for Pandas DataFrames can look like this:

Total Transport Cost: 150.0
Transport:
        w               c               transport
    0   NewYork         Houston         30
    1   LosAngeles      Phoenix         50
    2   Chicago         Philadelphia    40
    3   NewYork         Philadelphia    20

extra

it is possible to generate a stub file for your project which can greatly help with autocompletion in your IDE. This stub file contains all the identifiers in your AIMMS project and their types. You can generate this stub file by running the following command:

my_aimms.generate_stub_file( "my_project_stub.py" )

To use this stub file you can the following to the top of your python script:

from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from my_project_stub import Project

License

This project is licensed under the MIT License.

Support

For questions, bug reports, or feature requests, please contact AIMMS B.V. via support. Or post an question on the AIMMS Community. We are happy to help you with any issues or questions you may have.

Metadata

Release files for aimmspy 1.0.1.post141

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for aimmspy 1.0.1.post141
File
aimmspy-1.0.1.post141-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
aimmspy-1.0.1.post141-cp313-cp313-manylinux_2_27_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64 Details
aimmspy-1.0.1.post141-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
aimmspy-1.0.1.post141-cp312-cp312-manylinux_2_27_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64 Details
aimmspy-1.0.1.post141-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
aimmspy-1.0.1.post141-cp311-cp311-manylinux_2_27_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64 Details
aimmspy-1.0.1.post141-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
aimmspy-1.0.1.post141-cp310-cp310-manylinux_2_27_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64 Details

Total release size: 5.3 MB

Release files / aimmspy-1.0.1.post141-cp313-cp313-win_amd64.whl

Download URL aimmspy-1.0.1.post141-cp313-cp313-win_amd64.whl
Size 584.1 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
bf7bc622c3c2f094d749f74535c2a487799acd8e80835a7eceee481caaf1bf11
BLAKE2b-256 checksum
How to use checksums
4b5d4208f793194cb1ad78a9cb8b5faa36f36fc3d5d028a6dc338f1f28ee55f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / aimmspy-1.0.1.post141-cp313-cp313-manylinux_2_27_x86_64.whl

Download URL aimmspy-1.0.1.post141-cp313-cp313-manylinux_2_27_x86_64.whl
Size 741.3 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64
SHA-256 checksum
How to use checksums
76210d070e0175aa9be56291b8378000f0a477af39f9633ff48997a0215f34ea
BLAKE2b-256 checksum
How to use checksums
32d4d8d1954f5079e52dcbda6df937f4101a15cffa5ed9fd0d0659222af8a0a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / aimmspy-1.0.1.post141-cp312-cp312-win_amd64.whl

Download URL aimmspy-1.0.1.post141-cp312-cp312-win_amd64.whl
Size 584.2 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
e690219837200bcdeb3859ae19c2574f3879441f2a551ca4a61c99cdeec6d79e
BLAKE2b-256 checksum
How to use checksums
2de00d7d1b20b89f282e3ba8ed33c9c9eda2d0b2bace47cadf840735017c7a19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / aimmspy-1.0.1.post141-cp312-cp312-manylinux_2_27_x86_64.whl

Download URL aimmspy-1.0.1.post141-cp312-cp312-manylinux_2_27_x86_64.whl
Size 741.8 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64
SHA-256 checksum
How to use checksums
8bee44ac57146d860ae3dd715727811ec2bdc095410aa7f6d62b45790be5d972
BLAKE2b-256 checksum
How to use checksums
8aed469a451007fdcfda767ff95d6513d9a3ccc1d66ece60008ce43c30d577a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / aimmspy-1.0.1.post141-cp311-cp311-win_amd64.whl

Download URL aimmspy-1.0.1.post141-cp311-cp311-win_amd64.whl
Size 584.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
140cb8bc33be04b85e73eb967d2a2f743315e7eff9a79f00728769b70be6f92b
BLAKE2b-256 checksum
How to use checksums
156acbc0ac28291b9a0e656a693b4913542c99d32311b7bb84185593736927cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / aimmspy-1.0.1.post141-cp311-cp311-manylinux_2_27_x86_64.whl

Download URL aimmspy-1.0.1.post141-cp311-cp311-manylinux_2_27_x86_64.whl
Size 739.6 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64
SHA-256 checksum
How to use checksums
962754c7c0d8e21d58f98b9d7dba294ad03d0deb25cbba648c414f7780f4faa3
BLAKE2b-256 checksum
How to use checksums
86f8b72c443ef06cf08367827f51bd91c7275ed2b9af3835b8ea1320a67aa0de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / aimmspy-1.0.1.post141-cp310-cp310-win_amd64.whl

Download URL aimmspy-1.0.1.post141-cp310-cp310-win_amd64.whl
Size 583.3 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
b148c55c9473c06f417aa41bb58a1563b71cecf7075b4a5e02514f7dba122cd3
BLAKE2b-256 checksum
How to use checksums
79c72cf68f7c0c96ad92ef296c22ef6946fb3a8a1bd9dc342e9f58878f5e8672
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / aimmspy-1.0.1.post141-cp310-cp310-manylinux_2_27_x86_64.whl

Download URL aimmspy-1.0.1.post141-cp310-cp310-manylinux_2_27_x86_64.whl
Size 738.9 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64
SHA-256 checksum
How to use checksums
f7307c59d4c2aeefd7915846034ba0f5f3e335b7ae1f6ab140b2b3f064483d1d
BLAKE2b-256 checksum
How to use checksums
eab3a6760a7994b97530fdc51017637157ad010830906b3e77ac3fd9d9304337
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release history Release notifications | RSS feed

This release

1.0.1.post141 This release

8 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page