CyberAgentAILab/cmaes

Mutable mean vector

Josef-Hlink opened this issue · 2 comments

mean is mutable

I know this might technically not be a bug, more so than a slight inconvenience.

Expected Behavior

For a school project, I want to benchmark the CMA-ES, so I tried to do some repetitions with the same initial vector.
To my surprise, the optimiser seemed to "remember" the last optimal solution.

Current Behavior and Steps to Reproduce

import SomePlot from .myplotscript

repetitions = 10
fmins = np.zeros(shape=(repetitions, pop_size))

X0 = np.arange(0, 100)

gen = 0
for rep in range(repetitions):
    optimizer = CMA(mean=X0)
    terminate = False
    while not terminate:
        # dosomestuff
        best_fmin = ...
    fmins[rep][gen] = best_fmin
    gen += 1

SomePlot(fmins)

Context

I know that there is a very easy workaround, just changing mean=X0 to mean=X0.copy() does the trick.
I find this quite ugly though, and it might clear some confusion for other users if the copying would be done behind the screens.
It is not a pressing issue whatsoever, I just really like this project and I hope that me pointing out this issue might make the experience working with it even more enjoyable.

@Josef-Hlink
Thank you for reporting!
I agree that it is an unexpected behavior, so I will fix it soon.