-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCHANGELOG.html
910 lines (900 loc) · 55.4 KB
/
CHANGELOG.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
<!doctype html>
<html lang="en">
<head>
<meta charset="iso-8859-1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Changelog — IBM® Decision Optimization CPLEX® Modeling for Python (DOcplex) V2.29 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/bizstyle.css?v=c92c1228" />
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=588fc259"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<script src="_static/bizstyle.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<!--[if lt IE 9]>
<script src="_static/css3-mediaqueries.js"></script>
<![endif]-->
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="nav-item nav-item-0"><a href="index.html">IBM® Decision Optimization CPLEX® Modeling for Python (DOcplex) V2.29 documentation</a> »</li>
<li class="nav-item nav-item-this"><a href="">Changelog</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="changelog">
<h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this heading">¶</a></h1>
<section id="changed-in-2-29-241">
<h2>Changed in 2.29.241:<a class="headerlink" href="#changed-in-2-29-241" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>each record of a solve history use a unique timestamp for its fields</p></li>
</ul>
</section>
<section id="changed-in-2-28-240-2024-08">
<h2>Changed in 2.28.240 (2024.08):<a class="headerlink" href="#changed-in-2-28-240-2024-08" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>: robustify the handling of callback messages coming from CP Optimizer</p></li>
<li><p>Allows to use numpy 2.0</p></li>
</ul>
</section>
<section id="changed-in-2-27-239-2024-04">
<h2>Changed in 2.27.239 (2024.04):<a class="headerlink" href="#changed-in-2-27-239-2024-04" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Allows to use numpy 2.0</p></li>
</ul>
</section>
<section id="id1">
<h2>Changed in 2.27.239 (2024.04):<a class="headerlink" href="#id1" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>PEP517, PEP518 build</p></li>
<li><p>Faster PWLs from <a class="reference external" href="https://github.com/IBMDecisionOptimization/docplex/pull/6">PR#6</a>.</p></li>
</ul>
</section>
<section id="changed-in-2-26-237-2023-07">
<h2>Changed in 2.26.237 (2023.07):<a class="headerlink" href="#changed-in-2-26-237-2023-07" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Support for transactional output attachments</p></li>
</ul>
</section>
<section id="changed-in-2-25-236-2023-01">
<h2>Changed in 2.25.236 (2023.01):<a class="headerlink" href="#changed-in-2-25-236-2023-01" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Support of .ops files for parameter handling.</p></li>
<li><p>Improvement on the Nurse example.</p></li>
</ul>
</section>
<section id="changed-in-2-24-232-2022-11">
<h2>Changed in 2.24.232 (2022.11):<a class="headerlink" href="#changed-in-2-24-232-2022-11" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Optional CPLEX import for qiskit</p></li>
<li><p>Fix in cut getter</p></li>
</ul>
</section>
<section id="changed-in-2-24-231-2022-11">
<h2>Changed in 2.24.231 (2022.11):<a class="headerlink" href="#changed-in-2-24-231-2022-11" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Support for CPLEX Optimization Studio 22.1.1 runtimes.</p></li>
<li><p>Cleanup of the code related to Watson Machine Learning.</p></li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Support for sensitivity analysis in Solution.</p></li>
<li><p>Fixes in Solution handling.</p></li>
</ul>
</dd>
</dl>
</li>
<li><p>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:
* Support for ‘inferred’ statement.
* Support for ‘sub_circuit’ constraint.
* Fixed conditional module importation in sched_jobshop_blackbox.py</p></li>
</ul>
</section>
<section id="changed-in-2-23-222-2022-03">
<h2>Changed in 2.23.222 (2022.03):<a class="headerlink" href="#changed-in-2-23-222-2022-03" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Support for CPLEX Optimization Studio 22.1 runtimes.</p></li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Support of parameter sets for multi objective optimization.</p></li>
<li><p>Bug fix for multi objective optimization.</p></li>
<li><p>Correct documentation urls to current CPLEX offering.</p></li>
<li><p>Removal of the deprecated <code class="docutils literal notranslate"><span class="pre">docloud_context</span></code>.</p></li>
<li><p>Performance improvements for model building with 22.1</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Added a new module blackbox to allow the new blackbox function feature</p></li>
<li><p>Wrote full documentation on blackbox functions</p></li>
<li><p>Added a new SearchType ‘Neighborhood’</p></li>
<li><p>Fixed a bug in modeler.same_common_subsequence</p></li>
<li><p>Fixed problem of order of computation of actual solving parameters.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-22-213-2021-09">
<h2>Changed in 2.22.213 (2021.09):<a class="headerlink" href="#changed-in-2-22-213-2021-09" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Removed zeppelin examples</p></li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Added a variant of Model.sum() with variable number of arguments: Model.sums()</p></li>
<li><p>Removed all Python2 compatibility code</p></li>
<li><p>Added deterministic time in solve details.</p></li>
<li><p>Linear relaxer now relaxes SOS variable sets (linear sum relaxation)</p></li>
<li><p>Fixed a bug on Model.solve_with_goals() with quadratic sub-objectives</p></li>
<li><p>Fixed a bug in SolveSolution.kpi_value_by_name</p></li>
<li><p>Fixed a bug in SolveSolution.get_value_dict() about precision filtering</p></li>
<li><p>Fixed a bug when updating a constraint rhs with a NaN value now raises exception.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><dl class="simple">
<dt>Add new methods get_objective_value(), get_objective_bound() and get_objective_gap() on CpoModelSolution</dt><dd><p>and CpoSolveResult to access directly the first objective, bound or gap.</p>
</dd>
</dl>
</li>
<li><p>Support real call to abort_search() instead of killing the solver.</p></li>
<li><p>Add a method get_parameters() to CpoSolver to retrieve actual solving parameters.</p></li>
<li><p>Fix problem of order of computation of actual solving parameters.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-21-207-2021-06">
<h2>Changed in 2.21.207 (2021.06):<a class="headerlink" href="#changed-in-2-21-207-2021-06" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><dl class="simple">
<dt>Add support for importing solution from a different model, provided variables</dt><dd><p>can be matched between both models (Model.import_solution)</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>Added contextual function to temporarily modify aspects of the model:</dt><dd><p><cite>model_parameters</cite> to change parameters in a block, <cite>model_objective</cite> to set a temporary objective in a block.</p>
</dd>
</dl>
</li>
<li><p>Naming expressions is now deprecated, use a temporary variable if needed.</p></li>
<li><dl class="simple">
<dt>Display of expressions in constraints is customizable: use a space separator (or not),</dt><dd><p>set a maximum length for very long expression.</p>
</dd>
</dl>
</li>
<li><p>Fixed documentation references to class Var, moved from linear to dvar</p></li>
<li><p>Fixed a bug in LP export for multi-objective models with no priorities passed</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Replace context attribute solve_with_start_next by solve_with_search_next, keeping ascending compatibility.</p></li>
<li><p>Support solver parameter ModelAnonymizer to generate random names for all model elements (except KPIs) in the CPO file format.</p></li>
<li><p>Optimize generation of CPO expressions from Python expressions</p></li>
<li><p>Interval variable solutions tuples are now named tuples.</p></li>
<li><p>Method CpoModel.add() now accepts multiple expressions (or lists of expressions) to add to the model.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-20-204-2021-02">
<h2>Changed in 2.20.204 (2021.02):<a class="headerlink" href="#changed-in-2-20-204-2021-02" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Add support for exporting solutions and solution pools to SOL format.</p></li>
<li><dl class="simple">
<dt>Add fast methods for changing batches of variable bounds:</dt><dd><p>Model.change_var_lower_bounds, Model.change_var_upper_bounds</p>
</dd>
</dl>
</li>
<li><p>Reset random seed value for cplex 12.10 , was different from COS release value.</p></li>
<li><p>Improved performance of variable creation</p></li>
<li><p>Removed a warning about accessing a deprecated “solve_status” in solve.</p></li>
<li><dl class="simple">
<dt>docplex.mp.AdvModel now has checker enabled by default to avoid Python errors.</dt><dd><p>Is is up to the user to disable type-checking to get maximum performance.</p>
</dd>
</dl>
</li>
<li><p>Fixed a bug about not printing updated variable bounds in MPS and SAV</p></li>
<li><p>Changed the default rounding behavior: solution values are not rounded by default.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Fix problems on step function operations.</p></li>
<li><p>Add status in conflict refiner solution object.</p></li>
<li><p>Fix a bug to not send and receive conflict in CPO format if no conflict.</p></li>
<li><p>Enhance printing of model solution.</p></li>
<li><p>The method search_next(), returns only new solutions of the model.
In particular, no new solution is returned if solve status just change from Feasible to Optimal.</p></li>
<li><p>Rework completely model statistics (CpoModelStatistics)</p></li>
<li><p>Add a parameter add_cpo to the write method of CpoRefineConflictResult</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-19-202-2020-12">
<h2>Changed in 2.19.202 (2020.12):<a class="headerlink" href="#changed-in-2-19-202-2020-12" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Exporting models to SAV.gz format is now supported.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Add a new method remove_expressions() to CpoModel that removes a list of expressions in one shot.</p></li>
<li><p>Update documentation to describe how to set private solver parameters.</p></li>
<li><p>Add functions to export and import context as flat file.</p></li>
<li><p>Fix a bug on the string representation of calls to constant() modeling function.</p></li>
<li><p>Add JSON filter in case of double identical value for objective.</p></li>
<li><p>Add functions to export and import context as flat file.</p></li>
<li><p>Fix a bug on the string representation of calls to constant() modeling function.</p></li>
<li><p>Add JSON filter in case of double value for objective.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-18-200-2020-11-3">
<h2>Changed in 2.18.200 (2020.11.#3):<a class="headerlink" href="#changed-in-2-18-200-2020-11-3" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Latest supported CPLEX Optimization Studio is now 20.1</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-17-196-2020-11-2">
<h2>Changed in 2.17.196 (2020.11.#2):<a class="headerlink" href="#changed-in-2-17-196-2020-11-2" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Fixed a bug with pickling: edition of a constraint in a pickled model raised an error</p></li>
<li><p>Fixed a bug with pickling: models with piecewise-linear constraints could not be pickled</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Add environment variable DOCPLEX_CP_CONTEXT to modify configuration</p></li>
<li><p>Add new module check_list that print a report on execution environment</p></li>
<li><p>Remove DOcloud from documentation (including code)</p></li>
<li><p>Rework customization of configuration and better support of default directory</p></li>
<li><p>Add new configuration parameter model.sort_names to drive sort of variable declarations in CPO file format.</p></li>
<li><p>Fix a problem that may crash Python in case of abort_search with local solve.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-16-196-2020-11">
<h2>Changed in 2.16.196 (2020.11):<a class="headerlink" href="#changed-in-2-16-196-2020-11" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>add <cite>Model.add_quadratic_constraints()</cite> to add a batch of quadratic constraints</p></li>
<li><p>add <cite>Model.populate_solution_pool()</cite> for a native support of solurtion pools</p></li>
<li><p>support of CPLEX 20.1</p></li>
<li><p>compatible with Python 3.8 (only with CPLEX 20.1)</p></li>
<li><p>enable changing absolute and relative tolerances for multi-objectives</p></li>
<li><p>Optimization of <cite>Model.if_then</cite>: when condition is of the form <cite>b==1</cite> (or 0), no additional boolean
variable is generated</p></li>
<li><p>For solving, <cite>docplex.mp</cite> now uses the <cite>cplex</cite> module if it has been installed. If not, <cite>docplex.mp</cite>
checks for the latest installed version of CPLEX Optimization Studio (COS) (using the CPLEX_STUDIO_DIRXXX
environment variables) and use the <cite>cplex</cite> if a COS is found, unless the configuration of the engine
states otherwise.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Add pngfile= parameter to visu.show() method to store in a PNG file instead of display on screen.</p></li>
<li><p>Make parameters and solver infos also available in refine_conflict solution.</p></li>
<li><p>Add a IntegerDomain class used to represent domain of integer variables, with a specific __str__ method</p></li>
<li><p>Add new functions ceil(), floor(), trunc(), round() and sgn()</p></li>
<li><p>Remove all warnings generated by Python 38</p></li>
<li><p>Optimize creation of add expressions with CumulExpr and zero</p></li>
<li><p>Implement configurable factorization of common model expressions when generating CPO format</p></li>
<li><p>Add checking of scal_prod() array sizes at modeling time</p></li>
<li><p>Add strict_lexicographic() and checking of strict_lexicographic() and lexicographic() array sizes at modeling time.</p></li>
<li><p>Add failure explanation as new method explain_failure() allowing to log failure tags or get details on one or several failures.</p></li>
<li><p>Enhance management of local solve sub-process timeout with detailed error and configurable timeout delay</p></li>
<li><p>For solving, <cite>docplex.cp</cite> now uses the <cite>cpoptimizer</cite> executable if it has been installed. If not, <cite>docplex.cp</cite>
checks for the latest installed version of CPLEX Optimization Studio (COS) (using the CPLEX_STUDIO_DIRXXX
environment variables) and use the <cite>cpoptimizer</cite> if a COS is found, unless the configuration of the engine
states otherwise.</p></li>
<li><p>Support last optimal solution in search/next sequence</p></li>
<li><p>Support of solver parameters in all next() solutions</p></li>
<li><p>Add solver version in process info attached to a run result</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-15-194-2020-07">
<h2>Changed in 2.15.194 (2020.07):<a class="headerlink" href="#changed-in-2-15-194-2020-07" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>add Model.quadratic_dual_slacks()</p></li>
<li><p>Fixed a bug in multi-objectives: objectives were incorrectly rounded</p></li>
<li><p>Fixed a bug in Model.report(): multiple objective values were not displayed()</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Add conflict in CPO format in refine conflict result</p></li>
<li><p>Fix problem when parsing KPIs section of a CPO model</p></li>
<li><p>Add method add_constraint() to model for compatibility with docplex.mp</p></li>
<li><p>Comment method get_fail_status() of SolveResult as deprecated.</p></li>
<li><p>Fix problem of wrong import of deque in collections.abc</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-14-186-2020-05">
<h2>Changed in 2.14.186 (2020.05):<a class="headerlink" href="#changed-in-2-14-186-2020-05" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Updated tracking events in Watson studio notebooks.</p></li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Model.solve() will not use solve on cloud unless <cite>agent</cite> is specifically set to ‘docloud`.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-13-184-2020-03">
<h2>Changed in 2.13.184 (2020.03):<a class="headerlink" href="#changed-in-2-13-184-2020-03" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Removed dependency to the <cite>docloud</cite> package. Now you need to explicitely install the package using <cite>pip install docloud</cite> to use DOcplexcloud.</p></li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>added Model.export_as_mps_string(), Model.export_as_sav_string()</p></li>
<li><dl class="simple">
<dt>fixed a bug with dettime_limit: solving with a deterministic time limit</dt><dd><p>was mis-interpreted as a solve failure, returning None.</p>
</dd>
</dl>
</li>
<li><p>fixed bug on cplexcloud solve: number of nodes processed was always zero.</p></li>
<li><p>repeated solves incorrectly restarted from start of search, now start from where the last solve stopped.</p></li>
<li><p>added keyword argument ‘time_limit’ to Model.solve() to set a temporary time limit.</p></li>
<li><p>added new method SolveSolution.is_valid_solution()</p></li>
<li><p>fixed a bug in ModelReader: ranged constraints bounds were inverted when reading from SAV or MPS.</p></li>
<li><p>fixed a bug in Model.set_lex_multiobj(): arguments abstols, reltols were ignored.</p></li>
<li><p>added proper type-checking for Model.add_indicator_constraints()</p></li>
<li><p>added docplex.mp.check_list/py to check local installation.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Enable reading of #line directives when parsing a CPO file</p></li>
<li><p>Remove parameter LogSearchTags from public parameters</p></li>
<li><p>Fix a minor problem concerning compilation of KPI expressions in CPO format</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-12-182-2019-12">
<h2>Changed in 2.12.182 (2019.12):<a class="headerlink" href="#changed-in-2-12-182-2019-12" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Added a LinearRelaxer class to make a linearized copy of a MIP model (if possible).
see class <cite>docplex.mp.relax_linear.LinearRelaxer</cite></p></li>
<li><p>Conflict refiner default behavior is now identical to CPLEX interactive
(the new behavior is much faster).</p></li>
<li><p>Bug fixed: expressions of the form k*x did not notify constraints when modified.</p></li>
<li><p>Fixed: message “ignored keyword argument” was incorrectly printed when setting
<cite>cts_by_name=True</cite> in model constructor.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-11-176-2019-11">
<h2>Changed in 2.11.176 (2019.11):<a class="headerlink" href="#changed-in-2-11-176-2019-11" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Added support for CPLEX 12.10</p></li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Logical expressions, binary variables, and constraints can now be freely nested with logical operators.</p></li>
<li><p>Fixed a print of ‘CPLEX Error 1217’ in log for multi-objective problems.</p></li>
<li><p>Fixed a bug when setting log_output to a file name: file was created, but empty.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-10-155-2019-08">
<h2>Changed in 2.10.155 (2019.08):<a class="headerlink" href="#changed-in-2-10-155-2019-08" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Fixed bug in logical_and() when result var is set to 0.</p></li>
</ul>
</section>
<section id="changed-in-2-10-154-2019-07">
<h2>Changed in 2.10.154 (2019.07):<a class="headerlink" href="#changed-in-2-10-154-2019-07" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Fixed TypeError occuring in python 3.7 in progressData initialization.</p></li>
</ul>
</section>
<section id="changed-in-2-10-151-2019-07">
<h2>Changed in 2.10.151 (2019.07):<a class="headerlink" href="#changed-in-2-10-151-2019-07" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>fixed a bug in ModelReader when reading SAV files with no names</p></li>
<li><p>fixed a bug in mip starts, which prevented mip starts with piecewise
functions to work properly.</p></li>
<li><p>fixed bug on Model.add_indicators() using comprehensions (len() was called).</p></li>
<li><p>Added support for the ‘!=’ (not equals) operator in expressions.</p></li>
<li><p>Clarified four types of checker: on, off, numeric and full.
Pass checker=<name> at model creation to specify which checker is used.</p></li>
<li><p>fixed a bug in solution JSON encoder for nonconvex QP problems.</p></li>
<li><p>Add direct support for lazy constraints, see Model.add_lazy_constraints()</p></li>
<li><p>Add direct support for user cuts, see Model.add_user_cut_constraints()</p></li>
<li><p>Get basis status of variables in LP problems, see <cite>Var.basis_status</cite></p></li>
<li><p>Read MIP start files (MST format)</p></li>
<li><p>Allow to set the effort level for a MIP solution.</p></li>
<li><p>Read basis status files (in BAS format)</p></li>
<li><p>Read variable priority orders (in ORD format)</p></li>
<li><p>fixed bug in functional KPIs, solution argument was not passed on.</p></li>
<li><p>Enable constraint name dictionary at Model creation time: Model(cts_by_name=True)</p></li>
<li><p>Multi-objective is now pickled correctly</p></li>
<li><p>Multi-objective is now copied in Model.copy()</p></li>
<li><p>Wrote full documentation on progress listeners</p></li>
<li><p>Added <cite>Model.set_lp_start_basis()</cite> to provide an initial basis for LP problems.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>When trying to access a solution member that does not exists, an exception is thrown instead of returning None.</p></li>
<li><p>Add a new map_solution function that replace in a Python object all model expressions by their value in a solve result.</p></li>
<li><p>In CPO parser, fix a problem reading #line statements in startingPoint section.</p></li>
<li><p>In CPO parser, skip experimental section ‘expressions’ in ‘startingPoint’ section.</p></li>
<li><p>Simplify writing of interval variable domains reduced to a single value.</p></li>
<li><p>Adding a second objective function now raises an exception</p></li>
<li><p>Add new experimental local solve with a shared library.</p></li>
<li><p>Enable iterators to specify the domain of an integer variable</p></li>
<li><p>Add global methods get_version_info() and get_solver_verion() in docplex.cp.solver.</p></li>
<li><p>By default, generate CPO model without explicit format version.</p></li>
<li><p>Add a method reset() on CpoParameters object.</p></li>
<li><p>Modeling method allowed_assignments() and forbidden_assignments() can now accept an empty list of tuples.</p></li>
<li><p>On CpoModelSolution object, add a function map_solution() thar replace variables by their value in a python object.</p></li>
<li><p>Add parser for LP models</p></li>
<li><p>Add possibility to import CPO, MZN and LP models in gzip and zip format.</p></li>
<li><p>Enhance management of unexpected errors thrown by cpoptimizer.exe</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-9-141-2019-03">
<h2>Changed in 2.9.141 (2019.03):<a class="headerlink" href="#changed-in-2-9-141-2019-03" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Removed links to rawgit.com as this service is going end of life.</p></li>
<li><p>Model.solve_lexicographic() is deprecated. This method should be used
to perform lexicographic solve with COS 12.8, but with COS 12.9,
Model.set_multi_objective() should be used for solving problems
with multiple objectives.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Add KPIs supported by CPO Solver 12.9</p></li>
<li><p>Update CPO parser to read KPIs section for format 12.9</p></li>
<li><p>Add new examples with KPIs.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-8-125-2018-10">
<h2>Changed in 2.8.125 (2018.10):<a class="headerlink" href="#changed-in-2-8-125-2018-10" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Solving with solver agent ‘docloud’ is deprecated.
Models are now preferably solved with local solver, or the python source can be submitted to DOcplexcloud solve service.
See <a class="reference external" href="https://ibm.biz/BdYhhK">https://ibm.biz/BdYhhK</a>.</p></li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>solve_lexicographic is being deprecated. In a future version, a new api will be available to support multi-objectives.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Fix problem with boolean indicators in no_overlap(), always_constant() and always_equal().</p></li>
<li><p>Allow model solution to be used directly as a starting point (ignores what is not integer or interval var).</p></li>
<li><p>Add methods domain_min(), domain_max(), domain_iterator() and domain_contains() on both CpoIntVar and CpoIntVarSolution.</p></li>
<li><p>Default solver agent is now ‘local’ instead of ‘docloud’. All examples modified consequently.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-7-113-2018-07">
<h2>Changed in 2.7.113 (2018.07):<a class="headerlink" href="#changed-in-2-7-113-2018-07" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Multiplying a constant expression by a quadratic expression raised an exception. Now returns the
product of the quadratic expression and the constant value.</p></li>
<li><p>Model.solve_lexicographic() on cloud now send the previous pass solution as a MIP start (for MIP problems)</p></li>
<li><p>The slack of quadratic constraints always returned zero. Now returns the correct value.</p></li>
<li><p>Accessing the dual (or slack) of a constraint that is not added to the model returned zero; now it raises an exception. A constraint must belong to a model to return a valid dual (or slack) value</p></li>
<li><p>Range constraints with infeasible domain (i.e. lb > ub) did not fail to solve. Now they raise a modeling exception.</p></li>
<li><p>Multiplying two absolute value expressions raised an exception. Now fixed.</p></li>
<li><p>When using tuples in variable dictionaries, the default name generation used to generate non-LP-compliant names,
because of ( and ). Now the name generator formats the tuples with a “_” separator without parentheses.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Split fzn stuff in a separate package docplex.cp.fzn</p></li>
<li><p>Optimize construction of arrays in FZN parser</p></li>
<li><p>Enhance FZN parser and save 30% time</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-6-94-2018-04">
<h2>Changed in 2.6.94 (2018.04):<a class="headerlink" href="#changed-in-2-6-94-2018-04" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Allow CpoModel.add() to accept list of constraints.</p></li>
<li><p>Fix a bug in the conversion of an array of boolean constants into CPO expression.</p></li>
<li><p>Extend CpoModel method set_parameters() to accept a dictionary and/or optional list of updates using named arguments.</p></li>
<li><p>Method CpoModel.set_parameters() now clone the CpoParameters object given in arguments.</p></li>
<li><p>Add a new method CpoModel.add_parameters() that updates parameters associated to the model.</p></li>
<li><p>Fix wrong source location (not in real model source) when CpoModel.add() is called from another docplex.cp method.</p></li>
<li><p>When constraint auto-naming is on (in particular for refine_conflict(), searchPhases are no more included in the process.</p></li>
<li><p>Parameters mean_UB and mean_LB are now optional in standard_deviation()</p></li>
<li><p>CpoModel.add() checks that the added expression is limited to constraint, boolean, objective or search phase.</p></li>
<li><p>Add documented functions slope_piecewise_linear() and coordinate__piecewise_linear() in modeler.py.</p></li>
<li><p>Remove default configuration settings for parameters TimeLimit and Workers.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-5-92-2018-03">
<h2>Changed in 2.5.92 (2018.03):<a class="headerlink" href="#changed-in-2-5-92-2018-03" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">docplex.cli</span></code> gains new features:</dt><dd><ul>
<li><p>option <code class="docutils literal notranslate"><span class="pre">--details</span></code> will display solve details as they are published on
DOcplexcloud.</p></li>
<li><p>options <code class="docutils literal notranslate"><span class="pre">--url</span></code> and <code class="docutils literal notranslate"><span class="pre">-key</span></code> allow specification of credentials without
using a config file.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Fix problem with min() and max() that did not support optional key.</p></li>
<li><p>Add a Flatzinc parser capable of reading Minizinc Challenge problems.</p></li>
<li><p>Move expression dependencies analysis from model to compiler side.</p></li>
<li><p>No more constraint to have a unique name for model expressions. Compiler reallocate private names when needed.</p></li>
<li><p>Multiple variables or expressions with the same public name is now allowed.</p></li>
<li><p>Replace method CpoModel.get_expression() by CpoModel.get_named_expressions_dict().</p></li>
<li><p>Make SolverProgressPanelListener work properly with Python 2</p></li>
<li><p>Solve is automatically set to start/next loop when SolverProgressPanelListener is used.</p></li>
<li><p>In CpoModel, add a method that allows to substitute a function by another in the whole model.</p></li>
<li><p>Overwrite method __bool__ to avoid accidental use of CPO expressions as Python booleans.</p></li>
<li><p>Add special cases to search for the local CP Optimizer Interactive executable.</p></li>
<li><p>Allow methods min(), max(), min_of() and max_of() to support variable number of arguments.</p></li>
<li><p>Allow method all_diff() to support variable number of arguments.</p></li>
<li><p>Context parameter ‘length_for_rename’ is deprecated. Only length_for_alias is used.</p></li>
<li><p>Add a method add_var() in CpoModelSolution as a shortcut to add_integer_var_solution() and add_interval_var_solution()</p></li>
<li><p>Overwrite method __contains__() in CpoModelSolution to easily verify that a solution to a given variable is in the solution.</p></li>
<li><p>When called on a model, export_model() and get_cpo_string() disable all model optimization options.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-4-61-2017-11">
<h2>Changed in 2.4.61 (2017.11):<a class="headerlink" href="#changed-in-2-4-61-2017-11" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><dl class="simple">
<dt>Both <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code> & <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>Support for CPLEX engines 12.8. Some features of docplex2.4 are available only with engines >= 12.8.</p></li>
<li><p>Adding new ports (AIX, plinux).</p></li>
<li><p>Examples are now available as Zeppelin notebooks.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>:</dt><dd><ul>
<li><p>Express a linear problem as a scikit-learn transformer by providing a numpy, a pandas or scipy matrix.</p></li>
<li><p>Logical constraints: constraint equivalence, if-then & rshift operator.</p></li>
<li><p>Meta-constraints: allow the use of discrete
linear constraints in expressions, using their truth value.</p></li>
<li><p>Solve hook to add a method to be called at each intermediate solution.</p></li>
<li><p>KPIS automatically published at each intermediate solution if running on docplexcloud python worker.</p></li>
<li><p>Support for scipy coo & csr matrixes.</p></li>
<li><p>Fixed a bug in Model.add_constraints() when passing a string instead of a list of strings.</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>In <code class="docutils literal notranslate"><span class="pre">docplex.cp</span></code>:</dt><dd><ul>
<li><p>add new method run_seeds() to execute a model multiple times, available with local solver 12.8.</p></li>
<li><p>add support of new solver infos ‘SearchStatus’ and ‘SearchStopCause’.</p></li>
<li><p>In method <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.CpoModel.propagate()</span></code>, add possibility to add an optional constraint to the model.</p></li>
<li><p>add domain iterator in integer variables and integer variables solutions, allowing to get domain
as a list of individual integers.</p></li>
<li><p>add possibility to identify some model variables as KPIs of the model.</p></li>
<li><p>add abort_search() method on solver (not supported everywhere)</p></li>
<li><p>Rework code generation to enhance performances and remove unused variables that was pointed by removed expressions.</p></li>
<li><p>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 <code class="docutils literal notranslate"><span class="pre">docplex.cp.solver.solver_listener</span></code> that also contains sample
listeners SolverProgressPanelListener and AutoStopListener.</p></li>
<li><p>Using parameter <em>context.solver.solve_with_start_next</em>, 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.</p></li>
<li><p>Completely remove deprecated ‘angel’ to identify local solver.</p></li>
<li><p>Deprecate usage of methods <code class="docutils literal notranslate"><span class="pre">minimize()</span></code> and <code class="docutils literal notranslate"><span class="pre">maximize()</span></code> on <code class="docutils literal notranslate"><span class="pre">docplex.cp.CpoModel</span></code>.</p></li>
<li><p>Add methods <code class="docutils literal notranslate"><span class="pre">get_objective_bounds()</span></code> and <code class="docutils literal notranslate"><span class="pre">get_objective_gaps()</span></code> in solution objects.</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</section>
<section id="changed-in-2-3-44-2017-09">
<h2>Changed in 2.3.44 (2017.09):<a class="headerlink" href="#changed-in-2-3-44-2017-09" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Module <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.solver_angel.py</span></code> has been renamed <code class="docutils literal notranslate"><span class="pre">solver_local.py</span></code>.
A shadow copy with previous name still exist to preserve ascending compatibility.
Module <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.config.py</span></code> is modified to refer this new module.</p></li>
<li><p>Class <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.solver_local.SolverAngel</span></code> has been renamed <code class="docutils literal notranslate"><span class="pre">SolverLocal</span></code>.
A shadow copy with previous name still exist to preserve ascending compatibility.</p></li>
<li><p>Class <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.solver_local.AngelException</span></code> has been renamed <code class="docutils literal notranslate"><span class="pre">LocalSolverException</span></code>.
A shadow copy with previous name still exist to preserve ascending compatibility.</p></li>
<li><p>Functions logical_and() and logical_or() are able to accept a list of model boolean expressions.</p></li>
<li><p>Fix defect on allowed_assignments() and forbiden_assignments() that was wrongly converting
list of tupes into tuple_set.</p></li>
<li><p>Update all examples to add comments and split them in sections data / prepare / model / solve</p></li>
<li><p>Add new sched_RCPSPMM_json.py example that reads data from JSON file instead of raw data file.</p></li>
<li><p>Rename all visu examples with more explicit names.</p></li>
<li><p>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)</p></li>
<li><p>Allow logical_and() and logical_or() to accept a list of boolean expressions.</p></li>
<li><p>Add overloading of builtin functions all() and any() as other form of logical_and() and logical_or().</p></li>
<li><p>In no_overlap() and state_function(), transition matrix can be passed directly as a Python iterable of iterables of integers,</p></li>
<li><p>Editable transition matrix, created with a size only, is deprecated. However it is still available for ascending compatibility.</p></li>
<li><p>Add conditional() modeling function</p></li>
<li><p>Parameter ‘AutomaticReplay’ is deprecated.</p></li>
<li><p>Add get_search_status() and get_stop_cause() on object CpoSolveResult, available for solver COS12.8</p></li>
<li><p>Improved performance of <code class="docutils literal notranslate"><span class="pre">Var.reduced_cost()</span></code> in <code class="docutils literal notranslate"><span class="pre">docplex.mp</span></code>.</p></li>
</ul>
</section>
<section id="changed-in-2-2-34-2017-07">
<h2>Changed in 2.2.34 (2017.07):<a class="headerlink" href="#changed-in-2-2-34-2017-07" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Methods <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.export_model()</span></code> and <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.import_model()</span></code>
have been added to respectively generate or parse a model in CPO format.</p></li>
<li><p>Methods <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.minimize()</span></code> and <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.maximize()</span></code>
have been added to directly indicate an objective at model level.</p></li>
<li><p>Notebook example <code class="docutils literal notranslate"><span class="pre">scheduling_tuto.ipynb</span></code> contains an extensive tutorial
to solve scheduling problems with CP.</p></li>
<li><p>Modeling method sum() now supports sum of cumul expressions.</p></li>
<li><p>Methods <code class="docutils literal notranslate"><span class="pre">docplex.cp.model.start_search()</span></code> allows to start a new
search sequence directly from the model object.</p></li>
<li><p>When setting <code class="docutils literal notranslate"><span class="pre">context.solver.auto_publish</span></code> is set, and using the CPLEX
engine, KPIs and current objective are automatically published when the
script is run on DOcplexcloud Python worker.</p></li>
<li><p>When setting <code class="docutils literal notranslate"><span class="pre">context.solver.auto_publish</span></code> is set, and using the CP
engine, current objective is automatically published when the
script is run on DOcplexcloud Python worker.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">docplex.util.environment.Environment.set_stop_callback</span></code> and
<code class="docutils literal notranslate"><span class="pre">docplex.util.environment.Environment.get_stop_callback</span></code> are added so that
you can add a callback when the DOcplexcloud job is aborted.</p></li>
</ul>
</section>
<section id="changed-in-2-1-28">
<h2>Changed in 2.1.28:<a class="headerlink" href="#changed-in-2-1-28" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>New methods <code class="docutils literal notranslate"><span class="pre">Model.logical_or()</span></code> and <code class="docutils literal notranslate"><span class="pre">Model.logical_and()</span></code> handle
logical operations on binary variables.</p></li>
<li><p>DOcplex now supports CPLEX 12.7.1 and Benders decomposition. Set annotations
on constraints and variables using the <code class="docutils literal notranslate"><span class="pre">benders_annotation</span></code> property and use
the proper CPLEX parameters governing Benders decomposition.</p></li>
<li><p>CPLEX tutorials: in the documentation and as notebooks in the examples.</p></li>
<li><p>Fixed a bug in <code class="docutils literal notranslate"><span class="pre">docplex.mp.solution.SolveSolution.display()</span></code> and in
<code class="docutils literal notranslate"><span class="pre">docplex.mp.solution.Model.report_kpi()</span></code> when using unicode variable names.</p></li>
<li><p>There’s now a simple command line interface for DOcplexcloud. It can be run
in a terminal. <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">-m</span> <span class="pre">docplex.cli</span> <span class="pre">help</span></code> for more info. That command
line reads your DOcplexcloud credentials in your cplex_config.py file. It
allows you to submit, list, delete jobs on DOcplexcloud. The cli is available
in notebooks too, using the <code class="docutils literal notranslate"><span class="pre">%docplex_cli</span></code> magics. <code class="docutils literal notranslate"><span class="pre">%docplex_cli</span> <span class="pre">help</span></code> for
some help. In a notebook, credentials can be passed using <cite>%docplex_url</cite> and
<cite>%docplex_key</cite> magics.</p></li>
<li><p>Removing constraints in 1 call</p></li>
<li><p>Bug fixes when editing an existing model.</p></li>
<li><p>Bug fix in the relaxation mechanism when using docplexcloud.</p></li>
</ul>
</section>
<section id="changed-in-2-0-15">
<h2>Changed in 2.0.15:<a class="headerlink" href="#changed-in-2-0-15" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Piecewise linear (PWL) functions are now supported. An API is now available
on <code class="docutils literal notranslate"><span class="pre">docplex.mp.model</span></code> 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.</p></li>
<li><p>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.</p></li>
<li><p>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.</p></li>
<li><p>docplex is now available on Anaconda cloud and can be installed via the conda installation packager.
See the <a class="reference external" href="https://anaconda.org/IBMDecisionOptimization">IBM Anaconda home</a>
CPLEX Community Edition for Python is also provided on Anaconda Cloud to get free local solving capabilities with limitations.</p></li>
<li><p>Support of <code class="docutils literal notranslate"><span class="pre">~/.docplexrc</span></code> configuration files for <code class="docutils literal notranslate"><span class="pre">docplex.mp.context.Context</span></code> is now dropped.
This feature has been deprecated since 1.0.0.</p></li>
<li><p>Known incompatibility: class <code class="docutils literal notranslate"><span class="pre">docplex.mp.model.AbstractModel</span></code> moved to <code class="docutils literal notranslate"><span class="pre">docplex.mp.absmodel.AbstractModel</span></code>.
Samples using this class have been updated.</p></li>
</ul>
</section>
<section id="changed-in-1-0-630">
<h2>Changed in 1.0.630:<a class="headerlink" href="#changed-in-1-0-630" title="Permalink to this heading">¶</a></h2>
<ul class="simple">
<li><p>Added support for CPLEX 12.7 and Python 3.5.</p></li>
<li><p>Upgraded the DOcplexcloud client to version 1.0.202.</p></li>
<li><p>Module <code class="docutils literal notranslate"><span class="pre">docplex.mp.advmodel</span></code> is now officially supported. This module
provides support for efficient, specialized aggregator methods for large
models.</p></li>
<li><p>When solving on DOcplexcloud, proxies can now be specified with the
<code class="docutils literal notranslate"><span class="pre">context.solver.docloud.proxies</span></code> property.</p></li>
<li><p>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.</p></li>
<li><p>Fix ValueError when passing a pandas DataFrame as variable keys (using
DataFrame indexes).</p></li>
<li><p>Solution.get_values() returns a collection of variable values in one call.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">docplex.mp.model</span></code> no longer imports <code class="docutils literal notranslate"><span class="pre">docloud.status</span></code>. Any status
previously initialized as <code class="docutils literal notranslate"><span class="pre">JobSolveStatus.UNKNOWN</span></code> is now initialized as
<code class="docutils literal notranslate"><span class="pre">None</span></code>.</p></li>
<li><p>Minor improvements to notebooks and examples.</p></li>
</ul>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div>
<h3><a href="index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Changelog</a><ul>
<li><a class="reference internal" href="#changed-in-2-29-241">Changed in 2.29.241:</a></li>
<li><a class="reference internal" href="#changed-in-2-28-240-2024-08">Changed in 2.28.240 (2024.08):</a></li>
<li><a class="reference internal" href="#changed-in-2-27-239-2024-04">Changed in 2.27.239 (2024.04):</a></li>
<li><a class="reference internal" href="#id1">Changed in 2.27.239 (2024.04):</a></li>
<li><a class="reference internal" href="#changed-in-2-26-237-2023-07">Changed in 2.26.237 (2023.07):</a></li>
<li><a class="reference internal" href="#changed-in-2-25-236-2023-01">Changed in 2.25.236 (2023.01):</a></li>
<li><a class="reference internal" href="#changed-in-2-24-232-2022-11">Changed in 2.24.232 (2022.11):</a></li>
<li><a class="reference internal" href="#changed-in-2-24-231-2022-11">Changed in 2.24.231 (2022.11):</a></li>
<li><a class="reference internal" href="#changed-in-2-23-222-2022-03">Changed in 2.23.222 (2022.03):</a></li>
<li><a class="reference internal" href="#changed-in-2-22-213-2021-09">Changed in 2.22.213 (2021.09):</a></li>
<li><a class="reference internal" href="#changed-in-2-21-207-2021-06">Changed in 2.21.207 (2021.06):</a></li>
<li><a class="reference internal" href="#changed-in-2-20-204-2021-02">Changed in 2.20.204 (2021.02):</a></li>
<li><a class="reference internal" href="#changed-in-2-19-202-2020-12">Changed in 2.19.202 (2020.12):</a></li>
<li><a class="reference internal" href="#changed-in-2-18-200-2020-11-3">Changed in 2.18.200 (2020.11.#3):</a></li>
<li><a class="reference internal" href="#changed-in-2-17-196-2020-11-2">Changed in 2.17.196 (2020.11.#2):</a></li>
<li><a class="reference internal" href="#changed-in-2-16-196-2020-11">Changed in 2.16.196 (2020.11):</a></li>
<li><a class="reference internal" href="#changed-in-2-15-194-2020-07">Changed in 2.15.194 (2020.07):</a></li>
<li><a class="reference internal" href="#changed-in-2-14-186-2020-05">Changed in 2.14.186 (2020.05):</a></li>
<li><a class="reference internal" href="#changed-in-2-13-184-2020-03">Changed in 2.13.184 (2020.03):</a></li>
<li><a class="reference internal" href="#changed-in-2-12-182-2019-12">Changed in 2.12.182 (2019.12):</a></li>
<li><a class="reference internal" href="#changed-in-2-11-176-2019-11">Changed in 2.11.176 (2019.11):</a></li>
<li><a class="reference internal" href="#changed-in-2-10-155-2019-08">Changed in 2.10.155 (2019.08):</a></li>
<li><a class="reference internal" href="#changed-in-2-10-154-2019-07">Changed in 2.10.154 (2019.07):</a></li>
<li><a class="reference internal" href="#changed-in-2-10-151-2019-07">Changed in 2.10.151 (2019.07):</a></li>
<li><a class="reference internal" href="#changed-in-2-9-141-2019-03">Changed in 2.9.141 (2019.03):</a></li>
<li><a class="reference internal" href="#changed-in-2-8-125-2018-10">Changed in 2.8.125 (2018.10):</a></li>
<li><a class="reference internal" href="#changed-in-2-7-113-2018-07">Changed in 2.7.113 (2018.07):</a></li>
<li><a class="reference internal" href="#changed-in-2-6-94-2018-04">Changed in 2.6.94 (2018.04):</a></li>
<li><a class="reference internal" href="#changed-in-2-5-92-2018-03">Changed in 2.5.92 (2018.03):</a></li>
<li><a class="reference internal" href="#changed-in-2-4-61-2017-11">Changed in 2.4.61 (2017.11):</a></li>
<li><a class="reference internal" href="#changed-in-2-3-44-2017-09">Changed in 2.3.44 (2017.09):</a></li>
<li><a class="reference internal" href="#changed-in-2-2-34-2017-07">Changed in 2.2.34 (2017.07):</a></li>
<li><a class="reference internal" href="#changed-in-2-1-28">Changed in 2.1.28:</a></li>
<li><a class="reference internal" href="#changed-in-2-0-15">Changed in 2.0.15:</a></li>
<li><a class="reference internal" href="#changed-in-1-0-630">Changed in 1.0.630:</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="nav-item nav-item-0"><a href="index.html">IBM® Decision Optimization CPLEX® Modeling for Python (DOcplex) V2.29 documentation</a> »</li>
<li class="nav-item nav-item-this"><a href="">Changelog</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2016-2022, IBM®.
</div>
</body>
</html>