forked from Pyomo/pyomo
-
Notifications
You must be signed in to change notification settings - Fork 2
/
CHANGELOG.txt
1623 lines (1349 loc) · 66.3 KB
/
CHANGELOG.txt
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
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
===============
Pyomo CHANGELOG
===============
-------------------------------------------------------------------------------
Current Development
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Pyomo 5.6.8 13 Dec 2019
-------------------------------------------------------------------------------
- General
- Fix collections imports for Python 3.x (#1175)
- Add verbose logging options for infeasibility testing (#1207)
- Core
- Remove deprecated call to formatargspec in Python 3.x (#1174)
- Remove old, unreachable code in PyomoModel.py (#1189)
- Clean up default argument for variable fix method (#1221)
- Solver Interfaces
- Fix incorrect precision warnings in the GAMS and BARON writers (#1166)
- Fix typo in MOSEK problem status handling (#1170)
- Fix bug in NEOS interface for Python 3.x (#1206)
- DAE updates
- Fix bug in get_index_information (#1195)
- Remove use of _implicit_subsets (#1197)
- PySP updates
- Expose options for CC and CVaR in the rapper interface (#1211)
- Testing
- Disable extras on Appveyor Python 3.7 build (#1180)
- Add Python 3.8 to Travis test suite (#1182)
- Updates to Jenkins build infrastructure (#1216)
- Documentation
- Minor updates for PySP, GDP, stream-based walkers, and installation
(#1168, #1191, #1204, #1208)
- Contributed Packages
- Add MC++ compiled library version checking (#1172)
- Fix minor type mismatch in PyNumero (#1214)
- Fix deprecation warning in Mindtpy (#1188)
- Add test skipping to trust region tests requiring IPOPT (#1220)
-------------------------------------------------------------------------------
Pyomo 5.6.7 7 Nov 2019
-------------------------------------------------------------------------------
- General
- Update links to tutorials and examples in the README (#1082)
- Verify Python 3.8 support (#1162)
- Core
- Add a guard in getname for ComponentData with no parent (#1075)
- Add support for sqrt in Python-based AD implementation (#1086)
- Add methods to IndexedVar to set bounds for all indices (#1087)
- Replace ReciprocalExpression with DivisionExpression (#989)
- Fix bug where Set multiplication changed the original Sets (#1103)
- Improve ease of use of LinearExpression constructor (#1097)
- Tech preview of the Set component hierarchy rewrite (#1111)
- Add a get_interval method for Sets (#1128)
- Update pprint method for derived classes and add support for printing
ComponentData (#1043)
- Create a common interface for differentiation (#1059)
- Add function to calculate the Taylor series approximation of an
expression (#1059)
- Fix in Sympy interface to avoid complex numbers (#1140)
- Add support for log10 in differentiation (#1145)
- Solver Interfaces
- Fix bug in BARON and GAMS writers for handling exponential expressions (#1114)
- Improve Gurobi persistent interface, enable callbacks, lazy constraints,
and more (#1137)
- MPEC updates
- Update transformations to descend into disjuncts (#1085)
- PySP updates
- Replace Graph.node with Graph.nodes to support networkx 2.4 (#1141)
- GDP updates
- Use a name buffer when generating component names (#1149)
- Testing
- Add pathos library to the Appveyor build (#1135)
- Contributed Packages
- Model viewer improvements and bug fixes (#1071, #1092)
- MindtPy outer approximation improvements (#983)
- GDPOpt improvements, support for Ports (#1098, #1133)
- FBBT improvements and bug fixes, updates to interval arithmetic, support
for log10, replace math.inf with float('inf') (#1131, #1134, #1102, #1078,
#1076, #1146)
- Documentation
- Fix typo in working_models.rst (#1094)
- Add documentation for user interface to LinearExpression (#1120)
-------------------------------------------------------------------------------
Pyomo 5.6.6 21 Jun 2019
-------------------------------------------------------------------------------
- Core
- Remove a line in standard_repn that was unreachable (#1063)
- Solver Interfaces
- Fix symbolic labels for BARON and GAMS (#1057)
- Fix in cplex_direct to check for solution before extracting bounds (#1060)
- Fix in NL writer where a single-term sum output a n-ary operator (#1067)
- Contributed Packages
- FBBT improvements (#1002)
- Benders improvements (#1061)
- GDPopt updates (#922, #1065)
- Model viewer improvements, add residual table, improved install/testing,
support for AbstractModels (#955, #1054, #1066)
-------------------------------------------------------------------------------
Pyomo 5.6.5 10 Jun 2019
-------------------------------------------------------------------------------
- General
- Remove non-ascii character from README.md (#1045)
- PySP
- Fix docstring formatting (#1042)
- Testing
- Resolve book test failures (#1038)
- Contributed Packages
- Benders cut generator component (#1028)
-------------------------------------------------------------------------------
Pyomo 5.6.4 24 May 2019
-------------------------------------------------------------------------------
- General
- Resolve project description rendering on PyPI
-------------------------------------------------------------------------------
Pyomo 5.6.3 24 May 2019
-------------------------------------------------------------------------------
- General
- Update the README (#990, #991, #992)
- Fix compilation with Cython
- Change the default use_signal_handling from True to None (#1014)
- Testing
- Add a license check for Mosek (#1007)
- Add a Cythonization test to Travis (#1012)
- Core
- Bug fix in IndexedComponent using a nonhashable object as an index (#1006)
- Bug fix in fix_discrete transformation for domain comparison (#996)
- Add read-only view of kernel matrix_constraint (#1011, #1013)
- Add specialized conic constraints to kernel (#980, #1018)
- Bug fix in standard repn when using a fixed variable as an exponent (#978)
- Add _associativity to _ExpressionData (#1031)
- Solver Interfaces
- Bug fix in CBC plugin related to certain objective values (#1004)
- Contributed Packages
- FBBT improvements (#994)
- MC++ variable bound guards (#1015)
- Improvements to bounds_to_vars preprocessing transformation (#1016)
- GDPbb improvements and cleanup (#982)
-------------------------------------------------------------------------------
Pyomo 5.6.2 1 May 2019
-------------------------------------------------------------------------------
- General
- Fix setup.py for Windows installation with Python3 and Cython (#823)
- Reorganize how Pyomo manages the version number (#854)
- Updated build badges on main Github page (#867)
- Fix bug in model size report utility (#904)
- Catch eval errors in calculate_variable_from_constraint utility (#872)
- Add project description file used by COIN-OR server (#891)
- Add common utility for downloading files (#819, #927)
- Add infrastructure for building compiled extensions (#940, #959)
- Return the subcommand error code from the pyomo script (#958)
- Fix the "pyomo install-extras" command (#981, #986)
- Deprecate pyomo.bilevel and pyomo.duality (#943)
- Update deprecation decorator to include version number (#943)
- Testing
- Update Appveyor configuration to use --no-update-deps conda option (#837)
- Enable publication of coverage results from Jenkins (#842, #892)
- Update Travis configuration with new docker image location (#880)
- Activate coverage for Anaconda Travis builds (#887)
- Update DataPortal tests requiring PyYaml to not rely on file diffs (#931)
- Add simplified Jenkins test driver (#949, #952, #960)
- Restrict auto-build of PyomoGallery to master branch builds (#985)
- Core
- Reference improvements to support sparse components (#830)
- Fixed typo on Var docstring (#865)
- Initial support for units handling (#833)
- Make component slice objects picklable/deepcopyable (#914)
- Allow variable identification for LinearExpression (#920)
- Split expr_pyomo5.py into three files (#888)
- Fix ordered sets not iterating in correct order (#936)
- Add SimpleBlock to pyomo.core namespace (#941)
- Kernel updates (#951)
- Fix expression infix representation (#966)
- Solver Interfaces
- Add logic to control signals in shellcmd solvers (#856)
- Narrow the check for a valid Baron license (#857)
- Add missing import to kestrel_plugin.py (#895)
- Allow '~' in CPLEX file names (#925)
- Updates to CBC plugin to handle all return statuses and support warm starts
(#874, #946)
- Add Mosek solver plugin (#971)
- GDP updates
- Add nonconvex heat exchanger network example (#824)
- Bugfix for GDP Var mover (#667)
- Add basic step example (#848)
- Add GDP logo (#873, #876)
- Improve error message in GDP reclassification (#884)
- Updates to Stickies example (#937, #948)
- Simplify the fix_disjuncts transformation (#921)
- DAE updates
- Use ConfigBlocks for discretization options handling and several bug fixes
(#967, #973)
- Network updates
- Fix sequential decomposition when ports contain References (#975)
- Contributed Packages
- ParmEst updates to make API more flexible, updated examples, documentation
and tests (#814)
- GDPopt algorithm enhancements, cut generation bug fix, add example
to tests, time limit option support (#805, #826, #852, #970)
- Multistart solver wrapper bug fix for identifying the Objective (#807)
- Updates to MC++ interface and documentation (#827, #929, #939, #964, #968)
- Add import guards for optional packages like Scipy and Pandas (#853, #889)
- PETSc wrapper fixes and enhancements (#806)
- Disjunctive bound tightening with GLOA (#877)
- Use CBC for GDP_bounds OBBT computation (#933)
- Set minimum Numpy version for Pynumero (#962)
- New packages:
- Mixed-Integer Decomposition Toolbox in Pyomo (MindtPy) (#386, #970)
- Feasibility based bounds tightening (#825, #863, #883, #954)
- GDP branch and bound solver (#847, #870, #886)
- Satisfiability solver interface to z3 (#862, #885)
- Automatic/symbolic differentiation of Pyomo expressions in Python
(#818, #926)
- Graphical model viewer/editor (#834, #878, #897, #911, #945)
- Documentation
- Show how to extend an objective function (#820)
- Show how to use PySP with a ConcreteModel (#831)
- Update documentation on assigning values to a Param (#841)
- Update Set documentation (#850)
- Fixed typo in overview documentation (#864)
- Show how to activate/deactivate constraints (#932)
-------------------------------------------------------------------------------
Pyomo 5.6.1 18 Jan 2019
-------------------------------------------------------------------------------
- General
- Fix setup.py installation failure on Windows (#813)
- Testing
- Add assertion method for comparing lists of floats (#800)
- Solver interfaces
- Bugfix in GAMS writer related to splitting long lines (#797)
- Allow ":" in cplex file names (#810)
- Fixes to NEOS interface (#793)
- GDP updates
- Fixed typo in GDP example (#801)
- Add support for RangeSet in GDP transformations (#803)
-------------------------------------------------------------------------------
Pyomo 5.6 19 Dec 2018
-------------------------------------------------------------------------------
- General
- Removing testing and support for Python 2.6 (#322)
- Adding TerminationCondition and SolverStatus to pyomo.environ (#429)
- Refactoring pyomo.util into pyomo.common for the general utilities that do
not depend on the rest of Pyomo, and the user-focused modeling utilities in
pyomo.util. (#502)
- New utilities: Model size report (#579), calculating variable
values (#763)
- Fix pyomo help -s command (#551)
- Fixes to avoid deprecation warnings (#760, #765)
- Core
- Adding the Pyomo5 expression system, which supports PyPy (#272,
#471, #475, #514, #520, #524, #536, #615)
- Optimizations to minimize use of NumericConstant objects (#469)
- Implemented a general-purpose expression visitor (#671)
- Implicitly order Pyomo sets based on insertion order (#568)
- Fix for overriding values in IndexedSets (#710)
- Efficiency improvements when processing unhashable indexes (#467)
- Replace PyUtilib factories with native Pyomo factories (#661)
- unique_component_name now checks all attributes (not just components) (#497)
- Adding relative_to argument for getname() (#495)
- Add 'SubclassOf' to support finding components based on sub class (#723)
- Move PseudoMap out of _BlockData class (#778)
- Add Reference "component" (#655, #742)
- Transformations map create_using arguments through the model clone (#497)
- Implemented a scaling transformation (#694)
- Improvements for External Functions
- Resolved problems with ExternalFunctions with fixed arguments (#442)
- Add method to return F,G,H from AMPL external functions (#666, #668)
- Improvements to symbolic expressions
- Add support for sqrt function in differentiate() (#642)
- Update symbolic differentiation to be compatible with sympy 1.3
and performance improvements (#715, #719)
- Silence invalid error messages logged with Template Expressions (#634)
- Kernel improvements
- Move kernel util (#522)
- Kernel updates (#761)
- Kernel updates simplifying handling of active status on containers,
save storage key on child, warn overwriting container index, fix
linear_canonical_form flag on linear_constraint (#569, #570, #571,
#589, #598)
- Solver interfaces
- Fix to solver tempfiles (#590)
- Prevent crash when solver returns suffixes but not values for
variables (#596)
- Resolving issue when path names with spaces appear in CPLEX run file (#485)
- Fix for spaces in cplex file names (#586)
- Bugfix in Gurobi direct interface (#635)
- Fix NEOS interface when behind a proxy in Python 3.x (#644)
- Fixed Baron writer sqrt error (#751)
- Corrected Ipopt capabilities (#573)
- GAMS writer
- fix for power() expressions (#454)
- fix for fixed variables (#510)
- ShortNameLabeler to limit symbol names (#512)
- Add warning about zero division in variable evaluation (#529)
- Use tmpdir for subprocess files (#530)
- Integrate options attribute (#558)
- Change writer ctype checking (#593, #641)
- Fix double-operator due to negative constant (#698)
- Fix Windows stdout compatibility issue (#779)
- LP writer
- More efficient string manipulation in LP writer (#610)
- Fix generation of bounds for fixed variables in LP writer (#623)
- Cythonized writers in pyomo.repn (#675)
- Bilevel:
- Create pyomo.dualize (#606)
- Updates to dualization and bilevel solvers (#535)
- DAE updates
- Added support for external functions (#526)
- Bugfix in Casadi interface (#544)
- Code overhaul and improved test coverage (#660)
- GDP updates
- Implemented improper basic steps (#582)
- Add examples from literature (#581, #702)
- Improve BigM test robustness (#659)
- Bug fixes (#490, #498)
- PySP updates
- Python 3.7 support (#463)
- Fix bugs in finance example (#564, #578)
- Added a wrapper for PySP to create a scripting interace (#689, #727, #737)
- Bug fixes (#736, #788)
- New packages:
- DataPortal:
- Move DataPortal up to a top-level pyomo.dataportal subpackage (#607)
- Update options for pymysql (#678)
- Network
- Replaced Pyomo connector infrastructure with Pyomo.Network and
added sequential modular simulation capability (#583, #648)
- Contributed packages:
- GDPopt updates to use config blocks, support integer variables,
documentation, callback renaming, new initialization strategy
(#513, #541, #595, #599, #633, #650, #717)
- Update trust region to use ConfigBlocks (#738, #785)
- New packages:
- Preprocessing transformation for variable aggregation (#533, #617)
- Compute disjunctive variable bounds (#481)
- ParmEst package for parameter estimation (#706, #733, #769, #781)
- PyNumero package for numerical optimization (#725, #775)
- sensitivity_toolbox for interfacing with sIPOPT (#766)
- PETSc AMPL wrapper (#774)
- Testing
- Resolved several build errors on Appveyor (#438, #539, #552, #577, #705)
- Reconfigured Travis CI to run tests using DockerHub images, work on PRs
from forks, run Python 3.7 (#479, #517, #600)
- Jenkins driver updates to fix errors when files are moved/renamed,
delete coverage info from previous builds, decode unicode in
booktests driver, test fixes, new drivers (#627, #629, #630, #631,
#704, #735, #772, #771, #786)
- Documentation and Examples
- Converted old asciidoc documentation to Sphinx (#486, #574)
- Reorganized the Sphinx documentation to make it easier to navigate
and merge old and new documentation sections (#699)
- Create more prominent section for documentation on contrib packages (#729)
- Documentation updates: scripting (#543, #748, #756), pyomo.network
(#651, #745, #780), preprocessing transformations (#653), GAMS writer
(#518), pyomo.kernel (#767), abstract models (#777), general (#782)
- Document PR process (#628)
- Updated README.md to include link for performance plots (#534)
- Update examples (#436)
-------------------------------------------------------------------------------
Pyomo 5.5.1 26 Oct 2018
-------------------------------------------------------------------------------
- General
- Adding support for Python 3.7
-------------------------------------------------------------------------------
Pyomo 5.5 14 Apr 2018
-------------------------------------------------------------------------------
- Move preprocessing transformations to contrib (#426)
- Moves bounds_to_vars and propagate_zero_sum into contrib.preprocessing and
changes aliases to contrib.bounds_to_vars and contrib.propagate_zero_sum.
- Improved external function support
- Fixing AMPLFUNC environment variable management for "derived ASL
solvers (ipopt, conopt, scipampl) (#423)
- Adding support for using the AMPL GSL library (#427)
- PySP updates
- Fixing atypical methods in PySP for generating a scenario tree and
associated instances (#422, #424)
- Adding support in PySP for new persistent solver API (#397)
- Fixing bug in Eckstein-Combettes PySP-PH extension for
handling unused model variables (#396)
- GDP updates
- add support for implicit declaration of multi-constraint Disjuncts (#410)
- switch to using ConfigBlocks for chull, bigm relaxations (#410)
- fix for Big-M with disjuncts containing indexed blocks (#421)
- Fix for discretizing block hierarchical models with
circular references (#406, #353)
- Fix formatting for small numbers in Baron file writer (#405)
- Allow retrieving a mutable Param even when no initial or
default value is specified (#393)
- Python3 fix for Set.pprint
- Make handling of trivially non-binding constraints consistent across
the various solver interfaces (#392)
- Fix to pprint for Params that store non-numeric values
- Removing use of namespace_packages in setup.py
- Modifying transformation that detects trivial constraints to maintain
a list of the constraints that were deactivated (#385)
- Documentation updates (#425)
-------------------------------------------------------------------------------
Pyomo 5.4.3 2 Mar 2018
-------------------------------------------------------------------------------
- Another fix in the release process.
-------------------------------------------------------------------------------
Pyomo 5.4.2 2 Mar 2018
-------------------------------------------------------------------------------
- Misc fix in the release process.
-------------------------------------------------------------------------------
Pyomo 5.4.1 28 Feb 2018
-------------------------------------------------------------------------------
- Misc version increment to support pypi idiosyncrasies.
-------------------------------------------------------------------------------
Pyomo 5.4 28 Feb 2018
-------------------------------------------------------------------------------
=======
- Remove checks for is_indexed from PersistentSolver methods (#366)
- GDP rewrite (#354)
- Updated gdp.chull to handle named expressions (#318)
- Fixed Disjunction to support declaration without expr or rule (#241)
- Misc Gurobi and Cplex fixes (#368)
- Fix to gurobi_direct initialization when gurobipy is not available. (#363)
- Fixes to persistent solvers (#361)
- Fix to cplex 12.6 error management. (#357)
- Fix intermittent "unclonable" component error (#356)
- Fix GAMS interface ignoring `tee` (#351)
- Remove duplicated 'Key' for Expression.display() (#349)
- removing import from GUROBI_RUN.py (#344)
- Add logfile option to GAMS solver (#302)
- Improvements for Gurobi/Cplex Interfaces (#331)
- GDPopt solver initial implementation (#337)
- Fixed to update IndexedVar domain display (#5)
- Reorganize the API documentation (#333)
- Transformation to strip bounds from model (#220)
- Adding transformation to propagate equality-linked fixed variables (#192)
- Fixing Python 3.x compatibility for Sets (#305)
- Fix so that GAMS writer can safely ignore Connector objects (#310)
- Faster solution parsing for CBC (#311)
- Reworked pyomo.contrib and added the pyomo.contrib.example package (#299)
- Fixes for Python 2.6 compatibility in third-party packages
- Adding diagnostic functions for Pyomo models (#217)
- Allow None to be a valid value for Params (#301)
- Improved testing with Travis and Appveyor
- Fixes to Pyro management with PySP solvers
- Transformation of explicit constraints to variable bounds (#190)
- Corrected the settimelimit option with CBC (#265)
- Bug fixes in direct/persistent solver interfaces (#282)
- A major rework of the PySP solver interface
- Added testing for Sphinx code fragments
- Various updates to online documentation generated by Sphinx
- Add error message to model.write if guess_format returns None (#260)
- Ensure that generate_cuid_names descends into Disjunct objects (#176)
- Fix GAMS writer to better support the power function (#263)
- Added persistent interfaces for CPLEX and Gurobi (#262)
- Added additional timing information for model construction and solvers
- Logging overhaul and support for timing concrete models (#245)
-------------------------------------------------------------------------------
Pyomo 5.3 21 Oct 2017
-------------------------------------------------------------------------------
- Removed testing for Python 3.4
- Added exp() to symbolic module (#151)
- Resolved representation error with 1/var (#153)
- Added pyomo.core.kernel (#130)
- Various solver interface fixes: CBC, SCIP, IPOPT, GLPK
- Add docstring to apply function in Transformation (#174)
- Adding a TerminationCondition enum value for "Infeasible or Unbounded" (#171)
- New scripts for performance testing
- Use the has_lb() and has_ub() helper methods for vars and constraints.
- Added documentation tests.
- Updates to DAPS (#200)
- Fix KeyError message in NL writer (#189)
- New ODE/DAE simulator interface for pyomo.DAE (#180)
- Added deprecation decorator (#203)
- New transformation to fix nonnegative variables in equality constraints (#198)
- Deprecated BigM piecewise representations (#216)
- Added GAMS solver interface (#164, #215, #221, #240)
- Updates to testing configuration on Travis and Appveyor
- Tracking changes in pyutilib.th
-------------------------------------------------------------------------------
Pyomo 5.2 14 May 2017
-------------------------------------------------------------------------------
- Resolved timeout issues running NEOS solvers
- Changing the generic ASL solver plugin to use '-AMPL' rather than '-s'
- Fixed loading solutions into sub-blocks (#127)
- Cloning a model now preserves any previous solution(s).
- Fixing pickling of ModelSolutions objects. (#65)
- Allow cloning of blocks even when attributes cannot be deep copied
- Fixed how GUROBI_RUN reports the solve time.
- Added DAPS solver (#139)
- Adding support for Python 3.6. (#103)
- Restricting user defined component names on Blocks to avoid overwriting
important Block methods. (#126)
- Updating pyomo.dae transformations to support Block-derived components.
(#132, #129, #89)
- Fix rare issue where numeric constants in the left- and right-hand sides of a
double inequality expression were incorrectly mapped to an equality
expression even when the values were different.
- Creating an Ipopt solver plugin with additional functionality for sending
options to Ipopt using an options file. Options beginning with 'OF_' will be
interpreted as options that should appear in an options file. A warning is
printed when this will cause an existing 'ipopt.opt' file in the current
working directory to be ignored.
- Make the Ipopt solver plugin more gracefully handle the case when a solution
file is not created by the solver (e.g., when the solver exits because there
are too few degrees of freedom). (#135)
- Reduce time required to import pyomo.environ by delaying checks for
availability of solver interfaces until they are used. (#109)
- Adding support for solving Blocks as if they were Models. (#110, #94)
- Adding support for declaring components on a model by decorating the rule
instead of explicitly invoking the setattr method on the block. This
eliminates the normal pattern of the component name appearing in three
places. (#99)
- Fixes to pyomo.gdp transformations for nested blocks.
- Fixing case in block recursion where descend_into was not being honored.
- Bug fix that impacted non-serial solver managers.
- Make checks for is_indexed() more efficient. (#105)
- Fixes to files for PEP8 compliance.
- Fix to statues set by CPLEX plugin when problem is unbounded.
- Improving Param exception messages.
- Putting a daps release in PySP (#124)
- Updating the bilinear transform to avoid creating a Set `index`.
-------------------------------------------------------------------------------
Pyomo 5.1.1 8 Jan 2017
-------------------------------------------------------------------------------
- Monkeypatch to resolve (#95)
-------------------------------------------------------------------------------
Pyomo 5.1 4 Jan 2017
-------------------------------------------------------------------------------
- Added a CONOPT plugin to handle a custom SOL file output (#88)
- Changed 'pyomo solve' to use any Model object that is found, rather than
requiring the default object to be named 'model' (#80)
- Reworked the solver testing infrastructure to enable enumeration of all
test scenarios, which is used by 'pyomo test-solvers' (#78)
- Fixes for xpress solver options writer (#79)
- Resolved an issue where Pyomo was unnecessarily cloning most inequality
expressions (#80)
- Reworked the Pyomo *.DAT file parser and post-parse processing logic. This
eliminates parse ambiguities that were causing test failures.
- Finalized book test examples for the new edition of the Pyomo book
- Added pyomo.contrib to support integration of third-party Pyomo libraries
in a standard manner
- Fixed TravisCI testing issues where the incorrect version of Python was being
tested
- Fixed error messages in pyomo.dae (#81)
- Revised CBC interface to recognize intermediate non-integer solutions (#77)
- Added checks for IPOPT test failures based on version info (#72)
- Removed support for OpenOpt
-------------------------------------------------------------------------------
Pyomo 5.0.1 16 Nov 2016
-------------------------------------------------------------------------------
- Updating PyUtilib dependency
-------------------------------------------------------------------------------
Pyomo 5.0 15 Nov 2016
-------------------------------------------------------------------------------
- Added examples used in the Pyomo book to the Pyomo software repos
- Added support for automatically generating "template expressions"
- Fix tuple flattening in the case of unhashable SimpleParam in indexes
- Deactivated solver plugins before the are returned from the SolverFactory
- Significantly simplified the polynomial_degree() logic for Pyomo4 expressions
- Updates to expression logic
- Adding a 'feasible' attribute to the TerminationCondition Enum
- Updates to ExternalFunction logic
- Renamed the component name() method to getname() and added a 'name' property
- Fix to allow creating undefined (and uninitialized) mutable params
- Added more careful checks in Set() and Param() to ensure that an abstract set
expression is not evaluated
- Added DAE examples to Pyomo
-------------------------------------------------------------------------------
Pyomo 4.4.1
-------------------------------------------------------------------------------
- Fixing PyUtilib dependency version.
-------------------------------------------------------------------------------
Pyomo 4.4
-------------------------------------------------------------------------------
- Output a warning in benders when the solver interface used to solve the
master problem does not report a solution gap
- Document DAE transformations (#28)
- Allow use of ellipsis in the middle of the indices when slicing
- The Component slicing logic now uses simple slices (`:`) for matching a
single index and the Ellipsis (`...`) for matching zero or more indices.
- Fixing Python 3 compatibility problems in pyomo.dae & dae examples.
- Support evaluating external functions in AMPL-stype shared libraries.
- Renaming "BasicExternalFunction" to "AMPLExternalFunction"
- Allowing Params to be used in setting bounds on a ContinuousSet.
- Use HTTPS with NEOS
- Allow a mutable Parameter that has not been initialized with a value to
be used in the rhs of an equality constraint. (#13)
- Updates to SolverFactor to better support functionality offered by the
'executable' keyword for SystemCallSolver.
- Updates to writers to enforce consistent output ordering in quadratic
expressions.
- Improving the error message for Constraint rules that return None
- Adding PySP solver interface to the SD solver
- Adding an implicit SP representation to PySP that uses annotations
for declaring mutable parameters as stochastic data and providing
a distribution (only tables supported for now).
- Partial fix for infinite recursion reported (#6). This will support
creating scalar (simple) components by passing a set([None]) in
as the index.
- Extending component slicing ability to nested (hierarchical) slices.
-------------------------------------------------------------------------------
Pyomo 4.3 (4.3.11381)
-------------------------------------------------------------------------------
- Removed 'nose' from required packages during installation.
- Fix to be compatible with older versions of 'six'.
-------------------------------------------------------------------------------
Pyomo 4.3 (4.3.11377)
-------------------------------------------------------------------------------
- Restructured PySP tests to hide expected exception output
- Updated pyomo_install to support jython (experimental)
- Fixed a missing reference to 'six'
- More robust management of file I/O in GLPK interface
-------------------------------------------------------------------------------
Pyomo 4.3 (4.3.11345)
-------------------------------------------------------------------------------
- Various fixes to the NEOS solver plugin and to the SOL parser for
certain NEOS solvers.
- Fixed a bug that caused an exception to occur when dynamically adding blocks
to a ConcreteModel.
- Miscellaneous fixes to PySP scripting examples.
-------------------------------------------------------------------------------
Pyomo 4.3 (4.3.11328)
-------------------------------------------------------------------------------
- Misc bug fix
-------------------------------------------------------------------------------
Pyomo 4.3 (4.3.11327)
-------------------------------------------------------------------------------
- Resolved bug in pyomo_install when pyvenv cannot be found.
- Gracefully trap BARON terminations
-------------------------------------------------------------------------------
Pyomo 4.3 (4.3.11323)
-------------------------------------------------------------------------------
- Scripts
- pyomo_install
- Added --pip-options to specify options for PIP option
- Added --index-url to specify the PyPI mirror
- Restructured this script to make it more modular
- Deprecated the --with-extras option
- Added "--venv-only" option for setting up a local python virtual
environment with no additional packages (apart from pip, setuptools, and
potentially wheel).
- Fixes when installing from zip files offline.
- get-pyomo-extras.py
- Misc fixes and updates
- pyomo
- Consolidated help information within the 'pyomo help' subcommand
- Added 'pyomo install-extras' to install third-party dependencies
- pyomo.bilevel
- Major changes to get the bilevel_ld solver working
- Extended the logic in SubModel to allow for implicit declarations of
upper-level variables.
- pyomo.check
- More complete scoping checks
- pyomo.core
- Changes to allow sorted output using DataPortal objects
- Bug fix in linear dualization transformation
- Adding a mechanism to load default configuration information from a
standard location.
- Changes to allow objectives to be used inside expressions, and to
allow objectives to be sent through the solver plugins
- Updating blocks so that models can be created and populated using rule options
- Added a domain property method to IndexedVar so it cannot be treated as having
a single domain
- Added the Var() 'dense' option. This defaults to True, which defines variables
densely. But sparse variables are defined when dense==False.
- Change to define a SOS constraint over the declared index set for a variable
unless an explicit index set is provided.
- Changes to ensure that most components do not define their data densely.
- pyomo.dae
- Updates to support Python3 and current Pyomo Transformation API
- Fixed the collocation extension to reduce the degrees of freedom for certain variables
- pyomo.gdp
- Many fixes to bilinear transformation
- Fixed the Big-M estimation routine to work with constant expressions
- pyomo.neos
- Added support for ephemeral solver options, which over-ride the
options dictionary
- Fixes to enable loading of solutions from NEOS solvers
- pyomo.opt
- Sort variable names when printing results
- Many fixes to sol reader.
- pyomo.pysp
- Updates to ScenarioStructure.dat to handle a larger
class of models that can have non-uniform variable sets
in later time stages. Also updating parsing rules to
allow for more convenient variable declarations
- NodeVariables / NodeDerivedVariables can be used in
place of StageVariables / StageDerivedVariables to
declare variables on a per-node basis
- Indexed variables can be declared without bracket
notation (e.g., x[*,*] -> x)
- Single or indexed block names can be used to
conveniently declare all variables found on that
block within a node or stage
- Re-write of runef and runbenders based off of new PySP
scripting tools
- Adding option to runbenders for including one or more
scenarios in the master benders problem
- Fixes to csvsolutionwriter so that it works with
distributed PH
- Added new script (evaluate_xhat) that allows users to
evaluate SP solutions on alternate scenario trees.
- Added more extensive checking to PySP->SMPS conversion
utility (pysp2smps) to alert users when conversion fails
due to non-uniform problem structure or missing
stochastic annotations
- Added helper routine to convert a networkx directed
graph into a PySP scenario tree model
- Fixes to PH for better handling of user warmstarts
- pyomo.repn
- Updates to the NL writer to handle new expression types.
- Added an MPS writer
- pyomo.scripting
- Updated the Pyro mip server to improve its efficiency
- pyomo.solvers
- Updates to xpress plugin to use the ASL interface to xpress.
- Fixed a major issue with the gap computation in the CPLEX direct/persistent
solver plugins
- Significant speed-up of the the CPLEX persistent plugin.
- Added the 'mps' mode for various solvers.
- Changes to the Pyro solver manager to allow out-of-order results collection
-------------------------------------------------------------------------------
Pyomo 4.2 (4.2.10784)
-------------------------------------------------------------------------------
- Changes to make the --json command-line option backwards compatible.
-------------------------------------------------------------------------------
Pyomo 4.2 (4.2.10782)
-------------------------------------------------------------------------------
- pyomo.core
- Removed the 'initial' attribute from Var components.
- Removed the 'reset()' method from core components.
- Objective components now store sense for each objective.
- Added support for slicing when indexing a component.
- pyomo.dae
- Added methods to set and test the value of integral expressions
- pyomo.gdp
- Added property methods to access disjunction expressions (e.g. lower, upper)
- pyomo.opt
- Added support for ephemeral solver options that override the default
values set in the solver object.
- pyomo.neos
- Bug fixes to get data after calling NEOS
- Resolving issues with python 3
- pyomo.scripting
- Added --pyro-host and --pyro-port options
- Added shutdown capabilities to pyro solver manager
- Collect solve time for pyro solvers
- pyomo.pysp
- Added --pyro-host and --pyro-port options to manage pyro-based execution
in a more robust manner.
- Adding utility for converting PySP models into SMPS input files (pysp2smps).
- pyomo.solver
- Resolved serious issues with python direct interfaces:
- CPLEX: constants in linear range constraints and all quadratic
constraints were being excluded from the expression.
- CPLEX and GUROBI: actually raise an exception when a nonlinear
(non-quadratic) objective or constraint expression is encountered
rather than just emitting the linear and quadratic part of the
expression to the solver. This could lead to a naive user
thinking they have solved a general nonlinear model with these
solvers.
- CPLEX and GUROBI: do not skip trivial constraints by default.
Adding I/O option 'skip_trivial_constraints' to recover this
behavior.
- CPLEX: Merging as much of CPLEXPersistent with CPLEXDirect
as possible to avoid repeating bug fixes. More should be done,
but for now CPLEXDirect is a base class for CPLEXPersistent.
- Fix to various solver plugins so that variable bounds set to
float('inf') and float('-inf') are treated the same as variable
bounds set to None.
- Updates to Pyro solver managers
- Major performance enhancements for Pyro-based solver managers.
- Tasks can be uploaded to the dispatcher in bulk.
- Workers no longer use a timeout when requesting tasks from the queue, which
was wasting CPU cycles.
- Compatibility fixes when Pyro4 is used.
- other
- Updated the get-pyomo-extras.py script to install conditional dependencies
for Pyomo (e.g. xlrd and ipython)
- Adding logic to explicitly identify metasolvers. This information is
reflected in the 'pyomo help -s' command.
- Deprecated 'pyomo.os', which was not being actively supported.
- Added the 'pyomo info' subcommand to provide information about the Python
installation.
-------------------------------------------------------------------------------
Pyomo 4.1 (4.1.10519)
-------------------------------------------------------------------------------
- Resolving bugs in NEOS solver interface due to change in solver options
management.
-------------------------------------------------------------------------------
Pyomo 4.1 (4.1.10509)
-------------------------------------------------------------------------------
- Cleanup runbenders script to make it easier to test
- Cleanup temporary files during testing.
- Fixing PyUtilib version
-------------------------------------------------------------------------------
Pyomo 4.1 (4.1.10505)
-------------------------------------------------------------------------------
- Allow the dim() method to be called without the equality operator, which
enables its use on unconstructed components
- RangeSet inherits from OrderedSimpleSet
- Added missing __slots__ declarations in set classes
-------------------------------------------------------------------------------
Pyomo 4.1 (4.1.10486)
-------------------------------------------------------------------------------
- API changes for model transformations
- Revised API for SOSConstraint, Suffix and Block components
- Optimization results are now loaded into models
- Removed explicit specification of model preprocessing
- Resolved many issues with writing and solving MPECs
- Changes to MPEC meta-solver names
- The solution output for runph has been changed to
- Pyomo subcommands can now use configuration files (e.g. pyomo solve config.json)
- New JSON/YAML format for parameter data
- Added a script to install pyomo.extras
-------------------------------------------------------------------------------
Pyomo 4.0 (4.0.9682)
-------------------------------------------------------------------------------
- Adding a more useful error message when a named objective is not
present when load-solution is invoked on a model.
- Bug fix for pickling results objects.
- Performance fix for ordered sets
- Removed StateVar from DAE examples.
- Resolving a bug that disabled pyodbc support.
- Added preliminary support for pypyodbc.
- Fix to enable sets to be initialized with a tuple
- PySP test baseline updates
- Added PySP ddsip extension.
- Removed the 'pyomo bilevel' and 'pyomo mpec' subcommands
- Re-enabled the 'import' and 'export' Pyomo data commands, which
are still deprecated.
- Various performance enhancements to avoid iterating over list of
dictionary keys.
- Added a ComplementarityList component.
-------------------------------------------------------------------------------
Pyomo 4.0 (4.0.9629)
-------------------------------------------------------------------------------
This release rebrands Coopr as Pyomo, which reflects the fact that
users have consistently confused the Coopr software and the Pyomo
modeling language. Pyomo 4.0 includes the following significant
changes:
- Pyomo provides a single source tree replacing all Coopr packages
- The 'pyomo' command replaces the 'coopr' command
- The 'pyomo solve' subcommand replaces the former 'pyomo' command
- The 'pyomo.environ' package is now used to import core Pyomo capabilities
- Robust support for Python 3.x
The following are highlights of this release:
- Modeling
* Added a RealInterval domain
* Major rework of coopr.dae. Can now represent higher order and partial
differential equations. Also added more discretization schemes.
- Solvers
* Added preliminary support for a Benders solver
* Added support for the BARON solver
* Preliminary support for MPEC solvers, including the PATH solver
- Transformations
* Added explicit support for model transformations
* The 'pyomo solve --transform' option specified model transformations
* Created a streamline linear dual transformation
- Other
* The 'pyomo help' command documents installed capabilities
* Major rework and simplification of the 'pyomo_install' script
* Added support for parallelism using Pyro4
-------------------------------------------------------------------------------
Pyomo 3.5.8787
-------------------------------------------------------------------------------
- pyomo.opt 2.12.2
pyomo.core 3.6.4
pyomo.pysp 3.5.5
pyomo.solvers 3.2.1
-------------------------------------------------------------------------------
Pyomo 3.5.8748
-------------------------------------------------------------------------------
- pyomo.pysp 3.5.4
-------------------------------------------------------------------------------
Pyomo 3.5.8734
-------------------------------------------------------------------------------
- PyUtilib 4.7.3336
-------------------------------------------------------------------------------
Pyomo 3.5.8716
-------------------------------------------------------------------------------
- pyomo.core 3.6.3
pyomo.pysp 3.5.3
-------------------------------------------------------------------------------
Pyomo 3.5.8706
-------------------------------------------------------------------------------
- pyomo.util 2.0.4
pyomo.core 3.6.2
-------------------------------------------------------------------------------
Pyomo 3.5.8690
-------------------------------------------------------------------------------
- pyomo.neos 1.1.2
pyomo.opt 2.12.1
pyomo.core 3.6.1
pyomo.pysp 3.5.2
- Added the pyomo_install script
-------------------------------------------------------------------------------
Pyomo 3.5.8669
-------------------------------------------------------------------------------
- PyUtilib 4.7.3311
pyomo.util 2.0.3
-------------------------------------------------------------------------------
Pyomo 3.5.8663
-------------------------------------------------------------------------------
- PyUtilib 4.7.3305
pyomo.util 2.0.2
pyomo.environ 1.0.1