-
Notifications
You must be signed in to change notification settings - Fork 1
/
NEWS
1269 lines (1083 loc) · 45.2 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
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
* Version 0.25 (2024-08-17)
Library:
- Added class algorithm::Decorator
- Added file hnco/algorithms/decorators/decorator.hh
- class Restart derives from algorithm::Decorator
- DyadicIntegerRepresentation: added constructor for [0..n-1]
- Added class ValueSetRepresentation
- Added files app/parser.(hh|cc)
- Updated function parse_representation
- Function get_representations checks for unset option fp_representations
- Renamed MixedIntegerMultivariateFunctionAdapter -> MixedRepresentationMultivariateFunctionAdapter (single and multi)
- Defined representation variant type app::rep_var_t
- MixedRepresentationMultivariateFunctionAdapter: template parameter RepVariant must be a variant of representations (single and multi)
- Added function map::ts_invert
- Fixed TsAffineMap::invert
- Added class algorithm::FitnessProportionateSelection
- Added class algorithm::BoltzmannSelection
- Added function hnco::fail_with
- Added function hnco::algorithm::pv_add for weighted bit vectors
- Replaced enum class with enum nested within struct
- Renamed moment structs in namespace algorithm::walsh_moment
- Changed bit_add into a pure function
- Optimized algorithm::walsh_moment::FullMoment::scaled_difference
- Renamed converters
- Rename function::modifier::Negation -> OppositeFunction
Tests:
- Added test-tsaffinemap-invert
- Added test-walsh-moment-add.cc
- Added test-herding-sample.cc
hnco, hnco-mo:
- Removed parameter fp_expression_source
- Removed parameter fp_representations_source
hnco:
- Renamed parameter negation -> minimize
- Changed hea flags to boolean parameters
- Added multivariate equations
hnco-mo:
- Added systems of multivariate equations
- ea_mutation_rate is an absolute mutation rate (as opposed to
relative to bv_size). It has no default value. Set algorithm
parameters only when explicitly provided at the command line.
Build:
- Added target pdf to compile refman.pdf
optgen.pl:
- Check empty sections and section ids
- Renamed hashes
- Added function generate_source_check_string_as_bool
Perl scripts:
- hnco-ecdf-stat.pl: updated make_directories
- hnco-ecdf-stat.pl: make fmin the first of the n targets
- hnco-runtime2-skeleton.pl: added make_path
- hnco-runtime2-run.pl: merge iterate_parameter1_values and iterate_parameter2_values
- hnco-runtime2-run.pl: exchange parameter1 and parameter2
- hnco-runtime2-stat.pl: use scalar as FILEHANDLE
* Version 0.24 (2024-01-03)
Highlight:
- New algorithm: Gomea
Library:
- Added namespace hnco::algorithm::gomea
- Added class hnco::algorithm::gomea::Gomea
- Moved sbv_flip to files bit-vector.(hh|cc)
- Renamed sbv_flip -> bv_flip
- Translation::map, AffineMap::map, and TsAffineMap::map use bv_add
- Added bit_add
- bit_flip uses bit_add
- Removed bv_flip with bit_vector_t parameter
- Removed hnco::clip_value, replaced with std::clamp
Build:
- Added directory lib/gomea/
- Added directory lib/hnco/algorithms/gomea/
- Renamed directory algorithms/ea/ -> algorithms/evolutionary-algorithms/
- Renamed directory algorithms/ls/ -> algorithms/local-search/
- Renamed directory algorithms/pv/ -> algorithms/probability-vector/
hnco:
- ea_mutation_rate, ea_mutation_rate_min, and pn_mutation_rate are
absolute mutation rates (as opposed to relative to bv_size). They
have no default value. Set algorithm parameters only when explicitly
provided at the command line.
* Version 0.23 (2023-10-26)
Highlight:
- New function: mixed-integer multivariate function
- Improved representation specifications for function parser
- Improved cli options (no default, boolean)
- New algorithm: InformationTheoreticEa
- Added tutorials
Library:
- Fixed: make_neighborhood and make_neighborhood_iterator use
parameter bv_size instead of options.get_bv_size
- Fixed assertion in multiobjective::algorithm::Population::shrink
- Added class algorithm::InformationTheoreticEa
- ParsedMultivariateFunction: added member function get_variable_names (single and multi)
- ParsedMultivariateFunction: added member function parse (single and multi)
- ParsedMultivariateFunction: added member function add_constant (single and multi)
- Added files app/make-multivariate-function-adapter.(hh|cc)
- Added function make_multivariate_function_adapter
- Added function make_multivariate_function_adapter_complex
- Added function make_multivariate_function_adapter_mixed
- Added class MixedIntegerMultivariateFunctionAdapter (single and multi)
- DyadicIntegerRepresentation: renamed _num_bits -> _size
- DyadicIntegerRepresentation: renamed _num_bits_complete -> _exact_size
- DyadicIntegerRepresentation: renamed set_num_bits_complete -> set_exact_size
- DyadicIntegerRepresentation: added local struct Precision
- DyadicIntegerRepresentation: added constructor with given precision
- IntegerCategoricalRepresentation: renamed _num_bits -> _size
- PermutationRepresentation: removed local struct Element
- Rename DyadicComplexRepresentation -> ComplexRepresentation
- ComplexRepresentation is made of 2 scalar representations
optgen.pl:
- Handle parameters with no default value (e.g. seed)
- Added boolean type (in addition to flags)
- Option classes: removed setters
- Option classes: renamed query member functions set_* -> with_*
- json file: renamed key value -> default
- json file: renamed key alternatives -> values
hnco, hnco-mo:
- Removed parameters fp_lower_bound and fp_upper_bound
- Removed parameters fp_precision and fp_num_bits
- Added parameter fp_default_double_precision
- Added parameter fp_default_double_rep
- Added parameter fp_default_double_size
- Added parameter fp_default_int_rep
- Added parameter fp_default_long_rep
- Added parameter fp_expression_source
- Added parameter fp_representations
- Added parameter fp_representations_path
- Added parameter fp_representations_source
- Added constants pi and e for functions parsers (float, complex)
- Added function 183 (int -> double)
- Added function 184 (mixed-integer)
hnco-mo:
- Renumbered algorithm NSGA2 1400 -> 100
Build:
- Requires C++17
- Doxygen: hide undocumented classes
- Doxygen: hide undocumented members
- Doxygen: do not show files
Python:
- Added bindings for TwoRateOnePlusLambdaEa
- Added bindings for InformationTheoreticEa
* Version 0.22 (2023-02-05)
Library:
- CommandLineApplication::init() prints a default constructed HncoOptions (single and multi)
- Added algorithm::TwoRateOnePlusLambdaEa
- LogContext: added last improvement to the string
Applications:
- hnco, hnco-mo: renamed option --print-defaults -> --print-default-parameters
- hnco, hnco-mo: renamed option --print-header -> --print-parameters
- hnco: renamed option --allow-no-mutation -> --ea-allow-no-mutation
- hnco: added option --record-total-time
Build:
- optgen.pl: generate default constructor
- optgen.pl: generate constructor taking a flag to ignore bad options
Perl scripts:
- hnco-runtime-run.pl: implemented optional algorithm key exec
- hnco-runtime-run.pl: fixed dependent values
- hnco-runtime-stat.pl: renamed keys title, name -> label
- hnco-runtime-stat.pl: implemented optional keys logscale, title
- hnco-benchmark-stat.pl: implemented optional algorithm key labels
- hnco-observable-evolution-stat.pl: implemented optional function key label
- hnco-observable-evolution-stat.pl: implemented optional graphics key transform
- hnco-ecdf-stat.pl: implemented optional algorithm key labels
Experiments:
- Rerun experiment runtime
- Rerun experiment observable-evolution
* Version 0.21 (2022-10-07)
Highlight:
- Refactored population and selection
- New algorithm: SelfAdjustingOnePlusOneEa
Library:
- Added perm_shuffle()
- Added ensure()
- Multiobjective Population: Renamed size() -> get_size()
- Population is now a struct
- Population: size() -> get_size()
- Population: added get_equivalent_bvs()
- Population: removed plus_selection() and comma_selection()
- Added file algorithms/ea/selection.hh
- Added classes PlusSelection and CommaSelection
- Moved file algorithms/random-selection.hh under algorithms/ea/
- Crossover: renamed breed() -> recombine()
- RandomSelection does not inherit from Population anymore
- Reimplemented TournamentSelection
- Added SelfAdjustingOnePlusOneEa
Applications:
- hnco: renamed option --ga-tournament-size -> --ea-tournament-size
- hnco: renamed option --ga-crossover-bias -> --ea-crossover-bias
- hnco: renamed option --mutation-rate -> --ea-mutation-rate
- hnco: renamed option --allow-no-mutation -> --ea-allow-no-mutation
- hnco: added option --ea-mutation-rate-min
- hnco: added option --ea-mutation-rate-max
- hnco: added option --ea-update-strength
- hnco: added option --ea-success-ratio
Python:
- Added bindings for SelfAdjustingOnePlusOneEa
* Version 0.20 (2022-04-10)
Highlight: multiobjective optimization
Library:
- Algorithm::get_bv_size() is protected
- IterativeAlgorithm: _last_iteration initialized by loop() instead of init()
- Added namespace hnco::multiobjective
- Added multiobjective::function::Function and value_t
- Added multiobjective::function::MultivariateFunctionAdapter, ParsedMultivariateFunction
- Added multiobjective::algorithm::Population
- Added multiobjective::algorithm::Algorithm, IterativeAlgorithm
- Added multiobjective::algorithm::Nsga2, Nsga2ParetoFrontComputation
- Added multiobjective::algorithm::TournamentSelection
- Added multiobjective::app::AlgorithmFactory, FunctionFactory
- Added multiobjective::app::CommandLineApplication
- Population: index_value_t moved to namespace hnco::algorithm
- Population: removed _compare_index_value
- Declare type alias with using instead of typedef
Python:
- Added bindings for multiobjective optimization
Perl scripts:
- Added hnco-runtime-run.pl
- Added hnco-runtime-skeleton.pl
Experiments:
- Updated experiment runtime (with incremental evaluation)
* Version 0.19 (2022-01-12)
Highlight:
- Representation of permutations
- Universal function and its adapter
- Python function
Library:
- Added PermutationRepresentation
- Added PermutationFunctionAdapter
- Added Tsp
- Added UniversalFunctionAdapter
- Added UniversalFunction
- Changed namespace hnco::function::representation -> hnco::representation
- Renamed directory hnco/functions/representations/ -> hnco/representations/
- Moved non representation files under hnco/functions/
- Added perm_display
- Renamed DyadicRealRepresentation -> DyadicFloatRepresentation
- DyadicFloatRepresentation, DyadicComplexRepresentation,
DyadicIntegerRepresentation: remove default constructor
- Added hnco::is_in_interval, hnco::clip_value
- Merged directories algorithms/hea/ and algorithms/bm_pbil/ into algorithms/walsh_moment/
- Merged namespaces algorithm::hea and algorithm::bm_pbil into algorithm::walsh_moment
- Removed bit moment and bit herding
- Renamed SpinMoment -> LowerTriangularWalshMoment2
- Added SymmetricWalshMoment2
- Walsh moments are shared by BmPbil and Hea
- renamed SpinHerding -> LowerTriangularWalshMoment2Herding
- Added SymmetricWalshMoment2Herding
- Herding: removed alternative sampling methods
- Herding: cleaned code
- Hea: removed _log_flags
- Hea: added member functions set_log_*
- Walsh moment: added norm_1, norm_infinite
- Walsh moment: removed uniform
- Renamed bm_pbil::Model -> walsh_moment::LowerTriangularWalshMoment2GibbsSampler
- Added SymmetricWalshMoment2GibbsSampler
- Removed bm_pbil::ModelParameters
- Added PythonFunction
Examples:
- Added cli-universal-function.cc
Python:
- Changed: representation is a submodule of hnco
- Added universal-function.py in bindings/examples/
- Added one-max.py in bindings/examples/
* Version 0.18 (2021-10-07)
Highlight:
- python bindings
- early sphinx documentation
- fast Walsh transform
Library:
- Map: get_input_size, get_output_size, is_surjective, display
declared const
- Neighborhoods: get_origin, get_candidate, get_flipped_bits declared
const
- Function: get_bv_size, get_maximum, has_known_maximum,
provides_incremental_evaluation, display declared const
- Added ExtendedHypercubeIterator
- Added compute_fast_walsh_transform
Applications:
- hnco: use compute_fast_walsh_transform instead of compute_walsh_transform
Perl modules:
- HNCO::Run: make GNU parallel shuffle jobs
Perl scripts:
- hnco-benchmark-run.pl: optional exec name for each algorithm
- hnco-algorithm-parameter-stat.pl: produces rank statistics (similar to benchmark)
Python:
- Added all neighborhoods to the bindings
- Added most algorithms to the bindings
- Added all functions to the bindings
- Added all modifiers to the bindings
- Added setup.py for the python module
* Version 0.17 (2021-08-12)
Library:
- Added directory app/
- Added namespace hnco::app
- Added classes FunctionFactory, CommandLineFunctionFactory,
DecoratedFunctionFactory
- Added classes AlgorithmFactory, CommandLineAlgorithmFactory
- Added class CommandLineApplication
- Moved concrete functions in hnco/functions/collection/
- Moved Sudoku files in hnco/functions/collection/
- Moved ParsedMultivariateFunction files in hnco/functions/collection/
- EqualProducts, Factorization, NearestNeighborIsingModel1,
NearestNeighborIsingModel2, LinearFunction, AbstractMaxSat,
NkLandscape, Partition, Qubo, Sudoku, WalshExpansion1,
WalshExpansion2, WalshExpansion: added load and/or save member
functions
- IterativeAlgorithm: added boolean member _last_iteration
- Removed exceptions Error, SolutionFound, LocalMaximumReached and
MaximumReached
- Exceptions LastEvaluation and TargetReached derive from
std::runtime_error
- StopOnTarget: added _trigger and get_trigger
- Hboa, Ltga, ParameterLessPopulationPyramid: _pimpl is now a raw
pointer to simplify python binding
- Changed bit_t from char to uint8_t
- DyadicRealRepresentation, DyadicComplexRepresentation,
DyadicIntegerRepresentation: reordered constructor parameters
- DyadicRealRepresentation: added constructor with given precision
- CommandLineFunctionFactory: makes representation with fp_precision
or fp_num_bits
- Added directory maps/
- Moved all map related files in maps/
- Added namespace hnco::map
- Moved all map related classes and functions in hnco::map
- Added RandomSelection
- TournamentSelection derives from RandomSelection
- Added UniformSelection
- Added StopWatch::reset
- Removed sparse bit matrix (not used)
- Added TsAffineMap::inverse
- Maps: added load and save member functions
- Added load_from_archive and save_to_archive
- Concrete maps and functions call load_from_archive and
save_to_archive
- Added AffineMap::display
Python:
- Added python bindings with pybind11
- Added all maps to the bindings
Applications:
- hnco: updated hnco.json
- hnco uses classes in namespace hnco::app
- hnco: added option fp_precision
- ffgen: updated ffgen.json
- mapgen: updated mapgen.json
- mapgen, ffgen: catch runtime_error
Examples:
- Added cli-my-function.cc
- Added cli-my-algorithm.cc
- Added bindings.py, progress-tracker.py, runtime.py
Build:
- Moved optgen.pl in tools/
- optgen.pl: changed json object structure: added fields files and code
- optgen.pl: put class Options in given namespace
- Improved management of Bash completion scripts
Experiments:
- Added experiment affine-onemax
* Version 0.16 (2021-02-03)
Library:
- Added bm_set_column
- Added LinearCategoricalRepresentation
- Added Sudoku
- Renamed file multivariate-function.hh -> parsed-multivariate-function.hh
- Added member function ParsedMultivariateFunction::describe
- ParsedMultivariateFunction deduces domain and codomain types from parser
hnco:
- Added sudoku function with number 190
- Add field success to the results in json
ffgen:
- Added sudoku function with number 190
Scripts:
- Added hnco-algorithm-alternative-skeleton.pl
- Added hnco-algorithm-alternative-run.pl
- Added hnco-algorithm-alternative-stat.pl
- Added hnco-algorithm-fixed-target-run.pl
- Added hnco-algorithm-fixed-target-stat.pl
- hnco-benchmark-stat.pl: uses IO::File everywhere
- hnco-benchmark-stat.pl: writes tables in separate files
- hnco-benchmark-stat.pl: produces rank statistics
- hnco-ecdf-stat.pl: added groups
- hnco-ecdf-stat.pl: uses IO::File everywhere
- hnco-ecdf-stat.pl: displays helper lines if required
- hnco-ecdf-stat.pl: sorts algorithms in the key
Experiments:
- Added experiment algorithm-alternative
- Added experiment fixed-target
* Version 0.15 (2020-08-08)
Highlight:
- Better names
- Simpler interface for Algorithm
- More consistent function interfaces
- New functions: integer and complex multivariate functions
- New tests (4)
Library:
- Renamed point_value_t -> solution_t
- Renamed PointValueException -> SolutionFound
- SolutionFound: renamed get_point_value -> get_solution
- Renamed Random -> Generator
- Generator: added static member seed
- Generator: added static member functions set_seed and reset
- Renamed LocalMaximum -> LocalMaximumReached
- Function: renamed eval -> evaluate
- Function: renamed safe_eval -> evaluate_safely
- Function: renamed incremental_eval -> evaluate_incrementally
- Population: renamed evaluate(const vector<Function *>&) -> evaluate_in_parallel
- Algorithm: removed init
- IterativeAlgorithm: added init
- IterativeAlgorithm: added loop
- Added template class LocalSearchAlgorithm
- RandomLocalSearch, RandomWalk, SteepestAscentHillClimbing,
SimulatedAnnealing, FirstAscentHillClimbing derive from
LocalSearchAlgorithm
- Algorithm: removed set_function
- Algorithm: declared set_functions protected
- Algorithm: changed prototype of set_functions(const vector<Function *>&)
- Algorithm: changed prototype of maximize(const vector<Function *>&)
- Reordered parameters of functions (bv, sbv, bm, sbm, ts, pv): output parameters first
- Renamed bv_to_sbv -> sbv_from_bv
- Renamed bv_flip -> sbv_flip
- bv_from_string, bv_from_stream return a bit_vector_t
- sbv_from_bv returns a sparse_bit_vector_t
- Added sbv_is_valid
- Overloaded bm_identity and bm_transpose
- Added bm_square and bm_rectangular
- Renamed bm_to_sbm -> sbm_from_bm
- Transvection: removed multiply_right
- Added namespace hnco::logging
- Moved LogContext in namespace hnco::logging
- Moved files log-context.* under logging/
- Added class Logger and macro HNCO_LOG
- ProgressTracker, PvAlgorithm, BmPbil, Hea use Logger
- RandomWalk uses HNCO_LOG
- ProgressTracker, Algorithm: removed data member _stream
- ProgressTracker, Algorithm: removed member function set_stream
- Added bv_to_size_type from a slice of bit vector
- Refactoring of representations
- Renamed namespace hnco::function::real -> hnco::function::representation
- Renamed directory functions/real/ -> functions/representations/
- Representation template classes: DyadicRealRepresentation,
DyadicIntegerRepresentation, DyadicComplexRepresentation
- Removed ParsedRealMultivariateFunction
- Added template class ParsedMultivariateFunction
- Removed RealMultivariateFunctionAdapter
- Added template class MultivariateFunctionAdapter
- ProgressTracker: added flag _record_evaluation_time
- Renamed BernoulliProcess -> StandardBitMutation
- Renamed _allow_stay -> _allow_no_mutation
- Renamed members _mutation_probability -> _mutation_rate
- Renamed member functions set_mutation_probability -> set_mutation_rate
Tests:
- Added test-population-evaluate-in-parallel
- Added test-bm-add-columns
- Added test-dyadic-integer-representation
- Added test-dyadic-real-representation
hnco:
- Added BinVal with number 5
- Added integer multivariate function with number 181
- Added complex multivariate function with number 182
- Added option --record-evaluation-time
- Renamed option --allow-stay -> --allow-no-mutation
- Renamed option --pn-allow-stay -> --pn-allow-no-mutation
- Renamed option --mutation-probability -> --mutation-rate
- Renamed option -r -> -l (learning rate)
ffgen:
- Added arithmetic and geometric progressions for LinearFunction
* Version 0.14 (2020-05-23)
The library and applications now require a C++14 compiler.
Highlight:
- More consistent Algorithm API (init, maximize, finalize)
- Improved namespaces
- Improved file layout
- Fixed Hboa, Ltga, and ParameterLessPopulationPyramid (with finalize)
- Fixed CompleteSearch (without random initialization)
- New function Partition
- New algorithm Human
- New tests (9)
- New experiment function-parameter
- Perl code factorization through modules
Library:
- Added Map::display
- Added TsAffineMap::display
- Fixed Transvection::random_non_commuting
- BmPbil: added setters for logging
- BmPbil, PvAlgorithm: declared private member function set_something_to_log
- BmPbil, PvAlgorithm: member function init calls set_something_to_log
- Translation: added member function set_bv
- Added namespace hnco::function::controller
- Added namespace hnco::function::modifier
- Moved controllers under functions/controllers/
- Moved modifiers under functions/modifiers/
- Moved function-decorator.hh under functions/
- Renamed WalshTransformTerm -> WalshTerm
- Moved WalshTerm in namespace hnco::function
- Moved WalshTerm in file functions/walsh-term.hh
- Moved IterativeAlgorithm in files algorithms/iterative-algorithm.*
- Moved compute_walsh_transform out of class Function
- Added function::Partition
- Added algorithm::Human
- Added bv_from_string
- Renamed function::FunctionDecorator -> function::Decorator
- Renamed function::controller::FunctionController -> function::controller::Controller
- Renamed function::modifier::FunctionModifier -> function::modifier::Modifier
- Algorithm: declared non virtual member functions set_function and set_functions
- Algorithm: added virtual member function finalize
- Algorithm: updated virtual member function init to do nothing
- Restart: removed member functions set_function and set_functions
- OnePlusOneEa: removed member function set_function
- OnePlusOneEa: removed member function get_solution
- OnePlusOneEa: reimplements member function finalize
- RandomSearch: reimplements member function init
- RandomLocalSearch: removed member function get_solution
- RandomLocalSearch: reimplements member function finalize
- Hboa, Ltga, ParameterLessPopulationPyramid: use pointer to implementation technique
- Hboa, Ltga, ParameterLessPopulationPyramid: reimplements member function finalize
- Added namespace hnco::algorithm::fast_efficient_p3
- Hboa, Ltga, ParameterLessPopulationPyramid: moved in namespace hnco::algorithm::fast_efficient_p3
- Added directory algorithms/fast-efficient-p3/
- Hboa, Ltga, ParameterLessPopulationPyramid: filed moved under algorithms/fast-efficient-p3/
- Removed namespace hnco::algorithm::eda
- Removed directory algorithms/eda/
- Mimic: moved in namespace algorithm
- Mimic: files moved under algorithms/
- Function: updated virtual member function describe to do nothing
- Added template function hnco::join
hnco:
- Added option --map-display
- make_concrete_algorithm: does not call set_something_to_log
- Added function::Partition with number 91
- Added algorithm::Human with number 30
- Added call to finalize
ffgen:
- Added function::Partition with number 91
Tests:
- Renamed test-ts-involution -> test-ts-random-commuting-is-involution
- Added test-ts-random-unique-destination-is-involution
- Added test-ts-random-unique-source-is-involution
- Added test-ts-random-disjoint-is-involution
- Added test-transvection-is-involution
- Added test-ts-random-commuting
- Added test-ts-random-disjoint
- Added test-ts-random-non-commuting
- Added test-bv-from-stream
- Added test-serialize-partition
- Put init and maximize in the same try block
Examples:
- Updated examples
Scripts:
- Renamed scripts/ -> experiments/scripts/
- Renamed hnco-parameter-*.pl -> hnco-algorithm-parameter-*.pl
- Renamed hnco-maximum-*.pl -> hnco-maximum-evolution-*.pl
- Renamed hnco-dynamics-*.pl -> hnco-observable-evolution-*.pl
- Rename hnco-walsh-*.pl -> hnco-walsh-transforms-*.pl
- Scripts use modules HNCO::Run or HNCO::Report
- hnco-benchmark-run.pl: take into account fields only_algorithms and skip_algorithms
- hnco-benchmark-stat.pl: set font face and size (candlesticks, scatter)
- hnco-runtime-stat.pl: update plan.json
- hnco-runtime-stat.pl: set font face and size (mean, candlesticks)
- hnco-runtime-stat.pl: set xlabel, title, and key (mean)
- hnco-algorithm-parameter-stat.pl: update plan.json
- hnco-algorithm-parameter-stat.pl: set font face and size (candlesticks, mean)
- hnco-algorithm-parameter-stat.pl: set xlabel and title (candlesticks)
- hnco-runtime2-stat.pl: set font face, font size, and key (graphics)
- Added hnco-function-parameter-stat.pl
- optgen.pl moved to app/
Modules:
- Added experiments/modules/
- Added HNCO::Run
- Added HNCO::Report
Experiments:
- Experiments moved under experiments/examples/
- Renamed parameter -> algorithm-parameter
- Renamed maximum -> maximum-evolution
- Renamed dynamics -> observable-evolution
- Added experiment function-parameter
* Version 0.13 (2020-01-12)
Highlight: real multivariate functions through
RealMultivariateFunction and RealMultivariateFunctionAdapter classes
Library:
- Imported fparser
- Added ParsedModifier
- Negation: fixed incremental_eval
- Added namespace hnco::function::real
- Added class RealRepresentation
- Added class DyadicRealRepresentation
- Added class RealMultivariateFunction
- Added class ParsedRealMultivariateFunction
- Added class RealMultivariateFunctionAdapter
- Added bv_from_stream
- Added struct Transvection
- Added type transvection_sequence_t and its functions
- Added class TsAffineMap
- Added bm_add_columns
- Added resizing bm_identity
- Added is_in_range
hnco:
- Added options --expression and --parsed-modifier
- Added section real
- Added option --real-expression
- Added option --real-lower-bound
- Added option --real-upper-bound
- Added option --real-num-bits
- Added RealMultivariateFunctionAdapter with number 180
- Renamed option --describe-solution -> --print-description
- Added option --save-solution
- Added option --save-description
- Renamed option --print-concrete-solution -> --concrete-solution
- Added option --load-solution
- Added total_num_evaluations to results
- Added options for transvection sequences
- Put init and maximize in the same try block
- Report a warning if an exception occurs during initialization
mapgen:
- Added options for transvection sequences
Tests:
- Added test-incremental-negation
- Added test-ts-multiply
- Added test-serialize-ts-affine-map
- Added test-ts-involution
Scripts:
- hnco-benchmark-run.pl: take into account boolean field save_solution
- hnco-benchmark-stat.pl: generate per function file results.txt (hall of fame)
- hnco-runtime-stat.pl: use total_num_evaluations instead of num_evaluations
- hnco-runtime-stat.pl: take into account per function boolean field logscale
- hnco-benchmark-run.pl: removed option -i 0
- hnco-parameter-run.pl: removed option -i 0
- hnco-benchmark-run.pl: print each run's exit status (sequential mode)
- hnco-parameter-run.pl: print each run's exit status (sequential mode)
- Renamed hnco-walsh-doc.pl -> hnco-walsh-stat.pl
- hnco-benchmark-run.pl: redirect standard error without appending (parallel mode)
- hnco-parameter-run.pl: redirect standard error without appending (parallel mode)
- Added hnco-runtime2-skeleton.pl
- Added hnco-runtime2-run.pl
- Added hnco-runtime2-stat.pl
Experiments:
- runtime: set budget field to 0 (indefinite)
- ecdf: remove option -i 0
- maximum: remove option -i 0
- dynamics: remove option -i 0
* Version 0.12 (2019-05-08)
Highlight:
- New functions: NearestNeighborIsingModel1 and
NearestNeighborIsingModel2
- 11 new tests
Details follow.
Library:
- Added class LogContext
- Algorithm: added protected member _log_context and its setter
- ProgressTracker: removed exception handling code from member functions
- LinearFunction: added member function incremental_eval
- WalshExpansion1: added member function get_maximum
- WalshExpansion1: added member function incremental_eval
- PvAlgorithm: replaced bitset with individual log flags
- Optimized bv_random
- NkLandscape: added member function display
- Added NearestNeighborIsingModel1
- Factorization: added default constructor and load member function
- Added NearestNeighborIsingModel2
- LinearFunction, NkLandscape, EqualProducts, WalshExpansion,
WalshExpansion1, WalshExpansion2, NearestNeighborIsingModel1,
NearestNeighborIsingModel2: added template member function generate
and member function random
- WalshExpansion2: added member function generate_ising1_long_range
- Changed type permutation_t: std::vector<size_t> -> std::vector<int>
- Changed type Population::index_value_t: std::pair<size_t, double> -> std::pair<int, double>
- Population::size now returns an int
- Algorithm::get_bv_size now returns an int
- Function::get_bv_size now returns an int
- The library now uses int almost everywhere.
- StopWatch: renamed member _total -> _total_time
- StopWatch: renamed member function get_total -> get_total_time
Tests:
- Fixed test-walsh-transform
- Added test-complete-search-linear-function
- Added test-complete-search-walsh-expansion-1
- Added test-incremental-linear-function-bernoulli-process
- Added test-incremental-walsh-expansion-1-bernoulli-process
- Added test-bv-random
- Added test-incremental-nn-ising-1
- Added test-serialize-nn-ising-1
- Added test-complete-search-six-peaks
- Added test-complete-search-factorization
- Renamed test-max-sat -> test-complete-search-max-sat
- Fixed test-complete-search-max-sat
- Added test-serialize-nn-ising-2
- Added test-incremental-nn-ising-2
hnco:
- Set log context
- FunctionFactory: added member _tracker and its getter
- make_function_controller decorates its argument with ProgressTracker
before other FunctionController
- main: functions are uniformly created with make_function
- main: only one function is decorated with make_function_controller
- Fixed: filter out the coefficient of the feature zero
- Use StopWatch
ffgen:
- LinearFunction, NkLandscape, WalshExpansion, WalshExpansion1,
WalshExpansion2, NearestNeighborIsingModel1,
NearestNeighborIsingModel2: use template member function generate
with normal distribution
- EqualProducts: use template member function generate with uniform
distribution
- Added function generate_function
- Catch exceptions Error
- Added NearestNeighborIsingModel1 with number 171
- Renamed flag ms_known_maximum -> ms_planted_solution
- Added template function save_function_to_boost_archive
- Added NearestNeighborIsingModel1 with number 172
- Added function generate_walsh_expansion_2
- Added function generate_nearest_neighbor_ising_model_1
- Added function generate_nearest_neighbor_ising_model_2
- Added generator type for WalshExpansion2,
NearestNeighborIsingModel1, and NearestNeighborIsingModel2
Scripts:
- hnco-dynamics-stat.pl: set xlabel, xcolumn, and ycolumn in plot
command
Experiments:
- dynamics: plan.json: added fields for xlabel, xcolumn, and ycolumn
- dynamics: plan.json: updated Pbil parameters
* Version 0.11 (2019-02-24)
Library:
- OnePlusOneEa: fixed bug which prevented from getting the actual solution
- Cache: added member function get_lookup_ratio
- Event: renamed member time -> num_evaluations
- Added class StopWatch
- ProgressTracker: added member function get_evaluation_time
- Map: added classes Injection and Projection
Tests:
- Added test-injection-projection
- Added test-translation
- test-hamming-sphere-iterator uses a random radius
Build:
- optgen.pl: handle the case with no section (cf. mapgen.json)
hnco:
- Replaced make_function with FunctionFactory
- Added option --print-concrete-solution
- Removed option --print-performance
- Added options --print-results, --save-results and --results-path
- Results are printed and saved in json
- hnco measures total CPU time with the clock() function
- Population: added member functions partial_sort and shuffle
- Population: added plus_selection and comma_selection with swap
- Renamed member functions set_rate -> set_learning_rate
- Renamed members _rate -> _learning_rate
Scripts:
- hnco-benchmark-stat.pl, hnco-parameter-stat.pl: rounding specification in json data structure
- hnco-benchmark-stat.pl: generate ranking per function
- hnco-*-run.pl: added option --joblog to parallel
- hnco-benchmark-run.pl: removed external dependency on /usr/bin/time
- hnco-benchmark-stat.pl: added tables for CPU time
Experiments:
- Benchmark, parameter: rounding specification in json data structure
- Added experiment lookup-ratio
* Version 0.10 (2018-10-21)
Highlight:
- New functions: MaxNae3Sat
- New algorithms: Mimic, RandomWalk
- New experiment: autocorrelation
Details follow.
Library:
- Added function bv_is_locally_maximal
- Added function bv_is_globally_maximal
- Added perm_identity
- Added namespace hnco::algorithm::eda
- Added Mimic
- Renamed Random::random_bit -> Random::bernoulli
- Added bit_random
- Algorithm: bv_size must be positive
- Added RandomWalk
- Added AbstractLabs
- Renamed Labs -> LabsMeritFactor
- Labs now only computes autocorrelation
- Added AbstractMaxSat
- Added MaxNae3Sat
- Functions square and logistic moved from namespace hnco::algorithm to hnco
- SpinHerding: removed sample by means of neural network
- SpinHerding, SpinMoment: use lower triangular matrices
- Renamed BinaryHerding -> BitHerding
- Renamed BinaryMoment -> BitMoment
- BitMoment, SpinMoment: added member function display
- HEA: added flag to log moment matrix
- LongPath: override member functions has_known_maximum and get_maximum
- Merged namespace hnco::algorithm::fast_efficient_p3 into hnco::algorithm::eda
Tests:
- Added test-steepest-ascent-hill-climbing-local
- Added test-first-ascent-hill-climbing-local
- Added test-complete-search-long-path
Build:
- Added directory hnco/algorithms/eda/
- Renamed directory hnco/src/ -> hnco/app/
- Moved files hnco/algorithms/restart.* to hnco/algorithms/decorators/
- Moved file hnco/algorithms/util.hh to hnco/
- optgen.pl: added section folding in help messages
- Renamed files moment-binary.* -> bit-moment.*
- Renamed files herding-binary.* -> bit-herding.*
- Renamed files moment-spin.* -> spin-moment.*
- Renamed files herding-spin.* -> spin-herding.*
- Renamed directory hnco/algorithms/fast-efficient-p3/src/ -> fast-efficient-p3/
- Moved files in hnco/algorithms/fast-efficient-p3/ to hnco/algorithms/eda/
hnco:
- LabsMeritFactor renumbered 80 -> 81
- cache_budget was an int parameter, now a flag
- make_function_decorator: set new logic structure for budget and cache decorators
- Added option --hea-log-moment-matrix
Scripts:
- Added hnco-autocorrelation-run.pl
- Added hnco-autocorrelation-stat.pl
- hnco-benchmark-stat.pl generates tables in separate latex files
Experiments:
- Added experiment autocorrelation
- autocorrelation, walsh-transforms: use Labs instead of LabsMeritFactor
- benchmark, ecdf: added field budget in plan.json
- benchmark, ecdf: removed -b option in plan.json
- benchmark, ecdf: removed fields results, graphics, and report in plan.json
- hnco-benchmark-run.pl: sets budget
- hnco-benchmark-run.pl: hardcoded paths for results, graphics, and report
- hnco-ecdf-stat.pl: added last plateau and new key in main ecdf graphics
* Version 0.9 (2018-07-21)
Highlight:
- New algorithms: FirstAscentHillClimbing, Hboa, Ltga,
ParameterLessPopulationPyramid
- New experiment walsh-transforms
Details follow.
Library:
- Added first ascent hill climbing
- Function: added member function compute_walsh_transform
- Function: added struct WalshTransformTerm
- Added bv_dot_product between a bit vector and a bool vector
- Added bv_hamming_weight for bool vector
- Added bv_to_vector_bool, bv_from_vector_bool
- WalshExpansion: replaced load and save with serialize
- WalshExpansion uses Function::WalshTransformTerm
- Population: renamed _operator -> _compare_index_value
- RandomLocalSearch, Mmas: renamed _operator -> _compare
- RandomLocalSearch, Mmas: renamed set_operator -> set_compare
- Iterator: added _initial_state
- Iterator: changed semantic
- Iterator: removed get_current
- Iterator: member function next now returns a reference to a bit_vector_t
- Iterator: updated HypercubeIterator, SingleBitFlipIterator,
HammingSphereIterator, CompleteSearch, SteepestAscentHillClimbing,
FirstAscentHillClimbing
- Added Hboa
- Added Ltga
- Added ParameterLessPopulationPyramid
- Algorithm: removed empty constructor
- Algorithm: added member function get_bv_size
- OnePlusOneEa: member function maximize sets _solution
- OnePlusOneEa: removed member function get_solution
- ProgressTracker: removed last point of the plateau
- bit-vector.hh: function definitions moved to bit-vector.cc
- bit-matrix.hh: function definitions moved to bit-matrix.cc
- sparse-bit-vector.hh: function definitions moved to sparse-bit-vector.cc
- sparse-bit-matrix.hh: function definitions moved to sparse-bit-matrix.cc
hnco:
- Renamed option --describe-function -> --fn-display
Build:
- Conditional compilation of plugin
- Factorization and plugin features are default-disabled
Tests:
- Added test-first-ascent-hill-climbing
- Added test-single-bit-flip-iterator
- Added test-hamming-sphere-iterator
- Added test-walsh-transform
- Added test-one-plus-one-ea-one-max
- Added test-bv-to-size-type
Scripts: