skip to navigation
skip to content

docplex 2.4.61

The IBM Decision Optimization CPLEX Modeling for Python

Welcome to the IBM® Decision Optimization CPLEX Modeling for Python. Licensed under the Apache License v2.0.

With this library, you can quickly and easily add the power of optimization to your application. You can model your problems by using the Python API and solve them on the cloud with the IBM® Decision Optimization on Cloud service or on your computer with IBM® ILOG CPLEX Optimization Studio.

This library is composed of 2 modules:

  • IBM® Decision Optimization CPLEX Optimizer Modeling for Python - with namespace
  • IBM® Decision Optimization CP Optimizer Modeling for Python - with namespace docplex.cp

Solving with CPLEX locally requires that IBM® ILOG CPLEX Optimization Studio V12.6.3 or V12.7.0 is installed on your machine.

Solving with the IBM® Decision Optimization on Cloud service requires that you register for an account and get the API key.

This library is numpy friendly.




  • pip install docplex


Changed in 2.4.61:

  • Both & docplex.cp:
    • Support for CPLEX engines 12.8. Some features of docplex2.4 are available only with engines >= 12.8.
    • Adding new ports (AIX, plinux).
    • Examples are now available as Zeppelin notebooks.
  • In
    • Express a linear problem as a scikit-learn tranformer by providing a numpy, a pandas or scipy matrix.
    • Logical constraints: constratins equivalence, if-then & rshift operator.
    • Solve hook to add a method to be called at each intermediate solution.
    • KPIS automatically published at each intermediate solution if running on docplexcloud python worker.
    • Support for scipy coo & csr matrixes.
  • In docplex.cp:
    • add new method run_seeds() to execute a model multiple times, available with local solver 12.8.
    • add support of new solver infos ‘SearchStatus’ eand ‘SearchStopCause’.
    • In method docplex.cp.model.CpoModel.propagate(), add possibility to add an optional constraint to the model.
    • add domain iterator in integer variables and integer variables solutions, allowing to get domain as a list of individual integers.
    • add possibility to identify some model variables as KPIs of the model.
    • add abort_search() method on solver (not supported everywhere)
    • Rework code generation to enhance performances and remove unused variables that was pointed by removed expressions.
    • add possibility to add one or more CpoSolverListener to put some callback functions when solve is started, ended, or when a solution is found. Implementation is provided in new python module docplex.cp.solver.solver_listener that also contains sample listeners SolverProgressPanelListener and AutoStopListener.
    • Using parameter context.solver.solve_with_start_next, enable solve() method to execute a start/next loop instead of standard solve. This enables, for optimization problems, usage of SolveListeners with a greater progress accuracy.
    • Completely remove deprecated ‘angel’ to identify local solver.
    • Deprecate usage of methods minimize() and maximize() on docplex.cp.CpoModel.
    • Add methods get_objective_bounds() and get_objective_gaps() in solution objects.

Changed in 2.3.44 (2017.09):

  • Module has been renamed A shadow copy with previous name still exist to preserve ascending compatibility. Module is modified to refer this new module.
  • Class docplex.cp.model.solver_local.SolverAngel has been renamed SolverLocal. A shadow copy with previous name still exist to preserve ascending compatibility.
  • Class docplex.cp.model.solver_local.AngelException has been renamed LocalSolverException. A shadow copy with previous name still exist to preserve ascending compatibility.
  • Functions logical_and() and logical_or() are able to accept a list of model boolean expressions.
  • Fix defect on allowed_assignments() and forbiden_assignments() that was wrongly converting list of tupes into tuple_set.
  • Update all examples to add comments and split them in sections data / prepare / model / solve
  • Add new example that reads data from JSON file instead of raw data file.
  • Rename all visu examples with more explicit names.
  • Remove the object class CpoTupleSet. Tuple sets can be constructed only by calling tuple_set() method, or more simply by passing directly a Python iterable of iterables when a tupleset is required (in expressions allowed_assignments() and forbidden_assignments)
  • Allow logical_and() and logical_or() to accept a list of boolean expressions.
  • Add overloading of builtin functions all() and any() as other form of logical_and() and logical_or().
  • In no_overlap() and state_function(), transition matrix can be passed directly as a Python iterable of iterables of integers,
  • Editable transition matrix, created with a size only, is deprecated. However it is still available for ascending compatibility.
  • Add conditional() modeling function
  • Parameter ‘AutomaticReplay’ is deprecated.
  • Add get_search_status() and get_stop_cause() on object CpoSolveResult, available for solver COS12.8
  • Improved performance of Var.reduced_cost() in

