- Drop Python 3.6 support and below (EOL).
- Add newer Python versions.
- Updating project URL (moved from @gfairchild's personal namespace to @lanl's namespace).
- Fixing shallow copy issue of harmony memory (#16).
- Fixing inexplicable tab/space issue in PyPI release (#15).
- Fixing build/deploy issue.
- The initial harmonies can be specified by passing a list of harmonies to
harmony_search()
. (courtesy @szhan) HarmonySearchResults
now also stores the history of harmonies (stored everyn
th fitness evaluations, wheren
is the number of individual solutions) of each run. (courtesy @szhan)
HarmonySearchResults
now also stores the last complete harmony memory from each run.
- For clarity, the harmony memory now remembers
(harmony, fitness)
tuples instead of a single array with the fitness appended to the end.
HarmonySearchResults
is now a namedtuple instead of a class.
- An empty struct-like class,
HarmonySearchResults
, is now used to return search results for more flexibility/clarity.
- pyHarmonySearch is now fully Python 3+ compliant.
KeyboardInterrupt
is now properly handled.
- Moving to setuptools (using ez_setup.py to manage it).
ObjectiveFunctionInterface
methods now output their name (dynamically generated using inspect) if aNotImplementedError
is raised.
- Fixed a bug in the pitch adjustment step.
- Added a new, more complicated, example that solves a 5-D linear system of equations.
- Refactored code so that HS is now implemented as a class called
HarmonySearch
. A non-class methodharmony_search
is used to callHarmonySearch
with multiple processes. This now means we can dofrom pyharmonysearch import ObjectiveFunctionInterface, harmony_search
when implementing an objective function. - Added
setup.py
so that pyHS can be installed and imported anywhere. - Added
CHANGES.md
to track changes. Although development has gone on since 2013-04-17, I will only henceforth track changes. - Split pyHS code and examples into separate modules.
- Changes to readme to reflect refactoring.