Login / Register  0 items | $0.00 NewWhat is KVR? Submit News Advertise
User avatar
Aleksey Vaneev
KVRAF
 
3218 posts since 7 Sep, 2002

Postby Aleksey Vaneev; Sat Jun 17, 2017 11:56 am Re: Bitmask evolution optimization method from Aleksey Vaneev

CurryPaste wrote:Thank you for posting your research here, Aleksey.

I know its not intended for real-time use, but do you think its approaching something nearly useful for simple real-time optimisation problems? Im thinking perhaps some optimisation problems which are local enough to keep the amount of iterations low.

I do not see a problem with that as method's overhead is relatively low. Generating seveal solutions per second should not be a problem. For real-time audio? I'm not so sure.
Image
Squidsneeze
KVRist
 
40 posts since 3 Nov, 2015, from Germany

Postby Squidsneeze; Sat Jun 17, 2017 12:31 pm Re: Bitmask evolution optimization method from Aleksey Vaneev

Hey Aleksey,

just a small remark to your code: data allocated with new[] should be released with delete[]. But your "deleteBuffers" function just calls delete which results in undefined behavior and a possible memory leak ^^ If that was intentional for some reasons, a small comment in the code would clear up things.

Best,
Danny
Miles1981
KVRian
 
1260 posts since 26 Apr, 2004, from UK

Postby Miles1981; Sat Jun 17, 2017 2:53 pm Re: Bitmask evolution optimization method from Aleksey Vaneev

Even better would be to have std::unique_ptr<[]> for the parameters instead of raw pointers...
User avatar
Aleksey Vaneev
KVRAF
 
3218 posts since 7 Sep, 2002

Postby Aleksey Vaneev; Sun Jun 18, 2017 12:02 am Re: Bitmask evolution optimization method from Aleksey Vaneev

Squidsneeze wrote:Hey Aleksey,

just a small remark to your code: data allocated with new[] should be released with delete[]. But your "deleteBuffers" function just calls delete which results in undefined behavior and a possible memory leak ^^ If that was intentional for some reasons, a small comment in the code would clear up things.

Best,
Danny

Thanks, that was a mistake.
Image
User avatar
Aleksey Vaneev
KVRAF
 
3218 posts since 7 Sep, 2002

Postby Aleksey Vaneev; Tue Jun 20, 2017 6:37 am Re: Bitmask evolution optimization method from Aleksey Vaneev

Ha ha, I've evolved the method beyond "bitmask evolution". It now uses a different approach to parameter randomization. The name is now outdated, but for historic reasons the name will remain as "biteopt". A year-long path of method's evolution.
https://github.com/avaneev/biteopt

Many improvements implemented. So far the method can't solve only about 8% of test functions I found so far. Still trying to figure out how to improve the method.
Image
User avatar
Aleksey Vaneev
KVRAF
 
3218 posts since 7 Sep, 2002

Postby Aleksey Vaneev; Fri Jun 30, 2017 9:18 pm Re: Bitmask evolution optimization method from Aleksey Vaneev

Did more work on the method. Well, as it seems, for 2-3 dimensional problems you probably won't find a better method. I have to work to make the method converge faster on higher-dimensional problems. But it's quite good for <=10 dimensional problems.

* * *

This strategy was tested on 300+ classic 2-10 dimensional optimization problems and performed well. Due to its design this strategy may be particularly good at improving an existing sub-optimal local solution. This strategy offers a very fast convergence on 2-3 dimensional problems, moderate speed of convergence on 4-10 dimensional problems, and very slow convergence speed on >10 dimensional problems, usually 10 times slower than the best competing strategies. However, on 2-3 dimensional problems there is little competition to this strategy.

This strategy was compared with results of this paper (on 242 published non-convex problems): http://archimedes.cheme.cmu.edu/?q=dfocomp This strategy was able to solve 63% of problems in 10 attempts, 2500 iterations each. For 2 dimensional problems, this strategy's success rate is 96%. For 3-9 dimensional problems the success rate is 60%. In overall, these results place the strategy on 6th place among 23 different strategies. On more that 9 dimensions the results of the strategy are currently quite poor: this strategy requires much more than 2500 iterations to converge on the solution.
Image
User avatar
Aleksey Vaneev
KVRAF
 
3218 posts since 7 Sep, 2002

Postby Aleksey Vaneev; Sun Jul 09, 2017 7:06 am Re: Bitmask evolution optimization method from Aleksey Vaneev

Well, I had to do a major fall-back of the algorithm and use the original "bitmask inversion" operation again, so the method's name is again relevant. Bitmask inversion proved to be a very useful finding, much better than the usual standard deviation-based randomization.

This whole "black box" optimization research dates back to 1960ies, there was a lot of effort put into it by a lot of people during the last 60 years. My success is at best moderate. The only truly successful thing I achieved with the method is the ability to optimize most 1-3 dimensional functions. But as the number of dimensions rises, the quality of solutions drops. The method is good for 1-10 dimensions which is adequate for use in audio algorithms optimization, for example.
Image
Previous

Moderator: Moderators (Main)

Return to DSP and Plug-in Development