-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathNEWS
260 lines (189 loc) · 8.57 KB
/
NEWS
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
## baryonyx v0.5.0 - 2020-02-04
### Major changes:
* project:
* add [codecov.io](https://codecove.io) to produce coverage reports in travis
* use Visual Studio 2019 image in appveyor
* [boost/ut](https://github.com/boost-experimental/ut): use boost.UT v1.1.6
* [fmtlib/fmt](https://fmt.dev/latest/index.html): bump to version v6.1.1
* optimizer:
* use a evolutionary algorithm to init/reinit solver. In optimization mode, Baryonyx stores all solutions found during search. Two algorithms are used to initialize the X vector:
* A crossover/mutation using two solutions is used to re-initialize the solver.
* An improve mode using a dynamical kappa.
* Quadratic objective function: Experimental support.
* Z-coefficient: Enable the Z-coefficient solver.
* random-solver: This solver is enabled with the `--random` command line option
and in the `solver_parameters::solver_type`. It provides a pure random solver without any preference and Lagrangian relaxation. It is provided only for benchmark.
* add Lagrangian multipliers sign change detection.
### Small changes:
* c++:
* solvers: replace `fill` and `copy` with `fill_n` and `copy_n` equivalent.
* solvers: replace `std::vector<T>` with a new `bit_array` to improve cache efficiency
* main: fix signed/unsigned warning
* solver
* negative coefficient solvers: fix R access
* add pi signed change detection
* improve efficiency of random-solver
* add reset function to reinit solver
* solver: move normalized cost in thread part
* optimizer:
* replace time limit detection algorithm
* add pi signed change detection to build a new constraint remaining list
* benchmark:
* fix sort functor behaviour
* main:
* fix time-limit parameter assignation
* missing or malformed parameters equal error
* fix infinity norm string
* add a `--debug` mode.
* CMake:
* reduce warning level for msvc
* use the BUILD_SHARED_LIBS CMake option to build share library. Default, a
static library is build to enable all internal test that use private API.
## baryonyx v0.4.0 - 2019-02-19
Bump C++ dependency to C++17 standard.
main::
* benchmark: add a second output `csv` file with the rank for each solvers and
models to show best solver.
solver/optimizer::
* Optimize all solver algorithms to improve performance: rewrite and
generalize.
* Improve the `best-cycle` algorithm: is no best solution was found for three
complete optimization, solver restart to `bastert-cycle`.
* Fix the initialization cycle behaviour.
* Fix the random normalization behaviour.
* Remove useless header (sparse-vector etc), dead code.
== baryonyx v0.3.4 - 2019-01-17
main::
* benchmark: add a benchmark mode to permit to run benchmark on a set of
problems described in a `csv` files and make easy comparison.
* colours: improve colour rendering in log system. Replace specific Linux/Unix
source code about colour in (pseudo)terminal with the `fmt::text_style` and
`fmt::terminal_color` enumeration.
* add warning message for unknown parameters
solver/optimizer::
* core: add init policy cycle:
** `bastert` (default): use cost values.
** `random`: use random value.
** `best`: use best solution found if available (`bastert` otherwise).
** `bastert-cycle`: start with bastert policy then start a cycle between
random, best and bastert.
** `random-cycle`: start with random policy then start a cycle between best,
bastert and random.
** `best-cycle`: start with best policy then start a cycle between bastert,
random and best.
* core: add lagrangian runtime constraint order.
** `lagrangian-decr`: sort violated constraints according to the Lagrangian
multiplier values in decremental order.
** `lagrangian-incr`: sort violated constraints according to the Lagrangian
multiplier values in incremental order
## baryonyx v0.3.3 - 2018-10-04
main::
* output: better render output float number
solver/optimizer::
* Fix the preference matrix assignment for both equalities and inequalities
with -1 and 1 coefficients, we replace the preference matrix clean up
algorithm (invert the variable values for negative coefficients) with a
version that revert only the added or subtracted value during the preferences
update process.
* Fix core dump if no solution are found
preprocessor::
* update the preprocessing solver option: Replace the old preprocessing option
with new one but without description (p1, p2, p3 and p4). Options are `none`
to use the raw_problem (or lp file) order for constraints and variables.
`memory`, the default, to use the raw_problem (or lp file) order for
constraints but sort the variables to improve the memory cache efficiency.
## baryonyx v0.3.2 - 2018-09-24
solver/optimizer::
* Be sure to always return the correct solution value (if any), the
status (success, time-limit, kappa-limit, loop-limit) and the
remaining constraints.
* Fix optimizer algorithm to store best constraints remaining
solution.
* Fix push system in solver
general::
* add storage policy option to select the result solution vector
policy (one best solution, best and worst solution and the five best
solution).
* bump fmt library to v5.2.0
preprocessor::
* detect and affect variable affected in bound.
main::
* Add the `storage-type` option with a string parameter (one, bound
and five).
## baryonyx v0.3.1 - 2018-09-18
main::
* fix typo in constraint-order parameter.
* fix exception output message.
preprocessor::
* replace the old preprocessor algorithm. The new one is better to remove
constraints and variables and fix some issues.
solver::
* print solver parameters before solve/optimize
parser::
* fix the reading of the constraint label.
* add a default label to constraints.
* remove function elements where factors equals 0.
* merge function elements in constraints or in the objective function where
variable index appears several times.
* remove constraints with empty function element vector.
problem::
* fix the coefficient_type function
## baryonyx v0.3.0 - 2018-09-11
general::
* enable x86 and x86-64 for both Release and Debug with Visual Studio
2017
solver::
* Add small optimizer meta-heuristic algorithm, option `--auto:`:
** `none` without specific algorithm.
** `manual` tries to update parameters to found best solution.
** `nlopt` tries to update parameters to found best solution using
nlopt library and the Nelder Mead algorithm.
** `branch` split recursively original problem to found best solution.
** `branch-manual` mix branch and manual algorithm.
** `branch-nlopt` mix branch and nlopt algorithm.
+ Add observation mechanism, option `-p observer:`:
** `none` no observation (default).
** `pnm` produce picture files for the P matrix (one per loop) and Pi
vector (Lagrangian multipliers) each loop
** `file` produce CSV files for the P matrix (one per loop) and Pi
vector (Lagrangian multipliers) each loop
* Add solvers:
** equalities 01
** equalities 101
** inequalities 01
** inequalities 101
** inequalities 101 buffered (experimental)
** inequalities Z (experimental)
* Update solver and main to enable the use of float (4 bytes), double
(8 bytes) or long double (16 bytes for x86_64) for reduce costs,
kappa, delta and preference matrix etc. Default is the use of
double. To change the solver internal representation use the
following command:
$ baryonyx [...] --param floating-point-type=float|double|longdouble
* For constraints matrix A, add new static order for constraints (`-p
preprocessing=option`) where option is defined as:
** `none` (default): use the lp format constraint order.
** `less,greater,equal` or `greater,less,equal` or any other form: use
the type of operator
** `variables-number` (experimental): use number variable links.
** `variables-weight` (experimental): sort variables weights (sum
variable appearance in all constraints).
** `constraints-weight` (experimental): use number constraint links.
* Add push system for solving process
* Add parameters in solution file
* Show violated constraints in solve mode
core::
* Objective function now use double instead of integer.
* Replace `serialize` with `print-level` in option to show information
(e.g. with `print-level=1` with the solve mode, violated
constraints are displayed.
cmake::
* CMake use two options WITH_DEBUG (ON default), WITH_LOG (ON
default).
** WITH_LOG enables logging system (using the BARYONYX_ENABLE_DEBUG
preprocessor definition).
** WITH_DEBUG enable debug messages in logging system and some debug
information (using the BARYONYX_ENABLE_DEBUG preprocessor
definition).
* Add the nlopt dependency (optional) to perform automatic parameters
optimization.