Changed in 2.2.34 (2017.07):

  • Methods docplex.cp.model.export_model() and docplex.cp.model.import_model() have been added to respectively generate or parse a model in CPO format.
  • Methods docplex.cp.model.minimize() and docplex.cp.model.maximize() have been added to directly indicate an objective at model level.
  • Notebook example scheduling_tuto.ipynb contains an extensive tutorial to solve scheduling problems with CP.
  • Modeling methof sum() now supports sum of cumul expressions.
  • Methods docplex.cp.model.start_search() allows to start a new search sequence directly from the model object.
  • When setting context.solver.auto_publish is set, and using the CPLEX engine, KPIs and current objective are automatically published when the script is run on DOcplexcloud Python worker.
  • When setting context.solver.auto_publish is set, and using the CP engine, current objective is automatically published when the script is run on DOcplexcloud Python worker.
  • docplex.util.environment.Environment.set_stop_callback and docplex.util.environment.Environment.get_stop_callback are added so that you can add a callback when the DOcplexcloud job is aborted.

Changed in 2.1.28:

  • New methods Model.logical_or() and Model.logical_and() handle logical operations on binary variables.
  • DOcplex now supports CPLEX 12.7.1 and Benders decomposition. Set annotations on constraints and variables using the benders_annotation property and use the proper CPLEX parameters governing Benders decomposition.
  • CPLEX tutorials: in the documentation and as notebooks in the examples.
  • Fixed a bug in and in when using unicode variable names.
  • There’s now a simple command line interface for DOcplexcloud. It can be run in a terminal. python -m docplex.cli help for more info. That command line reads your DOcplexcloud credentials in your file. It allows you to submit, list, delete jobs on DOcplexcloud. The cli is available in notebooks too, using the %docplex_cli magics. %docplex_cli help for some help. In a notebook, credentials can be passed using %docplex_url and %docplex_key magics.
  • Removing constraints in 1 call
  • Bug fixes when editing an existing model.
  • Bug fix in the relaxation mechanism when using docplexcloud.

Changed in 2.0.15:

  • Piecewise linear (PWL) functions are now supported. An API is now available on to create PWL functions and to create constraints using these PWL functions. PWL functions may be defined with breakpoints (default API) or by using slopes. Some simple arithmetic is also available to build new PWL functions by adding, subtracting, or scaling existing PWL functions.
  • DOcplex has undergone a significant overhaul effort that has resulted in an average of 30-50% improvement of modeling run-time performance. All parts of the API benefit from the performance improvements: creation of variables and constraints, removal of constraints, computation of sums of variables, and so on.
  • Constraints are now fully editable: the expressions of a constraint can be modified. Similarly, the objective expression can also be modified. This allows for complex workflows in which the model is modified after a solve and then solved again.
  • docplex is now available on Anaconda cloud and can be installed via the conda installation packager. See the IBM Anaconda home CPLEX Community Edition for Python is also provided on Anaconda Cloud to get free local solving capabilities with limitations.
  • Support of ~/.docplexrc configuration files for is now dropped. This feature has been deprecated since 1.0.0.
  • Known incompatibility: class moved to Samples using this class have been updated.

Changed in 1.0.630:

  • Added support for CPLEX 12.7 and Python 3.5.
  • Upgraded the DOcplexcloud client to version 1.0.202.
  • Module is now officially supported. This module provides support for efficient, specialized aggregator methods for large models.
  • When solving on DOcplexcloud, proxies can now be specified with the context.solver.docloud.proxies property.
  • When two constraints are defined with the same name, issue a warning instead of a fatal exception. The last constraint defined will take over the first one in the name directory.
  • Fix ValueError when passing a pandas DataFrame as variable keys (using DataFrame indexes).
  • Solution.get_values() returns a collection of variable values in one call.
  • no longer imports docloud.status. Any status previously initialized as JobSolveStatus.UNKNOWN is now initialized as None.
  • Minor improvements to notebooks and examples.
