aimmspy 1.0.1.post33__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aimmspy-1.0.1.post33/.clang-format +42 -0
- aimmspy-1.0.1.post33/.clangd +70 -0
- aimmspy-1.0.1.post33/.gitignore +42 -0
- aimmspy-1.0.1.post33/.gitlab-ci.yml +67 -0
- aimmspy-1.0.1.post33/.gitmodules +3 -0
- aimmspy-1.0.1.post33/CMakeLists.txt +56 -0
- aimmspy-1.0.1.post33/CMakePresets.json +7 -0
- aimmspy-1.0.1.post33/PKG-INFO +185 -0
- aimmspy-1.0.1.post33/README.md +163 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/CMakeLists.txt +46 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/include/aimms-api-wrapper/AimmsDomain.h +241 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/include/aimms-api-wrapper/AimmsFactory.h +70 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/include/aimms-api-wrapper/AimmsHandle.h +256 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/include/aimms-api-wrapper/AimmsIOHandler.h +925 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/include/aimms-api-wrapper/AimmsVariant.h +740 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/include/aimms-api-wrapper/tsl/robin_growth_policy.h +415 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/include/aimms-api-wrapper/tsl/robin_hash.h +1586 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/include/aimms-api-wrapper/tsl/robin_map.h +815 -0
- aimmspy-1.0.1.post33/aimms-api-wrapper/include/aimms-api-wrapper/tsl/robin_set.h +668 -0
- aimmspy-1.0.1.post33/aimms_api_py/CMakeLists.txt +140 -0
- aimmspy-1.0.1.post33/aimms_api_py/gtest/gtest.cpp +20 -0
- aimmspy-1.0.1.post33/aimms_api_py/include/aimms_api_py/ColumnMapping.hpp +216 -0
- aimmspy-1.0.1.post33/aimms_api_py/include/aimms_api_py/aimms_api.hpp +467 -0
- aimmspy-1.0.1.post33/aimms_api_py/include/aimms_api_py/aimms_exception.hpp +39 -0
- aimmspy-1.0.1.post33/aimms_api_py/include/aimms_api_py/identifier_info.hpp +21 -0
- aimmspy-1.0.1.post33/aimms_api_py/include/aimms_api_py/set_mappings.hpp +94 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/__init__.py +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/__init__.py +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/declaration_section.py +12 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/enums/__init__.py +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/enums/args_enum.py +10 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/enums/attribute_values.py +19 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/enums/data_return_types.py +14 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/enums/identifier_flags.py +19 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/enums/me_attribute_types.py +116 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/enums/me_identifier_types.py +43 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/enums/storage_types.py +9 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/__init__.py +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/constraint.py +16 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/data_identifiers.py +191 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/identifier.py +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/index.py +35 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/mathematical_program.py +18 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/parameter.py +48 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/set.py +92 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/utils.py +11 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/identifiers/variable.py +22 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/library.py +15 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/module.py +11 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/model/procedure.py +18 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/project/__init__.py +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/project/project.py +338 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/aimms/utils.py +3 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/benchmark_existing_project_with_reflection.py +89 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/benchmark_existing_project_with_reflection_pandas.py +95 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/benchmark_existing_project_with_reflection_polars.py +118 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/bezier.py +29 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/dataframe_test_pandas.py +85 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/dataframe_test_pandas_multi.py +94 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/dataframe_test_polars.py +66 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/dataframe_test_polars_multi.py +99 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/integration_tests.py +130 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_different_datatypes.py +86 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection.py +102 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_change_set.py +99 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_constraint_domain_restriction.py +112 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_parameter_domain_restriction_definition.py +107 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_parameter_domain_restriction_indexed.py +103 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_parameter_domain_restriction_indexed_update.py_DISABLED +131 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_parameter_domain_restriction_scalar.py +101 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_parameter_string_and_element.py +126 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_prefixes.py +132 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_procedure_arguments.py +115 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_recursion.py +116 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_spaces_in_index.py +107 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_with_stubs.py +107 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_existing_project_with_reflection_wrong_tuple_string.py +104 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/datatypes/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/datatypes/MainProject/Settings/Options.txt +4 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/datatypes/MainProject/User Files/bitmaps/next.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/datatypes/MainProject/User Files/bitmaps/previous.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/datatypes/MainProject/User Files/bitmaps/totree.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/datatypes/MainProject/WebUI/resources/javascript/webui-options.js +2 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/datatypes/MainProject/datatypes.ams +86 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/datatypes/datatypes.aimms +4 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection/MainProject/Settings/Options.txt +3 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection/MainProject/transport_optimization.ams +160 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection/test_with_jupyter_larger.pyi +105 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection/test_with_jupyter_notebook.pyi +105 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection/transport_optimisation.pyi +105 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection/transport_optimization.aimms +4 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_constraint_domain_restriction/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_constraint_domain_restriction/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_constraint_domain_restriction/MainProject/Settings/Options.txt +3 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_constraint_domain_restriction/MainProject/transport_optimization.ams +84 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_constraint_domain_restriction/transport_optimization.aimms +4 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_extra_transport_cost/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_extra_transport_cost/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_extra_transport_cost/MainProject/Settings/Options.txt +3 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_extra_transport_cost/MainProject/transport_optimization.ams +91 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_extra_transport_cost/transport_optimization.aimms +4 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_definition/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_definition/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_definition/MainProject/Settings/Options.txt +3 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_definition/MainProject/User Files/bitmaps/construct.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_definition/MainProject/User Files/bitmaps/next.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_definition/MainProject/User Files/bitmaps/previous.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_definition/MainProject/User Files/bitmaps/totree.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_definition/MainProject/transport_optimization.ams +85 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_definition/transport_optimization.aimms +4 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_indexed/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_indexed/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_indexed/MainProject/Settings/Options.txt +3 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_indexed/MainProject/User Files/bitmaps/construct.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_indexed/MainProject/User Files/bitmaps/next.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_indexed/MainProject/User Files/bitmaps/previous.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_indexed/MainProject/User Files/bitmaps/totree.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_indexed/MainProject/transport_optimization.ams +88 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_indexed/transport_optimization.aimms +4 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_scalar/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_scalar/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_scalar/MainProject/Settings/Options.txt +3 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_scalar/MainProject/User Files/bitmaps/construct.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_scalar/MainProject/User Files/bitmaps/next.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_scalar/MainProject/User Files/bitmaps/previous.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_scalar/MainProject/User Files/bitmaps/totree.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_scalar/MainProject/transport_optimization.ams +87 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_parameter_domain_restriction_scalar/transport_optimization.aimms +4 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_prefixes/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_prefixes/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_prefixes/MainProject/Settings/Options.txt +20 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_prefixes/MainProject/transport_optimization.ams +84 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_prefixes/other_lib/Project.xml +6 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_prefixes/other_lib/other_lib.ams +42 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_prefixes/transport_optimization.aimms +5 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_recursion/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_recursion/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_recursion/MainProject/Settings/Options.txt +33 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_recursion/MainProject/transport_optimization.ams +115 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_recursion/my_amazing_lib/Project.xml +6 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_recursion/my_amazing_lib/my_amazing_lib.ams +49 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_recursion/transport_optimization.aimms +5 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/MainProject/Settings/Options.txt +3 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/MainProject/User Files/bitmaps/construct.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/MainProject/User Files/bitmaps/next.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/MainProject/User Files/bitmaps/previous.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/MainProject/User Files/bitmaps/totree.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/MainProject/transport_optimization.ams +98 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/test.py +28 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/test2.py +36 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider/transport_optimization.aimms +5 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/Deleted runtime lib CreateDataChangeMonitor no 1.ams +8 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/Deleted runtime lib CreateDataChangeMonitor no 2.ams +8 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/MainProject/Settings/Options.txt +34 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/MainProject/User Files/bitmaps/construct.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/MainProject/User Files/bitmaps/next.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/MainProject/User Files/bitmaps/previous.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/MainProject/User Files/bitmaps/totree.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/MainProject/WebUI/resources/javascript/webui-options.js +2 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/MainProject/WebUI/webui.json +357 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/MainProject/transport_optimization.ams +140 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/biem_script.py +68 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/global_assign.py +38 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/model_stub.pyi +2057 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/script_with_func.py +58 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui/transport_optimization.aimms +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/Deleted runtime lib CreateDataChangeMonitor no 1.ams +8 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/Deleted runtime lib CreateDataChangeMonitor no 2.ams +8 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/MainProject/Settings/Options.txt +34 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/MainProject/User Files/bitmaps/construct.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/MainProject/User Files/bitmaps/next.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/MainProject/User Files/bitmaps/previous.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/MainProject/User Files/bitmaps/totree.png +0 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/MainProject/WebUI/resources/javascript/webui-options.js +2 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/MainProject/WebUI/webui.json +357 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/MainProject/transport_optimization.ams +145 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/biem_script.py +68 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/foo.py +9 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/global_assign.py +38 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/model_stub.pyi +2057 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/script_with_func.py +58 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_reflection_with_python_provider_webui_aws/transport_optimization.aimms +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_spaces_in_index/LoggerConfig.xml +24 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_spaces_in_index/MainProject/Project.xml +7 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_spaces_in_index/MainProject/Settings/Options.txt +3 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_spaces_in_index/MainProject/transport_optimization.ams +84 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_models/transport_optimization_spaces_in_index/transport_optimization.aimms +4 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_with_jupyter_larger.ipynb +5673 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/test_with_jupyter_notebook.ipynb +1122 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/transport_optimisation.py +198 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/utils/custom.css +55 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/utils/geolocation.py +31 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/utils/rendering.py +287 -0
- aimmspy-1.0.1.post33/aimms_api_py/python/utils/testing.py +78 -0
- aimmspy-1.0.1.post33/aimms_api_py/src/aimms_api.cpp +1263 -0
- aimmspy-1.0.1.post33/aimms_api_py/src/aimms_exception.cpp +13 -0
- aimmspy-1.0.1.post33/aimms_api_py/src/python_module.cpp +77 -0
- aimmspy-1.0.1.post33/aimms_api_py/src/set_mappings.cpp +22 -0
- aimmspy-1.0.1.post33/arrow4cxx/CMakeLists.txt +56 -0
- aimmspy-1.0.1.post33/arrow4cxx/include/arrow4cxx/ArrowReadColumns.h +606 -0
- aimmspy-1.0.1.post33/arrow4cxx/include/arrow4cxx/ArrowTable.h +61 -0
- aimmspy-1.0.1.post33/arrow4cxx/include/arrow4cxx/ArrowWriteColumns.h +601 -0
- aimmspy-1.0.1.post33/arrow4cxx/include/arrow4cxx/Exception.h +57 -0
- aimmspy-1.0.1.post33/arrow4cxx/include/arrow4cxx/IArrowTable.h +252 -0
- aimmspy-1.0.1.post33/arrow4cxx/src/ArrowTable.cpp +466 -0
- aimmspy-1.0.1.post33/arrow4cxx/src/Exception.cpp +99 -0
- aimmspy-1.0.1.post33/buildhelpers/.gitattributes +23 -0
- aimmspy-1.0.1.post33/buildhelpers/.gitignore +10 -0
- aimmspy-1.0.1.post33/buildhelpers/AimmsFromConan.py +262 -0
- aimmspy-1.0.1.post33/buildhelpers/ConanBuilder.py +209 -0
- aimmspy-1.0.1.post33/buildhelpers/EmailSender.py +59 -0
- aimmspy-1.0.1.post33/buildhelpers/EmailSenderApp.py +221 -0
- aimmspy-1.0.1.post33/buildhelpers/ProductVersionEnvVars.py +59 -0
- aimmspy-1.0.1.post33/buildhelpers/README.md +21 -0
- aimmspy-1.0.1.post33/buildhelpers/Version.template +51 -0
- aimmspy-1.0.1.post33/buildhelpers/__init__.py +0 -0
- aimmspy-1.0.1.post33/buildhelpers/_default_values.json +35 -0
- aimmspy-1.0.1.post33/buildhelpers/aimms_deploy.py +112 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/.aimms_release.yml +225 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/.autolib_collector.yml +97 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/AimmsLogConfig.xml +74 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/CDMService_deploy.py +75 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/WebUI_deploy.py +101 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/__init__.py +0 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/aimms_unit_tests2.py +173 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/aimmsroot/Config/do-not-delete +0 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/aimmsroot/Config/licenses.cfg +2 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/aimmsroot/Licenses/do-not-delete +0 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/aimmsroot/Nodelocks/do-not-delete +0 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/alib_deploy.py +52 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/autolib_collector.py +257 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/autolib_common.py +54 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/autolib_deploy.py +70 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/autolib_unit_test.py +139 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/get_aimms.py +24 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/pre_document_deploy.py +181 -0
- aimmspy-1.0.1.post33/buildhelpers/autolibs/release_and_publisher.py +418 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/.aimms_auto_lib.yml +115 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/.aimms_build_matrix.yml +195 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/.aimms_package.yml +300 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/.aimms_package_3th_party.yml +11 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/.aimms_package_3th_party_linux.yml +11 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/.aimms_package_3th_party_windows.yml +11 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/.aimms_package_dotnet.yml +25 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/.aimms_package_windows.yml +36 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/.aimms_upload.yml +32 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/__init__.py +0 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/aimms_artifactory.py +143 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/aimms_common.cmake +40 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/aimms_common.py +213 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/aimms_conan.cmake +183 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/aimms_presets.json +201 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/armi.cmake +83 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/base64_encode.py +23 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/buildCmake.py +195 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/build_date.py +12 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/cmake_aimms_install.cmake +449 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/cmake_conan2_install.cmake +228 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/conan_build_and_upload.py +156 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/conan_cmake_connector.py +126 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/conan_export_cmake.py +141 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/conan_export_package.py +93 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/conan_login.py +21 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/conan_settings.py +15 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/conan_signtool.py +216 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/conan_upload.cmake +114 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/download_file.cmake +34 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/download_file_artifactory.cmake +60 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/globalsettingsAIMMS.cmake +41 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/globalsettingsLibraries.cmake +32 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/linux_debug_info_d.py +63 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/linux_stl.natvis +890 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/natvis.natvis +93 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/notebook.py +334 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/prodver/CMakeLists.txt +34 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/prodver/include/ProductVersion/Description.h +28 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/prodver/include/ProductVersion/Info.h +30 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/prodver/src/Description.cpp +54 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/prodver/src/Info.cpp +125 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/register_benchmarks.cmake +60 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/register_tests.cmake +410 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/set_rpath.py +16 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/static_analysis.cmake +20 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/strip_linux_debug_symbols.py +69 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/testmate_path.py +124 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/update_launch_js.py +102 -0
- aimmspy-1.0.1.post33/buildhelpers/cmake/valgrind-suppressions.supp +629 -0
- aimmspy-1.0.1.post33/buildhelpers/conan/__init__.py +0 -0
- aimmspy-1.0.1.post33/buildhelpers/conan/common.py +67 -0
- aimmspy-1.0.1.post33/buildhelpers/conan/deploy_aimms.py +98 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/arch/armv8 +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/arch/x86_64 +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/compiler/gcc11 +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/compiler/gcc13 +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/compiler/gcc14 +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/compiler/gcc15 +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/compiler/gcc61 +14 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/compiler/vc141 +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/compiler/vc143 +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/default_options +9 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/arch +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc11/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc11/RelWithDebInfo +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc11/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc11/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc13/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc13/RelWithDebInfo +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc13/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc13/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc14/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc14/RelWithDebInfo +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc14/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc14/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc15/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc15/RelWithDebInfo +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc15/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/armv8/gcc15/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/os +8 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/arch +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc11/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc11/RelWithDebInfo +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc11/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc11/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc13/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc13/RelWithDebInfo +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc13/Release +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc13/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc13/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc14/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc14/RelWithDebInfo +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc14/Release +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc14/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc14/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc15/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc15/RelWithDebInfo +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc15/Release +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc15/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/linux/x86_64/gcc15/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/arm/arch +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/arm/msvc193/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/arm/msvc193/RelWithDebInfo +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/arm/msvc193/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/arm/msvc193/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/os +7 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/x86_64/arch +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/x86_64/msvc193/Debug +4 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/x86_64/msvc193/RelWithDebInfo +5 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/x86_64/msvc193/base +2 -0
- aimmspy-1.0.1.post33/buildhelpers/conan-profiles/windows/x86_64/msvc193/build +5 -0
- aimmspy-1.0.1.post33/buildhelpers/email_body.jinja +9 -0
- aimmspy-1.0.1.post33/buildhelpers/generateProductVersion.py +75 -0
- aimmspy-1.0.1.post33/buildhelpers/gitinfo-cli.py +34 -0
- aimmspy-1.0.1.post33/buildhelpers/gitinfo.py +1 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/__init__.py +0 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/bash.py +12 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/eprint.py +10 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/git_branch_point.py +112 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/git_branch_point.sh +14 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/git_dir_head.py +41 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/git_dir_head.sh +67 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/gitinfo.py +468 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/osslsigncode +0 -0
- aimmspy-1.0.1.post33/buildhelpers/internal/util.py +178 -0
- aimmspy-1.0.1.post33/buildhelpers/openapi-generator-cli.jar +0 -0
- aimmspy-1.0.1.post33/buildhelpers/requirements.txt +2 -0
- aimmspy-1.0.1.post33/buildhelpers/security_files/dependency-check.sh +35 -0
- aimmspy-1.0.1.post33/buildhelpers/switch_python.ps1 +45 -0
- aimmspy-1.0.1.post33/buildhelpers/switch_python.sh +20 -0
- aimmspy-1.0.1.post33/conanfile.py +42 -0
- aimmspy-1.0.1.post33/doxyfile.in +42 -0
- aimmspy-1.0.1.post33/generate_toml.py +77 -0
- aimmspy-1.0.1.post33/get_pyarrow_paths.py +79 -0
- aimmspy-1.0.1.post33/pyproject.jinja +41 -0
- aimmspy-1.0.1.post33/pyproject.toml +41 -0
- aimmspy-1.0.1.post33/repair_wheels.py +68 -0
- aimmspy-1.0.1.post33/twine_uploader.py +46 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
BasedOnStyle: LLVM
|
|
3
|
+
Language: Cpp
|
|
4
|
+
AlignTrailingComments: true
|
|
5
|
+
AllowAllArgumentsOnNextLine: true
|
|
6
|
+
AllowAllConstructorInitializersOnNextLine: true
|
|
7
|
+
AllowAllParametersOfDeclarationOnNextLine: true
|
|
8
|
+
AllowShortBlocksOnASingleLine: Empty
|
|
9
|
+
AllowShortCaseLabelsOnASingleLine: true
|
|
10
|
+
AllowShortIfStatementsOnASingleLine: WithoutElse
|
|
11
|
+
AllowShortLoopsOnASingleLine: true
|
|
12
|
+
ColumnLimit: 170
|
|
13
|
+
IndentWidth: 4
|
|
14
|
+
SortIncludes: true
|
|
15
|
+
Standard: Cpp11
|
|
16
|
+
TabWidth: 4
|
|
17
|
+
UseTab: Always
|
|
18
|
+
NamespaceIndentation: All
|
|
19
|
+
AlignAfterOpenBracket: BlockIndent
|
|
20
|
+
BreakConstructorInitializers: BeforeComma
|
|
21
|
+
AllowShortFunctionsOnASingleLine: Empty
|
|
22
|
+
AllowShortLambdasOnASingleLine: None
|
|
23
|
+
AlignConsecutiveAssignments: Consecutive
|
|
24
|
+
AlignConsecutiveMacros: Consecutive
|
|
25
|
+
AllowShortEnumsOnASingleLine: true
|
|
26
|
+
SeparateDefinitionBlocks: Always
|
|
27
|
+
LambdaBodyIndentation: Signature
|
|
28
|
+
BreakBeforeTernaryOperators: true
|
|
29
|
+
ReferenceAlignment: Left
|
|
30
|
+
AlignArrayOfStructures: Left
|
|
31
|
+
AlignEscapedNewlines: Right
|
|
32
|
+
AlignOperands: AlignAfterOperator
|
|
33
|
+
AlwaysBreakBeforeMultilineStrings: false
|
|
34
|
+
AlwaysBreakTemplateDeclarations: Yes
|
|
35
|
+
IndentPPDirectives: AfterHash
|
|
36
|
+
PackConstructorInitializers: Never
|
|
37
|
+
BinPackArguments: false
|
|
38
|
+
EmptyLineAfterAccessModifier: Always
|
|
39
|
+
EmptyLineBeforeAccessModifier: Always
|
|
40
|
+
AccessModifierOffset: -4
|
|
41
|
+
PointerAlignment: Left
|
|
42
|
+
...
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
CompileFlags:
|
|
2
|
+
Add:
|
|
3
|
+
# - -Wall
|
|
4
|
+
# - -xc++
|
|
5
|
+
- -Wno-c++98-compat
|
|
6
|
+
- -Wno-c++98-compat-pedantic
|
|
7
|
+
- -Wno-zero-as-null-pointer-constant
|
|
8
|
+
- -Wno-deprecated-builtins
|
|
9
|
+
- -Wno-typecheck_nonviable_condition
|
|
10
|
+
|
|
11
|
+
Diagnostics:
|
|
12
|
+
ClangTidy:
|
|
13
|
+
Add:
|
|
14
|
+
- modernize*
|
|
15
|
+
- portability*
|
|
16
|
+
- readability*
|
|
17
|
+
- misc*
|
|
18
|
+
- performance*
|
|
19
|
+
- boost*
|
|
20
|
+
- bugprone*
|
|
21
|
+
- concurrency*
|
|
22
|
+
- clang*
|
|
23
|
+
- cppcoreguidelines*
|
|
24
|
+
- zircon*
|
|
25
|
+
- google*
|
|
26
|
+
- openmp*
|
|
27
|
+
- objc*
|
|
28
|
+
- mpi*
|
|
29
|
+
- llvmlibc*
|
|
30
|
+
- llvm*
|
|
31
|
+
- hicpp*
|
|
32
|
+
- linuxkernel*
|
|
33
|
+
- fuchsia*
|
|
34
|
+
- darwin*
|
|
35
|
+
- cert*
|
|
36
|
+
- android*
|
|
37
|
+
- altera*
|
|
38
|
+
- abseil*
|
|
39
|
+
- clang-diagnostic*
|
|
40
|
+
|
|
41
|
+
Remove:
|
|
42
|
+
- cppcoreguidelines-avoid-magic-numbers
|
|
43
|
+
- readability-magic-numbers
|
|
44
|
+
- readability-identifier-length
|
|
45
|
+
- misc-non-private-member-variables-in-classes
|
|
46
|
+
- llvmlibc-restrict-system-libc-headers
|
|
47
|
+
- llvmlibc-implementation-in-namespace
|
|
48
|
+
- llvmlibc-callee-namespace
|
|
49
|
+
- altera-unroll-loops
|
|
50
|
+
- fuchsia-overloaded-operator
|
|
51
|
+
- fuchsia-trailing-return
|
|
52
|
+
- fuchsia-default-arguments-calls
|
|
53
|
+
- fuchsia-default-arguments-declarations
|
|
54
|
+
- hicpp-avoid-c-arrays
|
|
55
|
+
- modernize-avoid-c-arrays
|
|
56
|
+
- altera-struct-pack-align
|
|
57
|
+
- hicpp-vararg
|
|
58
|
+
- hicpp-no-array-decay
|
|
59
|
+
- hicpp-explicit-conversions
|
|
60
|
+
- modernize-use-trailing-return-type
|
|
61
|
+
- llvmlibc-inline-function-decl
|
|
62
|
+
- hicpp-signed-bitwise
|
|
63
|
+
|
|
64
|
+
InlayHints:
|
|
65
|
+
Enabled: Yes
|
|
66
|
+
ParameterNames: No
|
|
67
|
+
DeducedTypes: No
|
|
68
|
+
|
|
69
|
+
Hover:
|
|
70
|
+
ShowAKA: Yes
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
.vscode/
|
|
2
|
+
.vs/
|
|
3
|
+
out/
|
|
4
|
+
compile_commands.json
|
|
5
|
+
.cache/clangd/
|
|
6
|
+
aimms.xlg
|
|
7
|
+
debug.log
|
|
8
|
+
memory.log
|
|
9
|
+
dist/
|
|
10
|
+
log4aimms.txt
|
|
11
|
+
_iofile_.log
|
|
12
|
+
aimms_api_py/python/*.pyd
|
|
13
|
+
aimms_api_py/python/**/__pycache__/**
|
|
14
|
+
transport_optimization/
|
|
15
|
+
aimms_api_py/python/*.pdb
|
|
16
|
+
aimms_api_py/python/*.pyi
|
|
17
|
+
aimms/latest
|
|
18
|
+
**/messages.log
|
|
19
|
+
**/*.usageLog
|
|
20
|
+
**/*.aimmslockfile
|
|
21
|
+
aimms_api_py/python/*.so
|
|
22
|
+
**/*.bak
|
|
23
|
+
**/*.log
|
|
24
|
+
**/*.tmp
|
|
25
|
+
aimms_api_py/python/test_models/**/*.nch
|
|
26
|
+
aimms_api_py/python/test_models/**/log/log.txt
|
|
27
|
+
**/log.txt
|
|
28
|
+
**/*.nch
|
|
29
|
+
**/*.lis
|
|
30
|
+
**/*.pyd
|
|
31
|
+
**/*.pdb
|
|
32
|
+
**/aimms.err
|
|
33
|
+
aimms-log.txt
|
|
34
|
+
aimms_api_py/python/*.lib
|
|
35
|
+
aimms_api_py/python/*.dll
|
|
36
|
+
aimms_api_py/python/*.so
|
|
37
|
+
aimms_api_py/python/*.exe
|
|
38
|
+
aimms_api_py/python/*.a
|
|
39
|
+
**/*.csv
|
|
40
|
+
venv/
|
|
41
|
+
wheelhouse/
|
|
42
|
+
**/python_version.txt
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
variables:
|
|
2
|
+
GIT_SUBMODULE_STRATEGY: recursive
|
|
3
|
+
|
|
4
|
+
# This should be picked up at pipeline creation time.
|
|
5
|
+
include:
|
|
6
|
+
- project: "aimms/submodules/buildhelpers"
|
|
7
|
+
ref: "feature/multi-python"
|
|
8
|
+
file: "cmake/.aimms_build_matrix.yml"
|
|
9
|
+
|
|
10
|
+
stages:
|
|
11
|
+
- pipeline
|
|
12
|
+
|
|
13
|
+
all_wheels:
|
|
14
|
+
stage: pipeline
|
|
15
|
+
extends: [.matrix_python_wheels]
|
|
16
|
+
script:
|
|
17
|
+
- git config --global --add safe.directory $CI_PROJECT_DIR
|
|
18
|
+
- python3 buildhelpers/gitinfo-cli.py fullbranchname
|
|
19
|
+
- python3 buildhelpers/cmake/buildCmake.py --login
|
|
20
|
+
- python3 buildhelpers/cmake/buildCmake.py --check
|
|
21
|
+
- python3 generate_toml.py
|
|
22
|
+
- . ${switch_python} ${python_version}
|
|
23
|
+
- python --version
|
|
24
|
+
- python -m pip install build
|
|
25
|
+
- python -m pip install auditwheel
|
|
26
|
+
- python -m build
|
|
27
|
+
- python repair_wheels.py
|
|
28
|
+
artifacts:
|
|
29
|
+
when: always
|
|
30
|
+
paths:
|
|
31
|
+
- dist/**/*.whl
|
|
32
|
+
- dist/**/*.tar.gz
|
|
33
|
+
|
|
34
|
+
integration_tests:
|
|
35
|
+
stage: pipeline
|
|
36
|
+
needs:
|
|
37
|
+
- job: all_wheels
|
|
38
|
+
artifacts: true
|
|
39
|
+
extends: [.matrix_python_wheels]
|
|
40
|
+
script:
|
|
41
|
+
- git config --global --add safe.directory $CI_PROJECT_DIR
|
|
42
|
+
- python3 buildhelpers/gitinfo-cli.py fullbranchname
|
|
43
|
+
- python3 buildhelpers/cmake/buildCmake.py --login
|
|
44
|
+
- python3 buildhelpers/cmake/buildCmake.py --check
|
|
45
|
+
- . ${switch_python} ${python_version}
|
|
46
|
+
- python --version
|
|
47
|
+
- python ./aimms_api_py/python/integration_tests.py
|
|
48
|
+
|
|
49
|
+
upload_wheels:
|
|
50
|
+
stage: pipeline
|
|
51
|
+
extends: [.matrix_linux_only_release]
|
|
52
|
+
needs:
|
|
53
|
+
- job: integration_tests
|
|
54
|
+
artifacts: true
|
|
55
|
+
- job: all_wheels
|
|
56
|
+
artifacts: true
|
|
57
|
+
rules:
|
|
58
|
+
- if: '$CI_COMMIT_BRANCH == "main"'
|
|
59
|
+
- if: '$CI_COMMIT_BRANCH != "main"'
|
|
60
|
+
when: never
|
|
61
|
+
script:
|
|
62
|
+
- git config --global --add safe.directory $CI_PROJECT_DIR
|
|
63
|
+
- python3 buildhelpers/gitinfo-cli.py fullbranchname
|
|
64
|
+
- python3 buildhelpers/cmake/buildCmake.py --login
|
|
65
|
+
- python3 buildhelpers/cmake/buildCmake.py --check
|
|
66
|
+
- pip install twine
|
|
67
|
+
- python3 twine_uploader.py
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION ${MINIMUM_CMAKE_VERSION})
|
|
2
|
+
|
|
3
|
+
project (toplevel)
|
|
4
|
+
|
|
5
|
+
if (WIN32)
|
|
6
|
+
string (REPLACE "/Ob1" "/Ob2 " CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
|
7
|
+
endif()
|
|
8
|
+
|
|
9
|
+
find_package(Python REQUIRED COMPONENTS Interpreter Development)
|
|
10
|
+
|
|
11
|
+
include(buildhelpers/cmake/aimms_conan.cmake)
|
|
12
|
+
|
|
13
|
+
git_and_cmake_info()
|
|
14
|
+
|
|
15
|
+
if( DEFINED CONAN_UPLOAD)
|
|
16
|
+
upload_conan_package("aimms_api_py" ${CMAKE_SOURCE_DIR}/conanfile.py)
|
|
17
|
+
else()
|
|
18
|
+
|
|
19
|
+
conan2_install(
|
|
20
|
+
CONANFILE
|
|
21
|
+
${CMAKE_SOURCE_DIR}/conanfile.py
|
|
22
|
+
AUTO_FIND_PACKAGES
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
enable_testing()
|
|
26
|
+
add_subdirectory(buildhelpers/cmake/prodver)
|
|
27
|
+
add_subdirectory(aimms_api_py)
|
|
28
|
+
add_subdirectory(aimms-api-wrapper)
|
|
29
|
+
add_subdirectory(arrow4cxx)
|
|
30
|
+
|
|
31
|
+
# if(NOT DEFINED ENV{CI})
|
|
32
|
+
# find_package(Doxygen)
|
|
33
|
+
# if(DOXYGEN_FOUND)
|
|
34
|
+
# include(FetchContent)
|
|
35
|
+
# FetchContent_Declare(
|
|
36
|
+
# doxygen-awesome-css
|
|
37
|
+
# URL https://github.com/jothepro/doxygen-awesome-css/archive/refs/heads/main.zip
|
|
38
|
+
# )
|
|
39
|
+
# FetchContent_MakeAvailable(doxygen-awesome-css)
|
|
40
|
+
# FetchContent_GetProperties(doxygen-awesome-css SOURCE_DIR AWESOME_CSS_DIR)
|
|
41
|
+
|
|
42
|
+
# set(DOXYFILE_IN ${CMAKE_SOURCE_DIR}/doxyfile.in)
|
|
43
|
+
# set(DOXYFILE_OUT ${CMAKE_BINARY_DIR}/doxyfile)
|
|
44
|
+
# configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)
|
|
45
|
+
|
|
46
|
+
# # Add a custom target to run Doxygen when ever the project is built
|
|
47
|
+
# add_custom_target( doc_doxygen ALL
|
|
48
|
+
# COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
|
|
49
|
+
# WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
50
|
+
# COMMENT "Generating API documentation with Doxygen"
|
|
51
|
+
# )
|
|
52
|
+
|
|
53
|
+
# endif()
|
|
54
|
+
# endif()
|
|
55
|
+
|
|
56
|
+
endif()
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: aimmspy
|
|
3
|
+
Version: 1.0.1.post33
|
|
4
|
+
Summary: Python bindings for the AIMMS optimization platform, built with pybind11 for seamless C++ integration. Enables efficient data exchange and interaction with AIMMS projects using pandas, polars, and pyarrow. Ideal for advanced optimization workflows requiring high-performance native code.
|
|
5
|
+
Keywords: AIMMS,API,Python,Optimization,Operations Research,pybind11,C++,bindings
|
|
6
|
+
Author: AIMMS B.V.
|
|
7
|
+
Maintainer: AIMMS B.V.
|
|
8
|
+
License: MIT
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: C++
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
15
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
16
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
17
|
+
Requires-Python: >=3.9
|
|
18
|
+
Requires-Dist: pyarrow
|
|
19
|
+
Requires-Dist: pandas
|
|
20
|
+
Requires-Dist: polars
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
# AIMMS Python library
|
|
24
|
+
|
|
25
|
+
This is a **BETA** version of the AIMMS Python library. Any feedback, bug reports, or feature requests are welcome.
|
|
26
|
+
|
|
27
|
+
With this library its possible to interact with AIMMS models from Python.
|
|
28
|
+
|
|
29
|
+
## Features
|
|
30
|
+
|
|
31
|
+
- Seamless integration with AIMMS models from Python
|
|
32
|
+
- Assign and retrieve data using Python dicts, Pandas, Polars, or Arrow tables
|
|
33
|
+
- Execute AIMMS procedures and retrieve results programmatically
|
|
34
|
+
- Built with pybind11 for high-performance C++ integration
|
|
35
|
+
- Flexible data return types for different workflows
|
|
36
|
+
|
|
37
|
+
> **Note:** The AIMMS Python library is tested with Python 3.10 or higher. Currently only the windows platform is supported.
|
|
38
|
+
|
|
39
|
+
## Getting Started
|
|
40
|
+
|
|
41
|
+
To use the AIMMS Python library, you need to have an AIMMS installed and a correct organization license and an aimms project. Below is a step-by-step example of how to use the library to solve a simple transportation optimization problem.
|
|
42
|
+
|
|
43
|
+
### Step 1: Initialize the AIMMS Project
|
|
44
|
+
|
|
45
|
+
First, initialize the AIMMS project by specifying the AIMMS executable path, project path, and other configurations.
|
|
46
|
+
|
|
47
|
+
> **Note:** Ensure that the `aimms_path` points to a valid AIMMS bin folder of an installed AIMMS version. Additionally, you must have the appropriate AIMMS license configured. Failure to provide a valid path or license will result in errors.
|
|
48
|
+
|
|
49
|
+
The `exposed_identifier_set_name` parameter controls which AIMMS identifiers are accessible in Python. For example, setting it to `"AllIdentifiers"` exposes all identifiers in your AIMMS project which is an easy way to get started.
|
|
50
|
+
|
|
51
|
+
The data type preference can be set to `DataReturnTypes.DICT`, `DataReturnTypes.ARROW` `DataReturnTypes.PANDAS` or `DataReturnTypes.POLARS`. The default is `DataReturnTypes.DICT`.
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
import os
|
|
55
|
+
from aimms.project.project import Project
|
|
56
|
+
|
|
57
|
+
# Initialize the AIMMS project
|
|
58
|
+
my_aimms = Project(
|
|
59
|
+
# path to the AIMMS Bin folder
|
|
60
|
+
aimms_path=os.getenv("AIMMSPATH"),
|
|
61
|
+
|
|
62
|
+
# path to the AIMMS project folder
|
|
63
|
+
aimms_project_path=os.getenv("AIMMSPROJECTPATH"),
|
|
64
|
+
|
|
65
|
+
# the name of an aimms set containing identifiers.
|
|
66
|
+
exposed_identifier_set_name="AllIdentifiers", # Limit access to specific identifiers,
|
|
67
|
+
data_type_preference=DataReturnTypes.DICT,
|
|
68
|
+
)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Step 2: Assign Data to Parameters
|
|
72
|
+
|
|
73
|
+
This is an example of assigning data to parameters with Pandas DataFrames.
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
demand_df = pd.DataFrame({
|
|
77
|
+
"c": ["Houston", "Phoenix", "Philadelphia"],
|
|
78
|
+
"demand": [50.0, 60.0, 40.0]
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
supply_df = pd.DataFrame(data={
|
|
82
|
+
"w": ["NewYork", "LosAngeles", "Chicago"],
|
|
83
|
+
"supply": [70.0, 80.0, 60.0]
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
unit_transport_cost_df = pd.DataFrame({
|
|
87
|
+
"w": ["NewYork", "NewYork", "NewYork", "LosAngeles", "LosAngeles", "LosAngeles", "Chicago", "Chicago", "Chicago"],
|
|
88
|
+
"c": ["Houston", "Phoenix", "Philadelphia", "Houston", "Phoenix", "Philadelphia", "Houston", "Phoenix", "Philadelphia"],
|
|
89
|
+
"unit_transport_cost": [5.0, 6.0, 4.0, 3.0, 2.0, 7.0, 4.0, 5.0, 3.0]
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
my_aimms.demand.assign( demand_df)
|
|
93
|
+
my_aimms.supply.assign( supply_df)
|
|
94
|
+
my_aimms.unit_transport_cost.assign( unit_transport_cost_df)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
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.
|
|
98
|
+
|
|
99
|
+
### Step 3: Execute the Optimization Procedure
|
|
100
|
+
|
|
101
|
+
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.
|
|
102
|
+
In this example we run the main procedure in the AIMMS project to solve the optimization problem.
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
my_aimms.MainExecution()
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
It is also possible to run procedures with arguments for example:
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
my_aimms.run_procedure(test1=5.0, test2=10.0, test3="hallo")
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Make sure the order of the arguments is correct as well as the types.
|
|
115
|
+
|
|
116
|
+
### Step 4: Retrieve and Display Results
|
|
117
|
+
|
|
118
|
+
Retrieve the results of the optimization, such as the total transport cost and the transport plan.
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
# Retrieve results
|
|
122
|
+
print(f"Total Transport Cost: {my_aimms.total_transport_cost.data()}")
|
|
123
|
+
print(f"Transport Plan: {my_aimms.transport.data()}")
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
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.
|
|
127
|
+
|
|
128
|
+
#### Data Types Returned by `.data()`
|
|
129
|
+
|
|
130
|
+
depending on the data_type_preference you set in the `Project` constructor, the `.data()` function will return different types of Python objects:
|
|
131
|
+
|
|
132
|
+
**Sets** always return a list of strings.
|
|
133
|
+
|
|
134
|
+
For **parameters** and **variables**, `.data()` can return:
|
|
135
|
+
|
|
136
|
+
- A **scalar value** (e.g., `float` or `int` or `string`) if the parameter or variable is scalar.
|
|
137
|
+
- A **dictionary** where the keys are tuples of strings (representing indices) and the values are `float`, `int`, `string`.
|
|
138
|
+
- A **Arrow Table** or **Pandas or Polars DataFrame** depending on the data_type_preference set in the `Project` constructor.
|
|
139
|
+
|
|
140
|
+
### Example Output
|
|
141
|
+
|
|
142
|
+
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:
|
|
143
|
+
|
|
144
|
+
```plaintext
|
|
145
|
+
Total Transport Cost: 150.0
|
|
146
|
+
Transport: {("NewYork", "Houston"): 30, ("LosAngeles", "Phoenix"): 50, ...}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
for Pandas DataFrames can look like this:
|
|
150
|
+
|
|
151
|
+
```plaintext
|
|
152
|
+
Total Transport Cost: 150.0
|
|
153
|
+
Transport:
|
|
154
|
+
w c transport
|
|
155
|
+
0 NewYork Houston 30
|
|
156
|
+
1 LosAngeles Phoenix 50
|
|
157
|
+
2 Chicago Philadelphia 40
|
|
158
|
+
3 NewYork Philadelphia 20
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## extra
|
|
164
|
+
|
|
165
|
+
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:
|
|
166
|
+
|
|
167
|
+
```python
|
|
168
|
+
my_aimms.generate_stub_file( "my_project_stub.py" )
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
To use this stub file you can the following to the top of your python script:
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
from typing import TYPE_CHECKING
|
|
175
|
+
if TYPE_CHECKING:
|
|
176
|
+
from my_project_stub import Project
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## License
|
|
180
|
+
|
|
181
|
+
This project is licensed under the MIT License.
|
|
182
|
+
|
|
183
|
+
## Support
|
|
184
|
+
|
|
185
|
+
For questions, bug reports, or feature requests, please contact AIMMS B.V. via [support](https://community.aimms.com/p/developer-support). Or post an question on the [AIMMS Community](https://community.aimms.com/). We are happy to help you with any issues or questions you may have.
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# AIMMS Python library
|
|
2
|
+
|
|
3
|
+
This is a **BETA** version of the AIMMS Python library. Any feedback, bug reports, or feature requests are welcome.
|
|
4
|
+
|
|
5
|
+
With this library its possible to interact with AIMMS models from Python.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- Seamless integration with AIMMS models from Python
|
|
10
|
+
- Assign and retrieve data using Python dicts, Pandas, Polars, or Arrow tables
|
|
11
|
+
- Execute AIMMS procedures and retrieve results programmatically
|
|
12
|
+
- Built with pybind11 for high-performance C++ integration
|
|
13
|
+
- Flexible data return types for different workflows
|
|
14
|
+
|
|
15
|
+
> **Note:** The AIMMS Python library is tested with Python 3.10 or higher. Currently only the windows platform is supported.
|
|
16
|
+
|
|
17
|
+
## Getting Started
|
|
18
|
+
|
|
19
|
+
To use the AIMMS Python library, you need to have an AIMMS installed and a correct organization license and an aimms project. Below is a step-by-step example of how to use the library to solve a simple transportation optimization problem.
|
|
20
|
+
|
|
21
|
+
### Step 1: Initialize the AIMMS Project
|
|
22
|
+
|
|
23
|
+
First, initialize the AIMMS project by specifying the AIMMS executable path, project path, and other configurations.
|
|
24
|
+
|
|
25
|
+
> **Note:** Ensure that the `aimms_path` points to a valid AIMMS bin folder of an installed AIMMS version. Additionally, you must have the appropriate AIMMS license configured. Failure to provide a valid path or license will result in errors.
|
|
26
|
+
|
|
27
|
+
The `exposed_identifier_set_name` parameter controls which AIMMS identifiers are accessible in Python. For example, setting it to `"AllIdentifiers"` exposes all identifiers in your AIMMS project which is an easy way to get started.
|
|
28
|
+
|
|
29
|
+
The data type preference can be set to `DataReturnTypes.DICT`, `DataReturnTypes.ARROW` `DataReturnTypes.PANDAS` or `DataReturnTypes.POLARS`. The default is `DataReturnTypes.DICT`.
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
import os
|
|
33
|
+
from aimms.project.project import Project
|
|
34
|
+
|
|
35
|
+
# Initialize the AIMMS project
|
|
36
|
+
my_aimms = Project(
|
|
37
|
+
# path to the AIMMS Bin folder
|
|
38
|
+
aimms_path=os.getenv("AIMMSPATH"),
|
|
39
|
+
|
|
40
|
+
# path to the AIMMS project folder
|
|
41
|
+
aimms_project_path=os.getenv("AIMMSPROJECTPATH"),
|
|
42
|
+
|
|
43
|
+
# the name of an aimms set containing identifiers.
|
|
44
|
+
exposed_identifier_set_name="AllIdentifiers", # Limit access to specific identifiers,
|
|
45
|
+
data_type_preference=DataReturnTypes.DICT,
|
|
46
|
+
)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Step 2: Assign Data to Parameters
|
|
50
|
+
|
|
51
|
+
This is an example of assigning data to parameters with Pandas DataFrames.
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
demand_df = pd.DataFrame({
|
|
55
|
+
"c": ["Houston", "Phoenix", "Philadelphia"],
|
|
56
|
+
"demand": [50.0, 60.0, 40.0]
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
supply_df = pd.DataFrame(data={
|
|
60
|
+
"w": ["NewYork", "LosAngeles", "Chicago"],
|
|
61
|
+
"supply": [70.0, 80.0, 60.0]
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
unit_transport_cost_df = pd.DataFrame({
|
|
65
|
+
"w": ["NewYork", "NewYork", "NewYork", "LosAngeles", "LosAngeles", "LosAngeles", "Chicago", "Chicago", "Chicago"],
|
|
66
|
+
"c": ["Houston", "Phoenix", "Philadelphia", "Houston", "Phoenix", "Philadelphia", "Houston", "Phoenix", "Philadelphia"],
|
|
67
|
+
"unit_transport_cost": [5.0, 6.0, 4.0, 3.0, 2.0, 7.0, 4.0, 5.0, 3.0]
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
my_aimms.demand.assign( demand_df)
|
|
71
|
+
my_aimms.supply.assign( supply_df)
|
|
72
|
+
my_aimms.unit_transport_cost.assign( unit_transport_cost_df)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
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.
|
|
76
|
+
|
|
77
|
+
### Step 3: Execute the Optimization Procedure
|
|
78
|
+
|
|
79
|
+
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.
|
|
80
|
+
In this example we run the main procedure in the AIMMS project to solve the optimization problem.
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
my_aimms.MainExecution()
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
It is also possible to run procedures with arguments for example:
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
my_aimms.run_procedure(test1=5.0, test2=10.0, test3="hallo")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Make sure the order of the arguments is correct as well as the types.
|
|
93
|
+
|
|
94
|
+
### Step 4: Retrieve and Display Results
|
|
95
|
+
|
|
96
|
+
Retrieve the results of the optimization, such as the total transport cost and the transport plan.
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
# Retrieve results
|
|
100
|
+
print(f"Total Transport Cost: {my_aimms.total_transport_cost.data()}")
|
|
101
|
+
print(f"Transport Plan: {my_aimms.transport.data()}")
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
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.
|
|
105
|
+
|
|
106
|
+
#### Data Types Returned by `.data()`
|
|
107
|
+
|
|
108
|
+
depending on the data_type_preference you set in the `Project` constructor, the `.data()` function will return different types of Python objects:
|
|
109
|
+
|
|
110
|
+
**Sets** always return a list of strings.
|
|
111
|
+
|
|
112
|
+
For **parameters** and **variables**, `.data()` can return:
|
|
113
|
+
|
|
114
|
+
- A **scalar value** (e.g., `float` or `int` or `string`) if the parameter or variable is scalar.
|
|
115
|
+
- A **dictionary** where the keys are tuples of strings (representing indices) and the values are `float`, `int`, `string`.
|
|
116
|
+
- A **Arrow Table** or **Pandas or Polars DataFrame** depending on the data_type_preference set in the `Project` constructor.
|
|
117
|
+
|
|
118
|
+
### Example Output
|
|
119
|
+
|
|
120
|
+
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:
|
|
121
|
+
|
|
122
|
+
```plaintext
|
|
123
|
+
Total Transport Cost: 150.0
|
|
124
|
+
Transport: {("NewYork", "Houston"): 30, ("LosAngeles", "Phoenix"): 50, ...}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
for Pandas DataFrames can look like this:
|
|
128
|
+
|
|
129
|
+
```plaintext
|
|
130
|
+
Total Transport Cost: 150.0
|
|
131
|
+
Transport:
|
|
132
|
+
w c transport
|
|
133
|
+
0 NewYork Houston 30
|
|
134
|
+
1 LosAngeles Phoenix 50
|
|
135
|
+
2 Chicago Philadelphia 40
|
|
136
|
+
3 NewYork Philadelphia 20
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## extra
|
|
142
|
+
|
|
143
|
+
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:
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
my_aimms.generate_stub_file( "my_project_stub.py" )
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
To use this stub file you can the following to the top of your python script:
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
from typing import TYPE_CHECKING
|
|
153
|
+
if TYPE_CHECKING:
|
|
154
|
+
from my_project_stub import Project
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## License
|
|
158
|
+
|
|
159
|
+
This project is licensed under the MIT License.
|
|
160
|
+
|
|
161
|
+
## Support
|
|
162
|
+
|
|
163
|
+
For questions, bug reports, or feature requests, please contact AIMMS B.V. via [support](https://community.aimms.com/p/developer-support). Or post an question on the [AIMMS Community](https://community.aimms.com/). We are happy to help you with any issues or questions you may have.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
project(aimms-api-wrapper)
|
|
2
|
+
|
|
3
|
+
# Create a library from the source files
|
|
4
|
+
add_library(${PROJECT_NAME} INTERFACE)
|
|
5
|
+
|
|
6
|
+
target_compile_definitions( ${PROJECT_NAME}
|
|
7
|
+
INTERFACE
|
|
8
|
+
UNICODE
|
|
9
|
+
_UNICODE
|
|
10
|
+
SA_UNICODE
|
|
11
|
+
RAPIDJSON_HAS_STDSTRING=1
|
|
12
|
+
RAPIDJSON_HAS_CXX11_RVALUE_REFS=1
|
|
13
|
+
BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE
|
|
14
|
+
_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING
|
|
15
|
+
SHA2_USE_INTTYPES_H
|
|
16
|
+
_CRT_SECURE_NO_WARNINGS
|
|
17
|
+
CMAKE_CONAN_BUILD=1
|
|
18
|
+
INCLUDE_STRING_CONVERT
|
|
19
|
+
PUGIXML_WCHAR_MODE
|
|
20
|
+
$<$<CONFIG:Release>:
|
|
21
|
+
NDEBUG
|
|
22
|
+
>
|
|
23
|
+
$<$<CONFIG:Debug>:
|
|
24
|
+
DEBUG
|
|
25
|
+
_DEBUG
|
|
26
|
+
>
|
|
27
|
+
$<$<PLATFORM_ID:Windows>:WIN32
|
|
28
|
+
_WINDOWS
|
|
29
|
+
_USRDLL
|
|
30
|
+
WIN32_LEAN_AND_MEAN
|
|
31
|
+
NOMINMAX
|
|
32
|
+
_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR
|
|
33
|
+
>
|
|
34
|
+
$<$<PLATFORM_ID:Linux>:
|
|
35
|
+
GCC_HASCLASSVISIBILITY
|
|
36
|
+
>
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
target_include_directories(${PROJECT_NAME} INTERFACE
|
|
40
|
+
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
target_compile_features(${PROJECT_NAME}
|
|
44
|
+
INTERFACE
|
|
45
|
+
cxx_std_20
|
|
46
|
+
)
|