forked from scipopt/scip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
9173 lines (7654 loc) · 563 KB
/
CHANGELOG
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
@page RN Release notes for SCIP NEXT
@section RNNEXT SCIP NEXT
*************************
Features
--------
- added simplification of abs(x)^n to x^n when n is even (simplify rule POW12)
- in expression simplification, added possibility to expand power of sum with exponents larger than 2 (simplify rule POW7)
- in expression simplification, added possibility to expand products with sums as factor when there are more than two factors (simplify rule SP12b)
- in expression simplification, added possibility to allow expanding power of products with fractional exponent (simplify rule POW5a)
- can now build with Lapack (used for solving nonlinear problems) explicitly; if IPOPT is used, then Lapack is accessed through it;
an interface to Lapack is available in lapack_calls.h
- added support for logical constraints in binary variables and basic logical operators (and, or, not, equal) to AMPL .nl reader
- indicator constraints now use the same slack variable for the linear constraints if binary variables are used multiple times
for indicator constraints
- new diving heuristic indicatordiving that focuses on indicator variables which control semicontinuous variables
- updated statistics on NLP relaxation; information on convexity of NLP has been added
- added new bandit method (EXP.3-IX) that is the new default of the ALNS heuristic
- added dialog to display recognized permutation symmetries ("display symmetry")
- added special presolving step for logicor and set covering/packing for constraints with two variables and one independent variable
- increased the depth field of the tree structure from 16 to 30 bits and the max depth of the search tree from 65534 to 1073741822
Performance improvements
------------------------
- Variable conflict-based addition of Schreier-Sims cuts for symmetry handling in prop_symmetry.c does no longer use
an expensive explicit conflict graph construction.
- Only run propagation of indicator constraints if relevant variables have changed.
- Propagation of indicator constraints propagates maximal activity of linear constraint to upper bound of slack variable.
- Added initialization of LP relaxation for SOC constraints.
- Avoided some numerical issues when separating SOC constraints.
- If differentation of convex expression fails in convex nlhdlr, then a perturbed point is tried.
- Use sassy/bliss as default symmetry computation package.
- No longer linearize indicator constraints in undercover heuristic by default.
- Deactivate pre-root heuristic zeroobj in undercover heuristic.
Examples and applications
-------------------------
Interface changes
-----------------
### New and changed callbacks
- Added solution linearization callback for nonlinear handlers.
The nonlinear handler may use this callback to add tight cuts that use the given solution as reference point to the cutpool.
The callback is called if option constraints/nonlinear/linearizeheursol is enabled.
- The callback for copying problem data SCIP_DECL_PROBCOPY() now has a parameter "original" indicating whether the original
or transformed problem should be copied. Similarly, SCIPprobCopy() in prob.h/c has such a parameter.
### Deleted and changed API methods
- SCIPtpiInitLock(), SCIPtpiDestroyLock(), SCIPtpiInitCondition(), SCIPtpiDestroyCondition() now take a double
pointer to SCIP_LOCK/SCIP_CONDITION, respectively.
- Renamed SCIPtpiSumbitJob() to SCIPtpiSubmitJob().
- SCIPcreateConsIndicatorLinCons(), SCIPcreateConsIndicatorGenericLinCons() do not allow binvar to be NULL anymore
- Replaced SCIPnlrowSetCurvature() by SCIPsetNlRowCurvature().
- SCIPsnprintf() now returns the required string length in case reallocation is necessary.
- SCIPcomputeCoverUndercover() receives three more arguments which nonlinearities to cover
### New API functions
- new functions for interfacing with Lapack: SCIPlapackIsAvailable(), SCIPlapackIsAvailable(), SCIPlapackComputeEigenvalues(), and SCIPlapackSolveLinearEquations
These functions should be used instead of SCIPisIpoptAvailableIpopt(), SCIPcallLapackDsyevIpopt(), and
SCIPsolveLinearEquationsIpopt() in the context of computing eigenvalues or solving linear equations.
If IPOPT is available, the calls will be passed on to Ipopt's interface to Lapack.
- SCIPmultiplyBySumExprSum(), SCIPpowerExprSum()
- SCIPsetParam()
- SCIPgetPrimalDualIntegral() returns the primal dual integral stored in the statistics
- new functions SCIPcreateConsIndicatorLinConsPure() and SCIPcreateConsIndicatorGenericLinConsPure() that
create indicator constraints from a linear constraint without a slack variable
- SCIPgetNLPNlRowsStat() to retrieve counts on linear, convex, and nonconvex rows in NLP
- SCIPnlhdlrSetSollinearize(), SCIPnlhdlrHasSollinearize()
- SCIPbendersGetNLPParam()
- new API functions SCIPlexicographicReductionGetStatistics(), SCIPlexicographicReductionPrintStatistics(),
SCIPlexicographicReductionPropagate(), SCIPlexicographicReductionAddPermutation(), SCIPlexicographicReductionReset(),
SCIPlexicographicReductionFree(), SCIPincludeLexicographicReduction(), for lexicographic reduction.
- new API functions SCIPorbitopalReductionGetStatistics(), SCIPorbitopalReductionPrintStatistics(),
SCIPorbitopalReductionPropagate(), SCIPorbitopalReductionAddOrbitope(), SCIPorbitopalReductionReset(),
SCIPorbitopalReductionFree(), SCIPincludeOrbitopalReduction(), SCIPorbitopalReductionGetDefaultColumnOrdering(),
for orbitopal fixing.
- new API functions SCIPorbitalReductionGetStatistics(), SCIPorbitalReductionPrintStatistics(),
SCIPorbitalReductionPropagate(), SCIPorbitalReductionAddComponent(), SCIPorbitalReductionReset(),
SCIPorbitalReductionFree(), SCIPincludeOrbitalReduction(), for orbital fixing.
- new API functions SCIPgetShadowTreeEventHandlerExecutionTime(), SCIPshadowTreeGetShadowNodeFromNodeNumber(),
SCIPshadowTreeGetShadowNode(), SCIPgetShadowTree(), SCIPactivateShadowTree(), SCIPincludeEventHdlrShadowTree(),
for managing a copy of the branch-and-bound tree for symmetry handling purposes.
- SCIPdotWriteOpening(), SCIPdotWriteNode(), SCIPdotWriteArc(), SCIPdotWriteClosing()
### Command line interface
- Added optional parameter -i when calling SCIP in AMPL-mode (-AMPL parameter).
If -i is specified, a SCIP shell is started where normally SCIPsolve() would be called.
### Interfaces to external software
- added interface to nauty/traces for symmetry computation
- added interface to sassy, a preprocessor for symmetry computation
- The directory src/sassy contains the source code of sassy.
- Added interface to Lapack (used for solving nonlinear problems).
- The AMPL interface now supports parameters specified in AMPL command scripts via option scip_options.
The value of scip_options is expected to be a sequence of parameter names and values, separated by a space, e.g.,
`option scip_options 'limits/time 10 display/verblevel 1';`.
String values should not be quoted and spaces in string values are not supported.
- sassy can be used now as preprocessor for nauty/traces
### Changed parameters
- change default value of parameter separating/filtercutpoolrel to FALSE
- Shrunk range of parameter "propagating/symmetry/sstleaderrule" from [0,3] to [0,2], removed "MAXCONFLICTS"-option.
- Removed reading/gmsreader/freeints. A default upper bound of +inf is now assumed for integer variables in GAMS (which is the case since GAMS 23.1).
- Disabled "propagating/symmetry/symfixnonbinaryvars" since it is not used in the new symmetry code.
- Replaced "propagating/symmetry/onlybinarysymmetry" with "propagating/symmetry/enforcecomputesymmetry" and set to FALSE by default.
- Disabled "propagating/symmetry/performpresolving" since running orbital reduction during presolving is not effective.
- Repurposed "propagating/symmetry/usedynamicprop" since it now also applies to lexicographic reduction.
- Changed default value of parameter "propagating/symmetry/addsymresacks" from FALSE to TRUE.
### New parameters
- separating/maxcutsgenfactor and separating/maxcutsrootgenfactor as factors (w.r.t. separating/maxcuts and
separating/maxcutsroot) for limits on the number of cuts generated (which used to be constants '2')
- expr/pow/expandmaxexponent to specify limit on exponent when to expand power of sum
- expr/pow/distribfracexponent to enable expanding power of products with fractional exponents
- expr/product/expandalways to enable expanding any product with sums as factor (that is, also when more than two factors)
- nlhdlr/convex/maxperturb to specify maximal perturbation of non-differential reference points
- benders/default/nlpiterlimit to adjust iteration limit for NLP solver for Benders' decomposition NLP subproblems
- limits/objectivestop to interrupt the solve as soon as a primal solution is found
that is at least as good as the given value
- heuristics/undercover/{coverand,coverind,covernl} to control which nonlinearities to consider (by default only "and" and nonlinear constraints)
### Data structures
Deleted files
-------------
- deleted the now unused files: tpi_none.h, tpi_openmp.h, tpi_tnycthrd.h, type_tpi_none.h, type_tpi_openmp.h, type_tpi_tnycthrd.h
Unit tests
----------
Testing
-------
- changed `set lim obj` to `set lim objective` in ctest since `obj` is no longer unambiguous
Build system
------------
### Cmake
- New flag -DLAPACK=on for linking with Lapack (must be available in the system)
- added flag option "SYM=sbliss" for using sassy/bliss as a graph automorphism package
- use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP.
- added flag option "SYM=snauty" for using sassy/nauty as a graph automorphism package
### Makefile
- added flag option "nauty" for SYM variable to specify which graph automorphism package should be used
- added flag option "sbliss" (sassy/bliss) for SYM variable to specify which graph automorphism package should be used
- added flag option "snauty" (sassy/nauty) for SYM variable to specify which graph automorphism package should be used
- use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP
- New flag LAPACK for linking with Lapack (must be available in the system)
- A file scip/config.h is created in the build directory ($(OBJDIR)/include) now.
Defining NO_CONFIG_HEADER is no longer necessary and has no effect anymore.
Fixed bugs
----------
- Number of runs in which separation is enabled will now be correct as per "separating/maxruns" parameter. Earlier,
separation was enabled for "maxruns + 1" number of runs, i.e., separation was enabled even when "maxruns = 0" was set.
- add safeguard for number of selected cuts
- use double double precision for delta in activity updates of cons_linear.c
Miscellaneous
-------------
- The TPI has been changed to become mostly independent from the actual parallel interface during compile time.
For this, the locks and conditions are now pointers to abstract structs.
Known bugs
----------
@page RN80 Release notes for SCIP 8.0
@section RN805 SCIP 8.0.5
*************************
Fixed bugs
----------
- fixed that scaling of rows in Gurobi interface (SCIPlpiScaleRow()) changed infinite sides to large finite ones (1e20) when scale factor is negative
- check whether objective limit is truly reached in SCIPlpiIsStable()
- if an objective limit is set and Mosek claims that it is exceeded, check that this is indeed the case in SCIPlpiIsStable()
- the .mps file reader was extended to additionally accept .mps files with the objective sense section on one line
- ensure that delayed cutpool separation does not happen if enough cuts have been found already
- fixed that a Gurobi or Mosek interface (LPI) could not be freed from a thread different than the one it was created in, which lead to problems when, e.g., using the concurrent optimizer
- in cons_varbound if both variables are fixed, instead of propagating the constraint check the feasibility of the constraint since propagating can lead to unnecessary numerical troubles
- fixed memory leak in branching rule "distribution"
- fixed that undercover did not enforce that sufficiently many variables in an and-constraints were fixed to have it linearized in the generated sub-scip
- fixed two bugs in cons_varbound: avoid adding variable bounds if vbdcoef is infinite and unlock/lock variables if lhs/rhs/vbdcoef are changed
- globalize constraint changes before bound changes during the effective root shift in treeSwitchPath() to correctly update variable locks by avoiding global bounds with outstanding bound change events when deleting constraints
- fixed error when attempting to copy SCIP with activated pricers
- remove integrality check for implicit integral variables in cons_integral.c, updated the definition for variable type implicit integer to be more explicit that these variables can take fractional values, and updated FAQ entry
- updated and, or, and pseudoboolean constraint handlers to better handle fractional implicit integer variables in enforcement
- avoid invalid strong Chvatal-Gomory cuts by ceiling with tolerance in the calculation of parameter k and flooring slack coefficients with standard epsilon tolerance as well as quad precision
- add missing row links to columns in SCIPflushRowExtensions() required to maintain correct row norms
- restrict separator intobj to solutions for which there can be no better feasible integral objective values to avoid cutting them off
- delay removal of clique lists from SCIPvarRemoveCliquesImplicsVbs() into cliqueCleanup() to avoid segmentation faults by incomplete cleanups after variable conversions
- reject sub-solutions with invalid objectives in SCIPtranslateSubSols() due to contradicting infinite contributions
- correct column index in getMinMaxActivityResiduals() to make presolver dualinfer work
- copy quiet flag from main scip's message handler to the one of solverscip in concurrent optimization
- avoid bound tightening cycles towards huge redundancy bounds in fullDualPresolve() to avert fatal numerical trouble in representing vertices of linear relaxations with unbounded domains
- fix problem where debug solution did not work if branching constraints are present
- update index of dominating variable on coefficient deletion in dualPresolving() of constraint handler logicor
- pass on flags from a redundant to the implying varbound constraint in preprocessConstraintPairs() to avoid suboptimal fixings by model relaxations
- apply reductions of dualinfer only if a dual solution exists (primal is bounded)
- before presolving is finished check solutions before retransforming them including tiny values to keep check flags consistent
- disable heuristics before and during presolving in benders decomposition to avoid messing up the objective structure in the solution store by dropping auxiliary variables in the required retransformations
- correct local flag of singleton conflict constraints in tightenSingleVar() against invalid bound globalization
- respect unboundedness in the computation of activity bounds in conflict.c to avoid invalid huge bounds due to small coefficients on unbounded variables
- ensure positive sides of a linear constraint when recognizing a set partition in rangedRowSimplify() to account for redundancy issues
@section RN804 SCIP 8.0.4
*************************
Features
--------
- use quad precision in cutsSubstituteMIR() for substituting slack variables into CMIR cuts
- use quad precision for activity computations in cons_linear.c
### Deleted and changed API methods
- SCIPshrinkDisjunctiveVarSet() no longer attempts to cutoff the current node if it finds the
given disjunction to be infeasible; it is now in the responsibility of the caller to act accordingly
### New API functions
- added SCIPskipSpace
- added XML parser routines from src/xml/xml.h
### Interfaces to external software
- updated XPRESS interface to work with XPRESS 41 as well
### Changed parameters
- changed integer parameter "propagating/symmetry/recomputrestart" from range {0, 1, 2} to being fixed at value 0
Unit tests
----------
- added new checks for objective, bounds and sides inside the scaling tests in lpi/change.c
Fixed bugs
----------
- relax condition of assert in lpSolve to hold only if lp/checkstability is true
- OPB reader: dynamically increase the size of the line buffer for reading in getMaxAndConsDim()
- Enabled the solution limit checks in SCIPsolveIsStopped in solve.c when in SCIP_STAGE_PRESOLVING
- fix quad precision comparison for the calculation of knapsackcover constraints.
- force copying of symmetry constraints for concurrent solve
- increase the precision of double multiplications in quad precision environments
- corrected handling of different variable types in symmetry
- orbitope detection: refine computation of overlap structure and fixed bug in finding orbitope generators
- ensure that winner is always determined in concurrent mode
- when a row with invalid index range is added to the global cutpool, update the indices instead of failing with an assert
- update of watched literals in cons_xor.c and ensure that fixed variables are counted in propacateCons()
- avoid some numerical issue in check for redundant variables in linear constraints (introduced with version 8.0.2)
- more rows are treated as being integral in cutsSubstituteMIR() for CMIR cuts
- fixed several relaxations of the rhs of cuts to 0 in cuts.c
- avoid aggregation into a single linear constraint if they should not be upgraded (needed for indicator constraints)
- apply effective root changes before fork is repropagated during treeSwitchPath() in tree.c
- avoid invalid objective value for solutions generated from an unbounded LP relaxation in case of a nonlinear objective function
- disable recomputing symmetries after a restart (constraint removal is not permitted)
- avoid cutting off optimal solutions for small feasibility tolerances in conflict analysis
- initialize variable in presol_dualsparsify.c
- fix in presolving of variable bound constraints to use absolute instead of relative difference
- free variable histories in reoptimization mode
- handle whitespaces in interactive shell history consistently
- check and enforce equalities on which the objective is projected in cons_linear.c
- ensure row feasibilities of solution shiftings in heur_oneopt.c and heur_twoopt.c
- remove rounded row check blocking tolerable primal solutions in cons_varbound.c
- fixed that presolve of logicor-constraints may have attempted to cutoff a root of the not yet existing branch-and-bound tree
- only consider positive slack variables as active in benders.c
- in the feasibility check of and/or constraints, allow for fractional values in operands
- fixed linear outer-approximation for some composite absolute-value expressions
Miscellaneous
-------------
- Extended documentation of the parameter limits/solutions to point out that the limit is first checked in presolving
- Added more information about using SCIPcache- and SCIPflushRowExtensions() to documentation and comments
- Extended the `how to add' sections of the documentation by adding information on how to include default plugins into SCIP
@section RN803 SCIP 8.0.3
*************************
Examples and applications
-------------------------
- Externalize STP and PolySCIP applications
Interface changes
-----------------
### Command line interface
- When running the AMPL interface, the .nl filename extension does not need to be omitted for the input file anymore.
Build system
------------
### Cmake
- Forbid CMAKE_BUILD_TYPE nonstandard values
- Move -I/path/to/src/amplmp/include to front of compiler flags for include directories
### Makefile
- Use SYM=bliss by default, since bliss now is shipped with SCIP.
Fixed bugs
----------
- fixed an incorrect handling of xor constraints
- the feasibility checker for integrality constraints now uses checkintegrality even for implied integers
- skip integrality check in cons_integral for relaxation-only implicit-integer variables
- fixed an issue caused by aggregated variables not added to a hashmap in the xor constraint handler
- changed function solveRowEchelonGF2 in cons_xor.c to avoid errors if rank is 0
- fixed that the implication presolver tried to aggregate or tighten bounds of multiaggregated variables
- fixed a sign check in detection of linear constraints that are parallel to the objective
- fixed bug in Clp and lpi_clp with missing basis information when calling the barrier with crossover; needs new Clp version
- do not assume aggregation is successful in cons_setppc.c
Miscellaneous
-------------
- Changed license to Apache 2.0, see https://www.apache.org/licenses/LICENSE-2.0.
- When an LP could not be solved accurately, scaling is now turned off as a last fall-back method.
- Methods for using the debug solution mechanism SCIPdebugAddSolVal, SCIPdebugGetSol, SCIPdebugGetSolVal,
SCIPdebugSolIsValidInSubtree, SCIPdebugIsMainscip, SCIPdebugSolEnable, SCIPdebugSolDisable, SCIPdebugSolIsEnabled,
SCIPwithDebugSol are now exported
Known bugs
----------
@section RN802 SCIP 8.0.2
*************************
Interface changes
-----------------
### Deleted and changed API methods
- added input parameter SCIP_Bool initiallp to SCIPcutselsSelect
- changed function type int to SCIP_Longint for SCIPcutpoolGetMaxNCuts
- replaced SCIPsepastoreGetNCutsFound with SCIPsepastoreGetNCutsAdded following the naming convention for the new statistics
- replaced SCIPsepaIncNAppliedCuts with SCIPsepaIncNCutsApplied
### New API functions
- added SCIPsepastoreGetNCutsAdded, SCIPsepastoreGetNCutsAddedViaPool, SCIPsepastoreGetNCutsAddedDirect
- added SCIPsepaIncNCutsAdded, SCIPsepaDecNCutsAdded, SCIPsepaIncNCutsApplied, SCIPsepaGetNRootCalls, SCIPsepaGetNCutsAdded, SCIPsepaGetNCutsAddedViaPool, SCIPsepaGetNCutsAddedDirect, SCIPsepaGetNCutsAppliedViaPool, SCIPsepaGetNCutsAppliedDirect
- added SCIPcutpoolGetNRootCalls, SCIPcutpoolGetNCutsAdded, SCIPcutpoolAddMaxNCuts, SCIPcutpoolSetTime, SCIPcutpoolAddNCalls, SCIPcutpoolAddNRootCalls, SCIPcutpoolAddNCutsFound, SCIPcutpoolAddNCutsAdded,
- added SCIPcutselGetNCalls, SCIPcutselGetNRootCalls, SCIPcutselGetNRootCuts, SCIPcutselGetNRootForcedCuts, SCIPcutselGetNRootCutsFiltered, SCIPcutselGetNLocalCuts, SCIPcutselGetNLocalForcedCuts, SCIPcutselGetNLocalCutsFiltered,
### Interfaces to external software
- Added compatibility with Mosek 10.0.18.
### New parameters
- new parameters to turn on more statistics: misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
### Data structures
- added nrootcalls and ncutsadded to SCIP_Cutpool
- added fromcutpool flag to SCIP_Row and fixed 33 bit allocation
- added ncalls, nrootcalls, nrootcutsselected, nrootcutsforced, nrootcutsfiltered, nlocalcutsselected, nlocalcutsforced, nlocalcutsfiltered to SCIP_Cutsel
- added ncutsadded, ncutsaddedviapool, ncutsaddeddirect, ncutsappliedviapool, ncutsapplieddirect, nrootcalls to SCIP_Sepa
- added ncutsadded, ncutsaddedviapool, ncutsaddeddirect to SCIP_Sepastore
- fixed statistics of relaxators w.r.t. number of times conss/cuts were added
Build system
------------
### Cmake
- new option `-DAUTOBUILD` that configures scip with dependencies on availability.
Packages like Ipopt, PaPILO, Readline, Zimpl, ZLIB, GMP, Worhp are automatically found and linked, otherwise ignored.
The individual flags for these packages are ignored. This makes a quick build easier. It is by default set to off.
Fixed bugs
----------
- read objective offset from ZIMPL files
- Make sure that objective limit is disabled if not all variables are in the LP. If we would run into
an objective limit in this case, the results of the LP solver are unclear.
- fixed bug in reopt.c, which occured for bounds outside of current valid bounds
- fixed problem with recomputing symmetries after a restart
- fixed bug in SCIPcalcMIR() with wrong order of arguments for removeZerosQuad()
- fixed segmentation fault in update of cut statistic
- fixed bug in presolving of and constraints by merging variables with multiple occurrences before cliquePresolve()
- fixed bug in dual presolving of linear constraints by setting implicit integers to integers in multi-aggregation
- fixed update of presolve statistics on added constraints and changed coefficients in constraint handler for nonlinear constraints
- fixed bug with reading CIP files with large constraints split over several lines
- fixed bug with infinite bounds in the computation of conflict cuts
- fixed check for unbounded solution constructed by SCIPlpGetUnboundedSol(): The constructed solution is very likely infeasible
since scaling increases small numerical feasibility violations. Therefore, the solution is now always accepted. However, the
feasibility of the ray is now checked. This fix now might lead to several rounds of separation in order to resolve unbounded solutions,
whereas previously SCIP started to branch immediately.
- changed to absolute tolerances in all redundancy checks for linear constraints
Miscellaneous
-------------
- Added extended cutselector statistics splitting between root node specific and general statistics
- Added extended and refined cutpool statistics showing the number of cuts added from the cutpool to the sepastore
- Added extended and refined separator statistics to get a better view of the individual generators performance
- turned off output of statistics for the following information by default:
diving heuristics, ALNS neighborhood information and tree size estimation statistics;
they can be turned on using the following new parameters:
misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
@section RN801 SCIP 8.0.1
*************************
Features
--------
- clique lifting in cons_setppc (parameter enablecliquelifting) is only disabled if it has been applied
- avoid warning if Mosek has reached/exceeded the objective limit
- improved curvature check for quadratic expressions when extended formulations are disabled
Examples and applications
-------------------------
- Fixed handling of enforcing in the TSP example.
Interface changes
-----------------
### Interfaces to external software
- Added compatibility with Mosek 10.0.13.
Build system
------------
- BLISS is now built from the vendored version from https://github.com/ds4dm/Bliss
### Cmake
- avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
- adjust mosek find module to version 9.3
- added cmake compatibility for ipopt versions 3.14.x
### Makefile
- avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
- fixed that compilation with MS/Intel compilers on Windows and Cray compilers was broken when enabling PAPILO
Fixed bugs
----------
- fixed uninitialized array in detection of suborbitopes
- Fixed problem with reading long lines in LP/FZN/OPB/Diff-files. The buffer is now reallocated,
which also should be much faster.
- fixed that recursive products in expressions were sometimes not flattened
- fixed that expressions in original variables could not be simplified
- fixed handling of objective limit with Mosek
- made SCIPlpiGetSolverName()/SCIPlpiGetSolverDesc() thread-safe for LP Solvers (Cplex,Gurobi,Glop,Mosek,SoPlex,Xpress)
- made SYMsymmetryGetName() thread-safe for Bliss
- fixed memory allocation issue in detection of SOC nlhdlr
- fixed that reaching the walltime limit in Ipopt was not handled properly
- Deactivated dual fixing of unlocked variables with zero objective in presol_milp that SCIP is unable to postsolve.
- set the column flag kImplInt for implicit integers in the papilo problem
- fixed bug in propagation of indicator constraints (one case always reported a change through propagation)
@section RN800 SCIP 8.0.0
*************************
Features
--------
- Variables that were marked as relaxation-only and that were not used in any solution (SCIP_SOL)
are now deleted when during a restart.
- New symmetry handling method, symmetry handling inequalities based on the Schreier Sims table,
which is able to handle symmetries of arbitrary kinds of variables.
- Revise way in which external memory (e.g., of LP-solver) is estimated.
- The symmetry code can now heuristically search for orbitopes that do not completely handle
a symmetry component and add certain Schreier Sims cuts to such components.
- The LPIs for Gurobi and Mosek are thread-safe now.
- The complete code is now thread-safe by default.
- New separator to generate mixing cuts (works well for stochastic programming with probabilistic constraint).
- New parsing routines for cons_orbisack and cons_symresack.
- Variables can now be marked to forbid aggregation.
- Heuristic PADM can now reoptimize found solution with original objective function.
- Added code to support debugging of catching or releasing of variables to var.c (prints backtrace
when catching and releasing).
- SCIPintervalSin() and SCIPintervalCos() are now rounding-safe.
- Removed special handling of second-order cones in undercover heuristic for now.
- Removed use of Hessian sparsity pattern for nonquadratic nonlinear constraints in undercover heuristic.
- Added reader for AMPL .nl files.
- New separator sepa_rlt to compute cuts via the reformulation-linearization technique (RLT).
- New separator sepa_minor to compute cuts from 2x2 minors of a violated semidefiniteness constraint that is
implied by the extended formulation for bilinear products.
- New separator sepa_interminor to compute intersection cuts from 2x2 (not only principle) minors of a violated
rank-one constraint that is implied by the extended formulation for bilinear products.
- Symmetry handling has been extended to detect also symmetries between variables that also appear in nonlinear constraints.
- Improved OBBT propagator by only considering variables that are contained in at least one nonconvex expression that has an auxiliary variable.
- Default parameter settings for NLP solves are now defined independently of the NLP solver.
- Added table to print statistics on NLP solvers.
- Knapsack, linear, logicor, setppc, and varbound constraints now add themselves to the NLP relaxation, if enabled.
And, linking constraints and bounddisjunctions in one variable are added to the NLP relaxation now.
- Ipopt interface now supports warmstarts from a full primal/dual solution pair.
- Extended data structure SCIP_ROWPREP and routines to assemble a linear inequality before it is turned into a SCIP row and
made it available via the API.
- MIR procedure is now available for strengthening the Benders' optimality cut
- SCIPbranchcandCalcLPCands() now also returns fractional variables in unbounded solutions.
- New emphasis "benchmark" to avoid different solving paths that may come from checking remaining memory.
- New plugin type for cut selection: users can now include their own cut selection rules, default rule moved to cutsel_hybrid.
- New construction heuristic DPS which additionally needs a user-provided decomposition and splits the problem into several sub-SCIPs
according to this decomposition. The sub-SCIPs are solved and updated repeatedly until a feasible solution of the original problem is found.
Expressions:
- Removed support for expression types min and max for now. Removed support for expression type sign.
Removed complex expression types sum, product, linear, quadratic, polynomial.
Removed support for parameterized expressions.
- Added support for expression types sin, cos, and entropy. Added an expression type that stores a SCIP variable.
- Added handling of sin and cos expressions in OSiL reader.
- Added handling of sin, cos, and tan expressions in ZIMPL reader.
- Added expression handler plugin type, removed user expression type.
- Replaced expressions, expression trees, and expression graphs by a new implementation of expressions.
- Added differentiation methods (Gradients and Hessian directions) to expressions.
- Added integrality information to expressions.
- Added comparison and hashing of expressions.
- Improved simplification of expressions and identification of common subexpressions, in particular terms that appear
equally in several quadratic functions are now identified.
- Expression simplification now expands powers also when the resulting exponents will be larger than 2.
- Added table to print statistics on expression handlers.
- Removed interval-arithmetic evaluation from expression interpreter (interfaces to automatic differentiation codes).
- Hessians for user-provided expression handlers are not available in the NLP solver interfaces for now.
- Sparse Hessians are now returned by expression interpreter. Removed dense Hessians.
Constraint handlers for NLP:
- cons_nonlinear has been completely rewritten and now handles constraints of the form lhs <= expr <= rhs, where
expr is an expression using the new expression type. A linear part of a nonlinear constraint is no longer distinguished.
- Methods that work on a particular nonlinear structure are now implemented via nonlinear handlers (nlhdlr).
These handlers are plugins of cons_nonlinear and interact with cons_nonlinear by detecting structures in expressions and
providing propagation and separation mechanisms.
- Added nlhdlr "default" as a mandatory nlhdlr: this is a nlhdlr that gets active on expressions that no other nlhdlr handles.
It then uses the callbacks implemented in expression handlers to provide domain propagation and linear under/overestimates.
- Added nlhdlr for quadratic expressions: domain propagation that was previously part of cons_quadratic; separation via intersection cuts (currently disabled).
- Added nlhdlr for bilinear expressions: collects bilinear products and provides under/overestimation of a product over a 2D-projection of the LP.
- Added nlhdlr for convex and concave expressions: detection of convex/concave subexpressions and linear under/overestimation.
- Added nlhdlr for quotients: detects quotients, provides specialized linear under/overestimation and domain propagation for univariate quotients.
- Added nlhdlr for perspective reformulations: detects expressions in semi-continuous variables and tightens linear
under/overestimates of these expressions by applying a perspective transformation.
- Added nlhdlr for second-order cones: detects second-order cone constraints (as ||x|| <= t or a quadratic that can written like that) and
separates on a disaggregated reformulation (similar to cons_soc previously).
- Removed constraint handlers abspower, bivariate, quadratic, and soc.
- Removed simplification of duplicate abspower constraints for now.
Removed simplification of abspower constraints with loose variables.
Removed resolving of domain propagation (ConsResProp callback) and conflict analysis for abspower constraints.
Removed propagation of varbounds for variables of abspower constraints.
Removed reformulation of abs(x)^p * x into signpower expression for now.
- Removed reformulation of SOC constraints when adding to the NLP.
Removed possibility to add linearizations a la Glineur or BenTal&Nemirovski for SOC constraints.
- Removed possibility to disaggregate quadratic constraints.
Removed lifted tangent inequalities for bilinear terms in quadratic constraints.
Removed option to project LP solution onto feasible region of a quadratic constraint via interior point or gauge function.
Removed handling of unbounded LPs when enforcing quadratic constraints.
- Removed construction of cuts from interval gradients for nonlinear constraints.
Removed possibility to pretend that all nonlinear constraints are convex.
Removed possibility to create local or non-initial nonlinear constraints for now.
- Removed explicit reformulation of nonlinear constraints in presolve.
An extended formulation is now generated implicitly and used to construct the LP relaxation,
but the original formulation is used to check feasibility, propagate variable domains, etc.
Variables that are added for the extended formulation are now marked as relaxation-only.
- Improved locking of nonlinear variables in nonlinear constraints by taking monotonicity into account.
- Improved mechanisms to detect and handle structures in nonlinear constraints, which allows for several algorithms
to work simultaneously on equal or overlapping expressions.
- Improved linearization of (sums of) products of binary variables, e.g., clique information is now taken into account.
Removed option to linearize products between a binary and a non-binary variable.
- Nonlinear constraints with the same function (but possibly different left- or right-hand-side) are now merged.
- When a variable appears in only one concave less-or-equal constraint, it will be fixed to one of its bounds in more cases now.
- New branching rule for variables in nonlinear constraints (implemented in cons_nonlinear) that scores candidates
based on constraint violation, variable type, and pseudo-costs simultaneously.
- Added tables to print statistics of nonlinear constraint handler and nonlinear handlers.
Performance improvements
------------------------
- Use the objective cutoff row as base row for separation in sepa_aggregation.c.
- Separate lifted cover cuts based on newer lifting function of Letchford and Souli (2019) in sepa_aggregation.c.
- In-tree restarts due to tree size estimation have been made compatible with orbital fixing.
- Improved upgrade of orbisacks to packing/partitioning orbitopes.
- Improved running time of symresack cover separation.
- Improved propagation algorithm for orbisack and symresack.
- Improved handling for expressions of type signpower in CppAD interface by making use of CppADs conditional expressions.
- Faster reevaluation of Hessian for quadratic expressions in CppAD interface.
- Enabled optimization of taped expressions in the CppAD interface.
- Sparse Hessian evaluation for expressions with sparse Hessian in the CppAD interface.
- Disabled branching on variables that are added for the extended formulation of a nonlinear constraint.
- Prefer branching on variables in nonconvex terms of nonlinear constraints also if a cut could be generated but would yield a small reduction in the convexification gap only.
- When violations of nonlinear constraints are tiny, the feasibility tolerance for the LP relaxation may now be reduced temporarily to allow for cuts to have an effect.
- Improved under/overestimation of multidimensional vertex-polyhedral (e.g., multilinear or concave) functions by use of scaling and keeping the cut-generating LP around.
- Products in nonlinear constraints are no longer disaggregated for the extended formulation.
- No longer relax bounds of integral variables when computing bounds on activity in nonlinear constraints.
- Revised and improved Ipopt interface.
- Revised and improved subNLP primal heuristic, in particular choice of iteration limit and starting condition and reuse of subSCIP.
- Merge strongcg into the gomory separator to avoid computing the same base equality twice. The files
sepa_strongcg.{h|c} have been removed.
- The RENS neighborhood in ALNS now fixes fractional variables if necessary for reaching its target fixing rate.
- Use cpsolver emphasis in sepa_rapidlearning.
- If decomposition/maxgraphedge = 0, the computation of the block graph is completely turned off.
- Fixed a performance bug in cons_integral.c where rounding information was passed incorrectly to the generic diving algorithm.
Examples and applications
-------------------------
- Add c++ Sudoku example
- Removed circle.c and renamed string.c to spring.c in CallableLibrary example.
- SCIP-Jack (Steiner tree application):
Most files have been modified and many new ones have been added (code base more than doubled).
Two new problem classes are supported: maximum-weight connected subgraph problem with budget constraints, partial-terminal node-weighted Steiner tree problem.
Major performance improvements accross all problem classes that are supported.
Interface changes
-----------------
### New and changed callbacks
- extend SEPAEXEC{LP,SOL} callbacks by parameter "depth", which should be used within separation instead of SCIPgetCurrentDepth()
- extend SCIPseparateSolCutpool() by parameter "pretendroot", which is passed to SCIPcutpoolSeparate() instead of SCIPtreeGetCurrentDepth(scip->tree) == 0
- removed SCIP_DECL_EXPRGRAPHVARADDED, SCIP_DECL_EXPRGRAPHVARREMOVE, SCIP_DECL_EXPRGRAPHVARCHGIDX
- removed SCIP_DECL_USEREXPRESTIMATE, SCIP_DECL_USEREXPREVAL, SCIP_DECL_USEREXPRINTEVAL, SCIP_DECL_USEREXPRCURV, SCIP_DECL_USEREXPRPROP, SCIP_DECL_USEREXPRCOPYDATA, SCIP_DECL_USEREXPRFREEDATA, SCIP_DECL_USEREXPRPRINT
- added SCIP_DECL_EXPR_OWNERFREE, SCIP_DECL_EXPR_OWNERPRINT, SCIP_DECL_EXPR_OWNEREVALACTIVITY, SCIP_DECL_EXPR_OWNERCREATE
- added SCIP_DECL_EXPR_INTEVALVAR, SCIP_DECL_EXPR_MAPEXPR
- added SCIP_DECL_EXPRCOPYHDLR, SCIP_DECL_EXPRFREEHDLR, SCIP_DECL_EXPRCOPYDATA, SCIP_DECL_EXPRFREEDATA, SCIP_DECL_EXPRPRINT, SCIP_DECL_EXPRPARSE, SCIP_DECL_EXPRCURVATURE, SCIP_DECL_EXPRMONOTONICITY, SCIP_DECL_EXPRINTEGRALITY, SCIP_DECL_EXPRHASH, SCIP_DECL_EXPRCOMPARE, SCIP_DECL_EXPREVAL, SCIP_DECL_EXPRBWDIFF, SCIP_DECL_EXPRFWDIFF, SCIP_DECL_EXPRBWFWDIFF, SCIP_DECL_EXPRINTEVAL, SCIP_DECL_EXPRESTIMATE, SCIP_DECL_EXPRINITESTIMATES, SCIP_DECL_EXPRSIMPLIFY, SCIP_DECL_EXPRREVERSEPROP
- removed SCIP_DECL_QUADCONSUPGD
- added SCIP_DECL_VERTEXPOLYFUN
- added argument nvarexprs to SCIP_DECL_NONLINCONSUPGD to inform upgrade method about number of variables in constraint
- removed SCIP_DECL_EXPRGRAPHNODEREFORM
- added SCIP_DECL_NLHDLRCOPYHDLR, SCIP_DECL_NLHDLRFREEHDLRDATA, SCIP_DECL_NLHDLRFREEEXPRDATA, SCIP_DECL_NLHDLRINIT, SCIP_DECL_NLHDLREXIT, SCIP_DECL_NLHDLRDETECT, SCIP_DECL_NLHDLREVALAUX, SCIP_DECL_NLHDLRINTEVAL, SCIP_DECL_NLHDLRREVERSEPROP, SCIP_DECL_NLHDLRINITSEPA, SCIP_DECL_NLHDLREXITSEPA, SCIP_DECL_NLHDLRENFO, SCIP_DECL_NLHDLRESTIMATE
- replaced BMS_BLKMEM* blkmem argument of SCIP_DECL_NLPICOPY by SCIP* scip, removed targetnlpi argument
- added SCIP* scip and SCIP_NLPIDATA** nlpidata arguments to SCIP_DECL_NLPIFREE
- added SCIP* scip to SCIP_DECL_NLPIGETSOLVERPOINTER, SCIP_DECL_NLPICREATEPROBLEM, SCIP_DECL_NLPIFREEPROBLEM, SCIP_DECL_NLPIGETPROBLEMPOINTER, SCIP_DECL_NLPIADDVARS, SCIP_DECL_NLPIADDCONSTRAINTS, SCIP_DECL_NLPISETOBJECTIVE, SCIP_DECL_NLPICHGVARBOUNDS, SCIP_DECL_NLPICHGCONSSIDES, SCIP_DECL_NLPIDELVARSET, SCIP_DECL_NLPIDELCONSSET, SCIP_DECL_NLPICHGLINEARCOEFS, SCIP_DECL_NLPICHGOBJCONSTANT, SCIP_DECL_NLPISETINITIALGUESS, SCIP_DECL_NLPISOLVE, SCIP_DECL_NLPIGETSOLSTAT, SCIP_DECL_NLPIGETTERMSTAT, SCIP_DECL_NLPIGETSOLUTION, SCIP_DECL_NLPIGETSTATISTICS
- replaced SCIP_DECL_NLPICHGEXPRTREE by SCIP_DECL_NLPICHGEXPR
- removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPIADDCONSTRAINTS, changed exprtrees argument to exprs
- removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPISETOBJECTIVE, changed exprtree argument to expr
- removed SCIP_DECL_NLPICHGQUADCOEFS, SCIP_DECL_NLPICHGNONLINCOEF, SCIP_DECL_NLPISETMESSAGEHDLR
- added SCIP_NLPIPROBLEM* problem to SCIP_DECL_NLPIGETSOLVERPOINTER
### Deleted and changed API methods
- When calling SCIPdelVar() in the SCIP_STAGE_PROBLEM stage, it is now documented as the user's responsibility to ensure
the variable is not present in any constraints. Otherwise, SCIPsolve() now returns SCIP_INVALIDDATA.
- removed SCIPselectCuts(), replaced by SCIPselectCutsHybrid() of the hybrid cut selector plugin
- If SCIPvarMarkRelaxationOnly() is called for a variable, then this now need to happen before the
variable is added to the transformed problem (SCIPaddVar()).
SCIPvarMarkRelaxationOnly() will automatically call SCIPvarMarkDeletable().
- SCIPcomputeOrbitsFilterSym() and SCIPcomputeComponentsSym(): Type of argument componentblocked
changed from SCIP_Shortbool* to unsigned*.
- removed SCIPsetParam()
- SCIPcreateConsOrbitope() and SCIPcreateConsBasicOrbitope() have two new arguments "usedynamicprop"
and "mayinteract" to encode whether a dynamic reordering of the orbitope rows shall be used in
full orbitope propagation and whether the orbitope might interact with other symmetry handling
methods, respectively.
- internal function SCIPgetPropertiesPerm() has been replaced by SCIPisInvolutionPerm()
- internal function SCIPgenerateOrbitopeVarsMatrix() has new arguments "storelexorder", "lexorder",
"nvarsorder", "maxnvarsorder" to compute and store the lexicographic order defined by an orbitope
- renamed SCIPcomputeArraysIntersection() and SCIPcomputeArraysSetminus() to
SCIPcomputeArraysIntersectionInt() and SCIPcomputeArraysSetminusInt(), respectively, and changed
their return type from SCIP_RETCODE (which _always_ was SCIP_OKAY) to void
- removed SCIPincludeDialogDefault(), use SCIPincludeDialogDefaultBasic() instead and check whether you also need SCIPincludeDialogDefaultSet() and SCIPincludeDialogDefaultFix()
- removed exprint argument from SCIPaddNlRowGradientBenderscutOpt()
- added copyexprhdlrs argument to SCIPcopyPlugins() (19th position)
- added copycutselectors argument to SCIPcopyPlugins() (10th position)
- removed refpoint argument from SCIPaddSquareSecant()
- added argument exprdata to SYMcomputeSymmetryGenerators()
- removed SCIPconsNonlinearGetRhs(), SCIPconsNonlinearGetLhs(), SCIPconsNonlinearAddLinearCoef()
- removed arguments timelimit, minimprove, itercontingent, and iterused from SCIPapplyHeurSubNlp()
- removed SCIPresolveSolHeurSubNlp(), SCIPgetSubScipHeurSubNlp(), SCIPgetVarMappingScip2SubScipHeurSubNlp(), SCIPgetVarMappingSubScip2ScipHeurSubNlp()
- SCIPlockVarCons() and SCIPunlockVarCons() are now allowed in stage TRANSFORMED as well
- Added functions SCIPsetSepaIsParentsepa(), SCIPsetSepaParentsepa() [in scip_sepa.h], SCIPsepaSetIsParentsepa(), SCIPsepaSetParentsepa() [in sepa.h],
SCIPsepaIsParentsepa(), SCIPsepaGetParentsepa() [in pub_sepa.h]
- Added function SCIPpruneTree() to immediately delete nodes that were marked to be deleted with SCIPcutoffNode
NLP:
- SCIPhasNLPContinuousNonlinearity() now returns SCIP_RETCODE and has additional argument result
- removed SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadVars(), SCIPnlrowSearchQuadVar(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetQuadElems(), SCIPnlrowGetQuadData()
- renamed SCIPnlrowGetExprtree() to SCIPnlrowGetExpr() and changed return type to SCIP_EXPR*
- removed arguments nquadvars, quadvars, nquadelems, quadelems from SCIPcreateNlRow(); argument expr(ession) is now of type SCIP_EXPR*
- removed SCIPaddQuadVarToNlRow(), SCIPaddQuadVarsToNlRow(), SCIPaddQuadElementToNlRow(), SCIPaddQuadElementsToNlRow(), SCIPchgNlRowQuadElement(), SCIPsetNlRowExprtreeParam(), SCIPsetNlRowExprtreeParams()
- renamed SCIPsetNlRowExprtree() to SCIPsetNlRowExpr() and changed type of expr(tree) argument to SCIP_EXPR*
- SCIPenableNLP() is no longer allowed in stages INITSOLVE and SOLVING
- removed SCIPaddLinearConsToNlpHeurSubNlp()
- SCIPhasNLPSolution() now returns true also if a infeasible solution to the NLP exists; SCIPcreateNLPSol() can now also be used when only an infeasible solution to the NLP exists
- renamed SCIPsolveNLP() to SCIPsolveNLPParam() and added parameter SCIP_NLPPARAM param
- removed SCIPsolveDiveNLP(), use SCIPsolveNLPParam() instead
NLPI:
- removed SCIPnlpiCopy(), SCIPnlpiFree(), SCIPnlpiChgQuadCoefs(), SCIPnlpiChgNonlinCoef(), SCIPnlpiSetMessageHdlr()
- removed SCIPnlpiCreate() from public API, use SCIPincludeNlpi() instead
- removed SCIPnlpiGetSolverPointer() from public API, use SCIPgetNlpiSolverPointer() instead
- removed SCIPnlpiCreateProblem() from public API, use SCIPcreateNlpiProblem() instead
- removed SCIPnlpiFreeProblem() from public API, use SCIPfreeNlpiProblem() instead
- removed SCIPnlpiGetProblemPointer() from public API, use SCIPgetNlpiProblemPointer() instead
- removed SCIPnlpiAddVars() from public API, use SCIPaddNlpiVars() instead
- removed SCIPnlpiAddConstraints() from public API, use SCIPaddNlpiConstraints() instead
- removed SCIPnlpiSetObjective() from public API, use SCIPsetNlpiObjective() instead
- removed SCIPnlpiChgVarBounds() from public API, use SCIPchgNlpiVarBounds() instead
- removed SCIPnlpiChgConsSides() from public API, use SCIPchgNlpiConsSides() instead
- removed SCIPnlpiDelVarSet() from public API, use SCIPdelNlpiVarSet() instead
- removed SCIPnlpiDelConsSet() from public API, use SCIPdelNlpiConsSet() instead
- removed SCIPnlpiChgLinearCoefs() from public API, use SCIPchgNlpiLinearCoefs() instead
- removed SCIPnlpiChgExprtree() from public API, use SCIPchgNlpiExpr() instead
- removed SCIPnlpiChgObjConstant() from public API, use SCIPchgNlpiObjConstant() instead
- removed SCIPnlpiSetInitialGuess() from public API, use SCIPsetNlpiInitialGuess() instead
- removed SCIPnlpiSolve() from public API, use SCIPsolveNlpiParam() instead
- removed SCIPnlpiGetSolstat() from public API, use SCIPgetNlpiSolstat() instead
- removed SCIPnlpiGetTermstat() from public API, use SCIPgetNlpiTermstat() instead
- removed SCIPnlpiGetSolution() from public API, use SCIPgetNlpiSolution() instead
- removed SCIPnlpiGetStatistics() from public API, use SCIPgetNlpiStatistics() instead
- removed SCIPnlpiGetWarmstartSize()
- removed SCIPnlpiGetWarmstartMemo()
- removed SCIPnlpiSetWarmstartMemo()
- removed SCIPnlpiGetIntPar()
- removed SCIPnlpiSetIntPar()
- removed SCIPnlpiGetRealPar()
- removed SCIPnlpiSetRealPar()
- removed SCIPnlpiGetStringPar(),
- removed SCIPnlpiSetStringPar()
- removed SCIPnlpiSetPriority() from public API, use SCIPsetNlpiPriority() instead
- removed argument nlpi from SCIPincludeNlpi() and added name, description, priority,
nlpicopy, nlpifree, nlpigetsolverpointer, nlpicreateproblem, nlpifreeproblem, nlpigetproblempointer, nlpiaddvars, nlpiaddconstraints, nlpisetobjective, nlpichgvarbounds, nlpichgconssides, nlpidelvarset, nlpidelconsset, nlpichglinearcoefs, nlpichgexpr, nlpichgobjconstant, nlpisetinitialguess, nlpisolve, nlpigetsolstat, nlpigettermstat, nlpigetsolution, nlpigetstatistics, nlpidata
- removed SCIPcreateNlpSolverAll(), use SCIPincludeNlpSolverAll() instead
- removed SCIPcreateNlpSolverFilterSQP(), use SCIPincludeNlpSolverFilterSQP() instead
- removed SCIPcreateNlpSolverIpopt(), use SCIPincludeNlpSolverIpopt() instead
- removed SCIPcreateNlpSolverWorhp(), use SCIPincludeNlpSolverWorhp() instead
- replaced argument BMS_BLKMEM* blkmem of SCIPnlpiOracleCreate() by SCIP* scip
- added argument SCIP* scip to SCIPnlpiOracleFree(), SCIPnlpiOracleSetProblemName(), SCIPnlpiOracleAddVars(), SCIPnlpiOracleAddConstraints(), SCIPnlpiOracleSetObjective(), SCIPnlpiOracleChgVarBounds(), SCIPnlpiOracleChgConsSides(), SCIPnlpiOracleDelVarSet(), SCIPnlpiOracleDelConsSet(), SCIPnlpiOracleChgLinearCoefs(), SCIPnlpiOracleChgObjConstant(), SCIPnlpiOracleGetEvalCapability(), SCIPnlpiOracleEvalObjectiveValue(), SCIPnlpiOracleEvalConstraintValue(), SCIPnlpiOracleEvalConstraintValues(), SCIPnlpiOracleEvalObjectiveGradient(), SCIPnlpiOracleEvalConstraintGradient(), SCIPnlpiOracleGetJacobianSparsity(), SCIPnlpiOracleEvalJacobian(), SCIPnlpiOracleGetHessianLagSparsity(), SCIPnlpiOracleEvalHessianLag(), SCIPnlpiOraclePrintProblem(), SCIPnlpiOraclePrintProblemGams()
- removed arguments nquadelems, quadelems, exprvaridxs, exprtrees from SCIPnlpiOracleAddConstraints(), added argument SCIP_EXPR** exprs
- removed arguments nquadelems, quadelems, exprvaridxs, exprtree from SCIPnlpiOracleSetObjective(), added argument SCIP_EXPR* expr
- replaced arguments isnewx of SCIPnlpiOracleEvalHessianLag() by two arguments isnewx_obj and isnewx_cons
- removed SCIPnlpiOracleChgExprtree(), use SCIPnlpiOracleChgExpr() instead
- removed SCIPnlpiOracleSetInfinity(), SCIPnlpiOracleGetInfinity(), SCIPnlpiOracleChgQuadCoefs(), SCIPnlpiOracleChgExprParam(), SCIPnlpiOracleGetMaxDegree()
- removed SCIPnlpiOracleGetVarDegree() and SCIPnlpiOracleGetVarDegrees(), use SCIPnlpiOracleIsVarNonlinear() and SCIPnlpiOracleGetVarCounts(), respectively, instead
- removed SCIPnlpiOracleGetConstraintDegree(), use SCIPnlpiOracleIsConstraintNonlinear() instead
- removed argument messagehdlr from SCIPnlpiOraclePrintProblem() and SCIPnlpiOraclePrintProblemGams()
- removed SCIPcreateNlpiProb(), use SCIPcreateNlpiProblemFromNlRows() instead
- renamed SCIPupdateNlpiProb() to SCIPupdateNlpiProblem() and moved into scip_nlpi.{h,c}
- renamed SCIPaddNlpiProbRows() to SCIPaddNlpiProblemRows() and moved into scip_nlpi.{h,c}
- removed SCIPsetModifiedDefaultSettingsIpopt()
- removed SCIPgetIpoptApplicationPointerIpopt(), use SCIPgetNlpiSolverPointer() instead
- removed SCIPnlpStatisticsCreate(), SCIPnlpStatisticsFree(), SCIPnlpStatisticsGetNIterations(), SCIPnlpStatisticsGetTotalTime(), SCIPnlpStatisticsSetNIterations(), SCIPnlpStatisticsSetTotalTime(), the struct is public now
- renamed LapackDsyev() to SCIPcallLapackDsyevIpopt()
- renamed SCIPsolveLinearProb() to SCIPsolveLinearEquationsIpopt()
Expression interpreter:
- removed functions that operated with SCIPInterval
- changed first argument of SCIPexprintCreate() to SCIP*
- added SCIP* as first argument to SCIPexprintFree()
- added SCIP* as first argument to SCIPexprintCompile(), changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA**
- added arguments SCIP*, SCIP_EXPRINT*, and SCIP_EXPR* as first arguments to SCIPexprintFreeData()
- renamed SCIPexprintGetExprtreeCapability() to SCIPexprintGetExprCapability();
added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
- removed SCIPexprintNewParametrization()
- SCIPexprintEval(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
- removed SCIPexprintEvalInt()
- SCIPexprintGrad(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
- removed SCIPexprintGradInt()
- removed SCIPexprintHessianSparsityDense() and SCIPexprintHessianDense, use SCIPexprintHessianSparsity() and SCIPexprintHessian() instead
Expressions:
- removed SCIPexpropGetName(), use SCIPexprhdlrGetName() instead
- removed SCIPexpropGetNChildren()
- removed SCIPexprGetOperator(), use SCIPexprGetHdlr() instead
- removed SCIPexprGetOpIndex(), SCIPexprGetOpReal(), SCIPexprGetOpData(), use SCIPexprGetData() instead
- removed SCIPexprGetRealPowerExponent(), SCIPexprGetIntPowerExponent(), SCIPexprGetSignPowerExponent(), use SCIPgetExponentExprPow() instead
- removed SCIPexprGetLinearCoefs(), SCIPexprGetLinearConstant(), use SCIPgetCoefsExprSum() and SCIPgetConstantExprSum() instead
- removed SCIPexprGetQuadElements(), SCIPexprGetQuadConstant(), SCIPexprGetQuadLinearCoefs(), SCIPexprGetNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
- removed SCIPexprGetMonomials(), SCIPexprGetNMonomials, SCIPexprGetPolynomialConstant(), SCIPexprGetMonomialCoef(), SCIPexprGetMonomialNFactors(), SCIPexprGetMonomialChildIndices(), SCIPexprGetMonomialExponents()
- removed SCIPexprGetUserData(), SCIPexprHasUserEstimator(), SCIPexprGetUserEvalCapability()
- removed SCIPexprCreate(), use SCIPcreateExpr() instead
- removed SCIPexprCopyDeep(), use SCIPduplicateExpr() instead
- removed SCIPexprFreeDeep(), use SCIPreleaseExpr() instead
- removed SCIPexprFreeShallow()
- removed SCIPexprAdd(), SCIPexprMulConstant()
- removed SCIPexprCreateLinear(), use SCIPcreateExprSum() instead
- replaced SCIPexprAddToLinear() by SCIPappendExprSumExpr()
- replaced SCIPexprCreateQuadratic() by SCIPcreateExprQuadratic()
- removed SCIPexprSortQuadElems()
- removed SCIPexprCreatePolynomial(), SCIPexprAddMonomials(), SCIPexprChgPolynomialConstant(), SCIPexprMultiplyPolynomialByConstant(), SCIPexprMultiplyPolynomialByMonomial(), SCIPexprMultiplyPolynomialByPolynomial(), SCIPexprPolynomialPower()
- removed SCIPexprMergeMonomials(), SCIPexprFreeMonomial(), SCIPexprSortMonomialFactors(), SCIPexprFindMonomialFactor(), SCIPexprAreMonomialsEqual(), SCIPexprAddMonomialFactors(), SCIPexprChgMonomialCoef(), SCIPexprMultiplyMonomialByMonomial(), SCIPexprMonomialPower(), SCIPexprMergeMonomialFactors(), SCIPexprSortMonomials()
- replaced SCIPexprCreateMonomial() by SCIPcreateExprMonomial()
- removed SCIPexprCreateUser(), use SCIPincludeExprhdlr() instead
- removed SCIPexprHasParam(), SCIPexprGetMaxDegree(), SCIPexprGetVarsUsage()
- replaced SCIPexprAreEqual() by SCIPcompareExpr()
- replaced SCIPexprSimplify() by SCIPsimplifyExpr()
- replaced SCIPexprEvalShallow() by SCIPcallExprEval()
- replaced SCIPexprEval() by SCIPevalExpr()
- replaced SCIPexprEvalIntShallow() by SCIPcallExprInteval()
- replaced SCIPexprEvalInt() by SCIPevalExprActivity()
- removed SCIPexprEvalUser(), SCIPexprEvalIntUser(), SCIPexprEstimateUser()
- replaced SCIPexprCheckCurvature() by SCIPcomputeExprCurvature()
- removed SCIPexprSubstituteVars(), use SCIPcopyExpr() instead
- removed SCIPexprReindexVars(), SCIPexprReindexParams()
- replaced SCIPexprPrint() by SCIPprintExpr()
- replaced SCIPexprParse() by SCIPparseExpr()
Expression tree:
- removed SCIPexprtreeGetVars(), SCIPexprtreeSetVars(), SCIPexprtreeAddVars(), SCIPexprtreePrintWithNames(), SCIPexprtreeFindVar()
- removed SCIPexprtreeGetRoot(), SCIPexprtreeGetNVars(), SCIPexprtreeGetNParams(), SCIPexprtreeGetParamVals(), SCIPexprtreeSetParamVal(), SCIPexprtreeHasParam()
- removed SCIPexprtreeGetInterpreterData(), SCIPexprtreeSetInterpreterData(), SCIPexprtreeFreeInterpreterData()
- removed SCIPexprtreeGetMaxDegree()
- removed SCIPexprtreeEval(), use SCIPevalExpr() instead
- removed SCIPexprtreeEvalInt(), use SCIPevalExprActivity() instead
- removed SCIPexprtreePrint(), use SCIPprintExpr() instead
- removed SCIPexprtreeCreate()
- removed SCIPexprtreeCopy(), use SCIPduplicateExpr() instead
- removed SCIPexprtreeFree(), use SCIPreleaseExpr() instead
- removed SCIPexprtreeSetParams(), SCIPexprtreeGetVarsUsage()
- removed SCIPexprtreeSimplify(), use SCIPsimplifyExpr() instead
- removed SCIPexprtreeAddExpr()
- removed SCIPexprtreeCheckCurvature(), use SCIPcomputeExprCurvature() instead
- removed SCIPexprtreeSubstituteVars(), use SCIPcopyExpr() instead
- removed SCIPquadelemSort(), SCIPquadelemSortedFind(), SCIPquadelemSqueeze()
Expression graph:
- removed SCIPexprgraphCaptureNode(), use SCIPcaptureExpr() instead
- removed SCIPexprgraphIsNodeEnabled()
- removed SCIPexprgraphGetNodeNChildren(), use SCIPexprGetNChildren() instead
- removed SCIPexprgraphGetNodeChildren(), use SCIPexprGetChildren() instead
- removed SCIPexprgraphGetNodeNParents(), SCIPexprgraphGetNodeParents(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodePosition()
- removed SCIPexprgraphGetNodeOperator(), use SCIPexprGetHdlr() instead
- removed SCIPexprgraphGetNodeOperatorIndex(), SCIPexprgraphGetNodeOperatorReal(), use SCIPexprGetData() instead
- removed SCIPexprgraphGetNodeVar(), use SCIPgetVarExprVar() instead
- removed SCIPexprgraphGetNodeRealPowerExponent(), SCIPexprgraphGetNodeIntPowerExponent(), SCIPexprgraphGetNodeSignPowerExponent(), use SCIPgetExponentExprPow() instead
- removed SCIPexprgraphGetNodeLinearCoefs(), SCIPexprgraphGetNodeLinearConstant(), use SCIPgetCoefsExprSum(), SCIPgetConstantExprSum() instead
- removed SCIPexprgraphGetNodeQuadraticConstant(), SCIPexprgraphGetNodeQuadraticLinearCoefs(), SCIPexprgraphGetNodeQuadraticQuadElements(), SCIPexprgraphGetNodeQuadraticNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
- removed SCIPexprgraphGetNodePolynomialMonomials(), SCIPexprgraphGetNodePolynomialNMonomials(), SCIPexprgraphGetNodePolynomialConstant(), SCIPexprgraphGetNodePolynomialMonomialCurvature()
- removed SCIPexprgraphGetNodeUserData(), SCIPexprgraphHasNodeUserEstimator()
- removed SCIPexprgraphGetNodeBounds(), use SCIPexprGetActivity() instead
- removed SCIPexprgraphGetNodeVal(), use SCIPexprGetEvalValue() instead
- removed SCIPexprgraphGetNodeCurvature(), use SCIPexprGetCurvature() instead
- removed SCIPexprgraphCreateNode()
- removed SCIPexprgraphCreateNodeLinear(), use SCIPcreateExprSum() instead
- removed SCIPexprgraphCreateNodeQuadratic(), use SCIPcreateExprQuadratic() instead
- removed SCIPexprgraphCreateNodePolynomial(), SCIPexprgraphNodePolynomialAddMonomials()
- removed SCIPexprgraphCreateNodeUser(), removed SCIPexprgraphNodeSplitOffLinear(), SCIPexprgraphMoveNodeParents()
- removed SCIPexprgraphReleaseNode(), use SCIPreleaseExpr() instead
- removed SCIPexprgraphFreeNode(), use SCIPreleaseExpr() instead
- removed SCIPexprgraphEnableNode(), SCIPexprgraphDisableNode()
- removed SCIPexprgraphHasNodeSibling(), SCIPexprgraphAreAllNodeChildrenVars(), SCIPexprgraphHasNodeNonlinearAncestor()
- removed SCIPexprgraphPrintNode(), SCIPprintExpr() instead
- removed SCIPexprgraphTightenNodeBounds()
- removed SCIPexprgraphUpdateNodeBoundsCurvature(), use SCIPevalExprActivity() and SCIPcomputeExprCurvature() instead
- removed SCIPexprgraphGetDepth(), SCIPexprgraphGetNNodes(), SCIPexprgraphGetNodes(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars()
- removed SCIPexprgraphGetVarNodes(), SCIPexprgraphSetVarNodeValue(), SCIPexprgraphSetVarsBounds(), SCIPexprgraphSetVarBounds(), SCIPexprgraphSetVarNodeBounds(), SCIPexprgraphSetVarNodeLb(), SCIPexprgraphSetVarNodeUb(), SCIPexprgraphGetVarsBounds()
- removed SCIPexprgraphCreate(), SCIPexprgraphFree()
- removed SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphAddConst(), SCIPexprgraphAddExprtreeSum()
- removed SCIPexprgraphReplaceVarByLinearSum(), SCIPexprgraphFindVarNode(), SCIPexprgraphFindConstNode()
- replaced SCIPexprgraphPrintDot() by SCIPprintExprDotInit[2](), SCIPprintExprDot(), SCIPprintExprDotFinal()
- removed SCIPexprgraphEval(), use SCIPevalExpr() instead
- removed SCIPexprgraphPropagateVarBounds(), SCIPexprgraphPropagateNodeBounds()
- removed SCIPexprgraphCheckCurvature(), use SCIPcomputeExprCurvature() instead
- removed SCIPexprgraphSimplify(), use SCIPsimplifyExpr() instead
- removed SCIPexprgraphGetTree(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSubtreeVarsUsage(), SCIPexprgraphGetSumTreesNSummands(), SCIPexprgraphGetSumTrees()
Constraint handlers for NLP:
- removed SCIPincludeConshdlrAbspower()
- deprecated SCIPcreateConsAbspower() and SCIPcreateConsBasicAbspower(), use SCIPcreateConsBasicSignpowerNonlinear() instead
- deprecated SCIPgetNlRowAbspower(), use SCIPgetNlRowNonlinear() instead
- removed SCIPgetNonlinearVarAbspower(), SCIPgetLinearVarAbspower(), SCIPgetExponentAbspower(), SCIPgetOffsetAbspower(), SCIPgetCoefLinearAbspower(), SCIPgetLhsAbspower(), SCIPgetRhsAbspower()
- removed SCIPgetViolationAbspower(), use SCIPgetAbsViolationNonlinear() instead
- removed SCIPisConvexAbspower(), use SCIPhasExprCurvature() instead
- removed SCIPincludeConshdlrBivariate(), SCIPcreateConsBivariate(), SCIPcreateConsBasicBivariate()
- removed SCIPgetLinearVarBivariate(), SCIPgetLinearCoefBivariate(), SCIPgetExprtreeBivariate(), SCIPgetLhsBivariate(), SCIPgetRhsBivariate()
- removed SCIPincludeConshdlrQuadratic(), use SCIPincludeNlhdlrQuadratic() instead
- removed SCIPincludeQuadconsUpgrade()
- removed SCIPcreateConsQuadratic2(), SCIPcreateConsBasicQuadratic2()
- deprecated SCIPcreateConsBasicQuadratic(), use SCIPcreateConsBasicQuadraticNonlinear() instead
- deprecated SCIPcreateConsBasicQuadratic(), use SCIPcreateConsQuadraticNonlinear() instead
- deprecated SCIPaddConstantQuadratic(), use SCIPgetLhsNonlinear() and SCIPgetRhsNonlinear() instead
- deprecated SCIPaddLinearVarQuadratic(), use SCIPaddLinearVarNonlinear() instead
- deprecated SCIPaddQuadVarQuadratic(), use SCIPaddLinearVarNonlinear() and SCIPaddExprNonlinear() instead
- deprecated SCIPaddQuadVarLinearCoefQuadratic(), use SCIPaddLinearVarNonlinear() instead
- deprecated SCIPaddSquareCoefQuadratic(), use SCIPaddExprNonlinear() instead
- deprecated SCIPaddBilinTermQuadratic(), use SCIPaddExprNonlinear() instead
- deprecated SCIPchgLhsQuadratic(), use SCIPgetLhsNonlinear() instead
- deprecated SCIPchgRhsQuadratic(), use SCIPgetRhsNonlinear() instead
- deprecated SCIPgetNlRowQuadratic(), use SCIPgetNlRowNonlinear() instead
- removed SCIPgetNLinearVarsQuadratic(), SCIPgetLinearVarsQuadratic(), SCIPgetCoefsLinearVarsQuadratic(), SCIPgetNQuadVarTermsQuadratic(), SCIPgetQuadVarTermsQuadratic(), SCIPsortQuadVarTermsQuadratic(), SCIPfindQuadVarTermQuadratic(), SCIPgetNBilinTermsQuadratic(), SCIPgetBilinTermsQuadratic(), SCIPgetLhsQuadratic(), SCIPgetRhsQuadratic()
- removed SCIPgetLinvarMayDecreaseQuadratic(), SCIPgetLinvarMayIncreaseQuadratic()
- removed SCIPcheckCurvatureQuadratic() and SCIPisConvexConsQuadratic(), use SCIPcomputeExprQuadraticCurvature() instead
- removed SCIPisConvexQuadratic(), SCIPisConcaveQuadratic()
- removed SCIPgetViolationQuadratic() and SCIPgetFeasibilityQuadratic(), use SCIPgetAbsViolationNonlinear() instead
- removed SCIPisLinearLocalQuadratic(), SCIPaddToNlpiProblemQuadratic()
- removed SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(), SCIPchgBilinCoefQuadratic()
- renamed SCIPgetNAllBilinearTermsQuadratic() to SCIPgetNBilinTermsNonlinear() and changed argument from SCIP* to SCIP_CONSHDLR*
- renamed SCIPgetAllBilinearTermsQuadratic() to SCIPgetBilinTermsNonlinear() and replaced arguments by SCIP_CONSHDLR* and changed return type to SCIP_CONSNONLINEAR_BILINTERM*
- removed SCIPaddBilinearIneqQuadratic(), use SCIPinsertBilinearTermImplicitNonlinear() instead
- renamed SCIPcreateConsQuadratic() to SCIPcreateConsQuadraticNonlinear() and removed argument stickingatnode
- removed SCIPincludeConshdlrSOC()
- replaced SCIPcreateConsBasicSOC() by SCIPcreateConsBasicSOCNonlinear()
- deprecated SCIPcreateConsSOC(), use SCIPcreateConsBasicSOCNonlinear() instead
- deprecated SCIPgetNlRowSOC(), use SCIPgetNlRowNonlinear() instead
- removed SCIPgetNLhsVarsSOC(), SCIPgetLhsVarsSOC(), SCIPgetLhsCoefsSOC(), SCIPgetLhsOffsetsSOC(), SCIPgetLhsConstantSOC(), SCIPgetRhsVarSOC(), SCIPgetRhsCoefSOC(), SCIPgetRhsOffsetSOC(), use SCIPisSOCNonlinear() instead
- removed SCIPaddToNlpiProblemSOC()
- renamed SCIPincludeNonlinconsUpgrade() to SCIPincludeConsUpgradeNonlinear() and removed nodereform argument
- removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs, stickingatnode from SCIPcreateConsNonlinear() and added SCIP_EXPR* argument
- removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs from SCIPcreateConsBasicNonlinear() and added SCIP_EXPR* argument
- removed SCIPcreateConsNonlinear2(), SCIPcreateConsBasicNonlinear2()
- removed SCIPsetExprtreesNonlinear(), use SCIPchgExprNonlinear() instead
- removed SCIPaddExprtreesNonlinear()
- removed SCIPgetNLinearVarsNonlinear(), SCIPgetLinearVarsNonlinear(), SCIPgetLinearCoefsNonlinear()
- removed SCIPgetNExprtreesNonlinear(), SCIPgetExprtreesNonlinear(), SCIPgetExprtreeCoefsNonlinear(), SCIPgetExprgraphNodeNonlinear(), use SCIPgetExprNonlinear() instead
- removed argument scip from SCIPgetLhsNonlinear() and SCIPgetRhsNonlinear()
- removed SCIPcheckCurvatureNonlinear(), SCIPgetCurvatureNonlinear(), and SCIPgetExprtreeCurvaturesNonlinear(), use SCIPhasExprCurvature() instead
- renamed SCIPgetViolationNonlinear() to SCIPgetAbsViolationNonlinear()
- added arguments var and coef to SCIPgetLinvarMayDecreaseNonlinear() and SCIPgetLinvarMayIncreaseNonlinear() and changed return type to void
- removed SCIPgetExprgraphNonlinear()
- removed SCIPcomputeHyperplaneThreePoints(), use SCIPcomputeFacetVertexPolyhedralNonlinear() instead
### New API functions
- added SCIPallocClearMemory() and SCIPallocClearBlockMemory() to allocate a chunk of (block) memory
that is initialized to zeros
- New internal functions for changing the default values of parameters:
SCIPparamsetSetDefaultLongint(), SCIPparamsetSetDefaultReal(), SCIPparamsetSetDefaultChar(),
SCIPparamsetSetDefaultString() and
SCIPparamSetDefaultLongint(), SCIPparamSetDefaultReal(), SCIPparamSetDefaultChar(),
SCIPparamSetDefaultString()
- new internal function SCIPisPackingPartitioningOrbitope() to check whether an orbitope is of
packing or partitioning type
- new internal function SCIPcomputeOrbitVar() to compute the symmetry orbit of a variable
- added SCIPcalcFibHash(SCIP_Real) to hash a floating-point value to an unsigned integer
- added SCIPcomputeArraysIntersectionPtr() to compute intersection of two sorted arrays of pointers
- new function SCIPinterruptLP() (intended to be called from a different thread) that interrupts ongoing lp solve
- added SCIPcreateConsIndicatorGeneric() and SCIPcreateConsIndicatorGenericLinCons()
which copy the interface of SCIPcreateConsIndicator() and SCIPcreateConsIndicatorLinCons() and
add an activeone argument to specify whether the indicator constraint should be activated on 0 or 1.
SCIPcreateConsIndicator() also adds a lessthanineq flag to choose whether the linear constraint is a less-than or greater-than inequality.
- added SCIPmarkDoNotAggrVar() to mark that a variable should not be aggregated
- added SCIPdoNotAggrVar() to query whether a variable should not be aggregated
- added SCIPdecompGetNBorderVars() and SCIPdecompGetNBorderConss() to get number of border variables/constraints
- added SCIPdecompGetVarsSize() and SCIPdecompGetConssSize() to get variable/constraint size for each block of a decomposition
- added SCIPincludeDialogDefaultBasic()
- added SCIPintervalAreDisjointEps(), SCIPintervalIntersectEps()
- added SCIPintervalEntropy()
- added SCIPintervalPropagateWeightedSum()
- added SCIPcalcRootNewton()
- added SCIPvarGetImplicVarBounds()
- added SCIPcreateRowprep(), SCIPfreeRowprep(), SCIPcopyRowprep(),
SCIProwprepGetNVars(), SCIProwprepGetVars(), SCIProwprepGetCoefs(), SCIProwprepGetSide(), SCIProwprepGetSidetype(), SCIProwprepIsLocal(), SCIProwprepGetName(), SCIProwprepGetNModifiedVars(), SCIProwprepGetModifiedVars(),
SCIProwprepReset(), SCIProwprepAddSide(), SCIProwprepAddConstant(), SCIProwprepSetSidetype(), SCIProwprepSetLocal(), SCIProwprepRecordModifications(),
SCIPprintRowprep(), SCIPprintRowprepSol(), SCIPensureRowprepSize(), SCIPaddRowprepTerm(), SCIPaddRowprepTerms(), SCIPgetRowprepViolation(), SCIPisRowprepViolationReliable(),
SCIPmergeRowprepTerms(), SCIPcleanupRowprep(), SCIPcleanupRowprep2(), SCIPscaleupRowprep(), SCIPscaleRowprep(),
SCIPgetRowprepRowConshdlr(), SCIPgetRowprepRowCons(), SCIPgetRowprepRowSepa()
- added SCIPsetClockEnabled()
- added SCIPisSolveInterrupted() to check whether SCIPinterruptSolve() has been called
- added SCIPgetNPresolRounds()
- added SCIPgetNUnfixedLPCols()
- moved SCIPhistoryGetInferenceSum() and SCIPhistoryGetAvgConflictlength() from internal to public API
Expression handler:
- added SCIPincludeExprhdlr(), SCIPgetExprhdlrs(), SCIPgetNExprhdlrs(), SCIPfindExprhdlr()
- added SCIPgetExprhdlrVar(), SCIPgetExprhdlrValue(), SCIPgetExprhdlrSum(), SCIPgetExprhdlrProduct(), SCIPgetExprhdlrPower()
- added SCIPexprhdlrSetCopyFreeHdlr(), SCIPexprhdlrSetCopyFreeData(), SCIPexprhdlrSetPrint(), SCIPexprhdlrSetParse(), SCIPexprhdlrSetCurvature(), SCIPexprhdlrSetMonotonicity(), SCIPexprhdlrSetIntegrality(), SCIPexprhdlrSetHash(), SCIPexprhdlrSetCompare(), SCIPexprhdlrSetDiff(), SCIPexprhdlrSetIntEval(), SCIPexprhdlrSetSimplify(), SCIPexprhdlrSetReverseProp(), SCIPexprhdlrSetEstimate()
- added SCIPexprhdlrGetName(), SCIPexprhdlrGetDescription(), SCIPexprhdlrGetPrecedence(), SCIPexprhdlrGetData(), SCIPexprhdlrHasPrint(), SCIPexprhdlrHasBwdiff(), SCIPexprhdlrHasFwdiff(), SCIPexprhdlrHasIntEval(), SCIPexprhdlrHasEstimate(), SCIPexprhdlrHasInitEstimates(), SCIPexprhdlrHasSimplify(), SCIPexprhdlrHasCurvature(), SCIPexprhdlrHasMonotonicity(), SCIPexprhdlrHasReverseProp()
- added SCIPexprhdlrComp()
- added SCIPexprhdlrGetNIntevalCalls(), SCIPexprhdlrGetIntevalTime(), SCIPexprhdlrGetNReversepropCalls(), SCIPexprhdlrGetReversepropTime(), SCIPexprhdlrGetNCutoffs(), SCIPexprhdlrGetNDomainReductions(), SCIPexprhdlrIncrementNDomainReductions(), SCIPexprhdlrGetNEstimateCalls(), SCIPexprhdlrGetEstimateTime(), SCIPexprhdlrGetNBranchings(), SCIPexprhdlrIncrementNBranchings(), SCIPexprhdlrGetNSimplifyCalls(), SCIPexprhdlrGetSimplifyTime(), SCIPexprhdlrGetNSimplifications()
- added SCIPprintExpressionHandlerStatistics()
- added SCIPincludeExprhdlrEntropy(), SCIPcreateExprEntropy(), SCIPisExprEntropy()
- added SCIPincludeExprhdlrErf(), SCIPcreateExprErf(), SCIPisExprErf()
- added SCIPcreateExprAbs(), SCIPincludeExprhdlrAbs(), SCIPisExprAbs()
- added SCIPcreateExprExp(), SCIPincludeExprhdlrExp(), SCIPisExprExp()
- added SCIPcreateExprLog(), SCIPincludeExprhdlrLog(), SCIPisExprLog()
- added SCIPcreateExprPow(), SCIPcreateExprSignpower(), SCIPincludeExprhdlrPow(), SCIPincludeExprhdlrSignpower(), SCIPisExprSignpower(), SCIPgetExponentExprPow(), SCIPisExprPower()
- added SCIPincludeExprhdlrProduct(), SCIPcreateExprProduct(), SCIPgetCoefExprProduct(), SCIPisExprProduct()
- added SCIPincludeExprhdlrSum(), SCIPcreateExprSum(), SCIPsetConstantExprSum(), SCIPappendExprSumExpr(), SCIPmultiplyByConstantExprSum(), SCIPgetCoefsExprSum(), SCIPgetConstantExprSum(), SCIPisExprSum()
- added SCIPincludeExprhdlrSin(), SCIPcreateExprSin(), SCIPincludeExprhdlrCos(), SCIPcreateExprCos(), SCIPisExprSin(), SCIPisExprCos()
- added SCIPincludeExprhdlrValue(), SCIPcreateExprValue(), SCIPgetValueExprValue(), SCIPisExprValue()
- added SCIPincludeExprhdlrVar(), SCIPcreateExprVar(), SCIPgetVarExprVar(), SCIPisExprVar()
- added SCIPincludeExprhdlrVaridx(), SCIPcreateExprVaridx(), SCIPisExprVaridx(), SCIPgetIndexExprVaridx(), SCIPsetIndexExprVaridx()
Expression:
- added SCIPcaptureExpr(), SCIPreleaseExpr(), SCIPexprGetNUses()
- added SCIPexprGetHdlr(), SCIPexprGetData(), SCIPexprSetData(), SCIPexprGetOwnerData()
- added SCIPevalExpr(), SCIPgetExprNewSoltag(), SCIPexprGetEvalValue(), SCIPexprGetEvalTag()
- added SCIPevalExprGradient(), SCIPevalExprHessianDir(), SCIPexprGetDerivative(), SCIPexprGetDot(), SCIPexprGetBardot(), SCIPexprGetDiffTag()
- added SCIPevalExprActivity(), SCIPexprGetActivity(), SCIPexprGetActivityTag(), SCIPexprSetActivity()
- added SCIPcomputeExprCurvature(), SCIPexprGetCurvature(), SCIPexprSetCurvature()
- added SCIPcomputeExprIntegrality(), SCIPexprIsIntegral(), SCIPexprSetIntegrality()
- added SCIPcheckExprQuadratic(), SCIPfreeExprQuadratic(), SCIPevalExprQuadratic(), SCIPprintExprQuadratic(), SCIPcomputeExprQuadraticCurvature()
- added SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm(), SCIPexprAreQuadraticExprsVariables()