File Type Py Version Uploaded on Size
docplex-2.4.61.tar.gz (md5) Source 2017-12-01 411KB
  • Author: The IBM Decision Optimization on Cloud team
  • Home Page:
  • Keywords: docloud
  • License:
                                     Apache License
                               Version 2.0, January 2004
       1. Definitions.
          "License" shall mean the terms and conditions for use, reproduction,
          and distribution as defined by Sections 1 through 9 of this document.
          "Licensor" shall mean the copyright owner or entity authorized by
          the copyright owner that is granting the License.
          "Legal Entity" shall mean the union of the acting entity and all
          other entities that control, are controlled by, or are under common
          control with that entity. For the purposes of this definition,
          "control" means (i) the power, direct or indirect, to cause the
          direction or management of such entity, whether by contract or
          otherwise, or (ii) ownership of fifty percent (50%) or more of the
          outstanding shares, or (iii) beneficial ownership of such entity.
          "You" (or "Your") shall mean an individual or Legal Entity
          exercising permissions granted by this License.
          "Source" form shall mean the preferred form for making modifications,
          including but not limited to software source code, documentation
          source, and configuration files.
          "Object" form shall mean any form resulting from mechanical
          transformation or translation of a Source form, including but
          not limited to compiled object code, generated documentation,
          and conversions to other media types.
          "Work" shall mean the work of authorship, whether in Source or
          Object form, made available under the License, as indicated by a
          copyright notice that is included in or attached to the work
          (an example is provided in the Appendix below).
          "Derivative Works" shall mean any work, whether in Source or Object
          form, that is based on (or derived from) the Work and for which the
          editorial revisions, annotations, elaborations, or other modifications
          represent, as a whole, an original work of authorship. For the purposes
          of this License, Derivative Works shall not include works that remain
          separable from, or merely link (or bind by name) to the interfaces of,
          the Work and Derivative Works thereof.
          "Contribution" shall mean any work of authorship, including
          the original version of the Work and any modifications or additions
          to that Work or Derivative Works thereof, that is intentionally
          submitted to Licensor for inclusion in the Work by the copyright owner
          or by an individual or Legal Entity authorized to submit on behalf of
          the copyright owner. For the purposes of this definition, "submitted"
          means any form of electronic, verbal, or written communication sent
          to the Licensor or its representatives, including but not limited to
          communication on electronic mailing lists, source code control systems,
          and issue tracking systems that are managed by, or on behalf of, the
          Licensor for the purpose of discussing and improving the Work, but
          excluding communication that is conspicuously marked or otherwise
          designated in writing by the copyright owner as "Not a Contribution."
          "Contributor" shall mean Licensor and any individual or Legal Entity
          on behalf of whom a Contribution has been received by Licensor and
          subsequently incorporated within the Work.
       2. Grant of Copyright License. Subject to the terms and conditions of
          this License, each Contributor hereby grants to You a perpetual,
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
          copyright license to reproduce, prepare Derivative Works of,
          publicly display, publicly perform, sublicense, and distribute the
          Work and such Derivative Works in Source or Object form.
       3. Grant of Patent License. Subject to the terms and conditions of
          this License, each Contributor hereby grants to You a perpetual,
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
          (except as stated in this section) patent license to make, have made,
          use, offer to sell, sell, import, and otherwise transfer the Work,
          where such license applies only to those patent claims licensable
          by such Contributor that are necessarily infringed by their
          Contribution(s) alone or by combination of their Contribution(s)
          with the Work to which such Contribution(s) was submitted. If You
          institute patent litigation against any entity (including a
          cross-claim or counterclaim in a lawsuit) alleging that the Work
          or a Contribution incorporated within the Work constitutes direct
          or contributory patent infringement, then any patent licenses
          granted to You under this License for that Work shall terminate
          as of the date such litigation is filed.
       4. Redistribution. You may reproduce and distribute copies of the
          Work or Derivative Works thereof in any medium, with or without
          modifications, and in Source or Object form, provided that You
          meet the following conditions:
          (a) You must give any other recipients of the Work or
              Derivative Works a copy of this License; and
          (b) You must cause any modified files to carry prominent notices
              stating that You changed the files; and
          (c) You must retain, in the Source form of any Derivative Works
              that You distribute, all copyright, patent, trademark, and
              attribution notices from the Source form of the Work,
              excluding those notices that do not pertain to any part of
              the Derivative Works; and
          (d) If the Work includes a "NOTICE" text file as part of its
              distribution, then any Derivative Works that You distribute must
              include a readable copy of the attribution notices contained
              within such NOTICE file, excluding those notices that do not
              pertain to any part of the Derivative Works, in at least one
              of the following places: within a NOTICE text file distributed
              as part of the Derivative Works; within the Source form or
              documentation, if provided along with the Derivative Works; or,
              within a display generated by the Derivative Works, if and
              wherever such third-party notices normally appear. The contents
              of the NOTICE file are for informational purposes only and
              do not modify the License. You may add Your own attribution
              notices within Derivative Works that You distribute, alongside
              or as an addendum to the NOTICE text from the Work, provided
              that such additional attribution notices cannot be construed
              as modifying the License.
          You may add Your own copyright statement to Your modifications and
          may provide additional or different license terms and conditions
          for use, reproduction, or distribution of Your modifications, or
          for any such Derivative Works as a whole, provided Your use,
          reproduction, and distribution of the Work otherwise complies with
          the conditions stated in this License.
       5. Submission of Contributions. Unless You explicitly state otherwise,
          any Contribution intentionally submitted for inclusion in the Work
          by You to the Licensor shall be under the terms and conditions of
          this License, without any additional terms or conditions.
          Notwithstanding the above, nothing herein shall supersede or modify
          the terms of any separate license agreement you may have executed
          with Licensor regarding such Contributions.
       6. Trademarks. This License does not grant permission to use the trade
          names, trademarks, service marks, or product names of the Licensor,
          except as required for reasonable and customary use in describing the
          origin of the Work and reproducing the content of the NOTICE file.
       7. Disclaimer of Warranty. Unless required by applicable law or
          agreed to in writing, Licensor provides the Work (and each
          Contributor provides its Contributions) on an "AS IS" BASIS,
          implied, including, without limitation, any warranties or conditions
          PARTICULAR PURPOSE. You are solely responsible for determining the
          appropriateness of using or redistributing the Work and assume any
          risks associated with Your exercise of permissions under this License.
       8. Limitation of Liability. In no event and under no legal theory,
          whether in tort (including negligence), contract, or otherwise,
          unless required by applicable law (such as deliberate and grossly
          negligent acts) or agreed to in writing, shall any Contributor be
          liable to You for damages, including any direct, indirect, special,
          incidental, or consequential damages of any character arising as a
          result of this License or out of the use or inability to use the
          Work (including but not limited to damages for loss of goodwill,
          work stoppage, computer failure or malfunction, or any and all
          other commercial damages or losses), even if such Contributor
          has been advised of the possibility of such damages.
       9. Accepting Warranty or Additional Liability. While redistributing
          the Work or Derivative Works thereof, You may choose to offer,
          and charge a fee for, acceptance of support, warranty, indemnity,
          or other liability obligations and/or rights consistent with this
          License. However, in accepting such obligations, You may act only
          on Your own behalf and on Your sole responsibility, not on behalf
          of any other Contributor, and only if You agree to indemnify,
          defend, and hold each Contributor harmless for any liability
          incurred by, or claims asserted against, such Contributor by reason
          of your accepting any such warranty or additional liability.
       APPENDIX: How to apply the Apache License to your work.
          To apply the Apache License to your work, attach the following
          boilerplate notice, with the fields enclosed by brackets "[]"
          replaced with your own identifying information. (Don't include
          the brackets!)  The text should be enclosed in the appropriate
          comment syntax for the file format. We also recommend that a
          file or class name and description of purpose be included on the
          same "printed page" as the copyright notice for easier
          identification within third-party archives.
       Copyright [2015] [IBM Corporation]
       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at
       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.
  • Categories
  • Package Index Owner: vberaudi, viulongkong
  • Package Index Maintainer: aurelie, ibm_docloud_team
  • DOAP record: docplex-2.4.61.xml