[ https://issues.apache.org/jira/browse/MATH-867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13461788#comment-13461788 ]
Frank Hess commented on MATH-867: --------------------------------- I tried changing the FitnessFunction.encode/decode methods so they don't offset and that causes my test program to fit well near both bounds. That is, I changed encode from: res[i] = (x[i] - boundaries[0][i]) / diff; to: res[i] = x[i] / diff; and changed decode from: res[i] = diff * x[i] + boundaries[0][i]; to: res[i] = diff * x[i]; > CMAESOptimizer with bounds fits finely near lower bound and coarsely near > upper bound. > --------------------------------------------------------------------------------------- > > Key: MATH-867 > URL: https://issues.apache.org/jira/browse/MATH-867 > Project: Commons Math > Issue Type: Bug > Reporter: Frank Hess > Attachments: Math867Test.java > > > When fitting with bounds, the CMAESOptimizer fits finely near the lower bound > and coarsely near the upper bound. This is because it internally maps the > fitted parameter range into the interval [0,1]. The unit of least precision > (ulp) between floating point numbers is much smaller near zero than near one. > Thus, fits have much better resolution near the lower bound (which is mapped > to zero) than the upper bound (which is mapped to one). I will attach a > example program to demonstrate. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira