Reinsertion / Evaluation workflow update#89
Closed
jsboige wants to merge 25 commits intogiacomelli:developfrom
Closed
Reinsertion / Evaluation workflow update#89jsboige wants to merge 25 commits intogiacomelli:developfrom
jsboige wants to merge 25 commits intogiacomelli:developfrom
Conversation
Application of genetic algorithms to optimize RFID antenna readings
Merge from Root
The Method of Studing of Electromagnetic Characteristics and Synthesis of Metamaterial"
Fix incorrect IPopulation link in README
Merge fork 11/2020
Sudoku Optimizations
Merge from upstream
Owner
|
Closing due to inactivity. Feel free to fix the CI errors and reopen the PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
That pull-request attempts providing fixes to the issues mentioned in issue #82.
To allow for Fitness-based reinsertion to make sense, evaluation is now performed before reinsertion. Some Reinsertion classes are updated, and a new FitnessBasedElitistReinsertion class is proposed as the new default, according to the publication referenced in the earlier version.
Other performance gains were obtained and checked with a profiler.
Some optimizations were rolled-backed and commented out as seen in the corresponding unit tests
The reason for that is that although the performance gains were significant on the .Net Framework, they were more negligeable or even made things worse on .Net standard. The reason I believe is that the corresponding improvement was actually implemented in the latest .Net core. It seems however that the optmization may have gone to far the other direction, and in my early tests, the performance of the new .Net standard SortedEnumerator, though pretty good fowllowed with a Take(xx) that is properly accounted for thanks to the Quicksort partitioning feature, then gets worse than the proposed Lazyxx implementation here, when the percentage of items requested by the Take(xx) call goes above 70%.
This is to say, I believe the commented code could stay for a bit, and more tests should be done to properly figure out the differences in SortedEnumerators between .Net core, and .regular .Net implementations, depending on versions. One thing is sure, the current 462 Framework does perform complete sorts, which are O(nlog(n)) with worst case already sorted for Quicksort, for OderBy(xx) followed by Take(), whereas Maxby is linear and Lazy leverages partioning to only sort the requested first elements.