www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Swiss Ephemeris / Nelder-Mead simplex

reply "Laeeth Isharc" <laeethnospam nospamlaeeth.com> writes:
Last one for a while, I think.  I wish you all a very peaceful 
Christmas and New Year, and let's hope 2015 brings some more 
positive energy to the world.

Links here:
https://github.com/Laeeth/d_simplex
https://github.com/Laeeth/d_swisseph



1. D bindings/wrappers for the swiss ephemeris

http://www.astro.com/swisseph/swephinfo_e.htm
"The SWISS EPHEMERIS is the high precision ephemeris developed by 
Astrodienst, largely based upon the DExxx ephemerides from NASA's 
JPL . The original release in 1997 was based on the DE405/406 
ephemeris. Since release 2.00 in February 2014, it is based on 
the DE431 ephemeris released by JPL in September 2013".

NB - Swiss Ephemeris is not free for commercial use.
====
2. D port of simple Nelder-Mead simplex minimisation (written by 
Michael F. Hutt in original C version) here.  With constraints.  
 From Wiki:

https://en.wikipedia.org/wiki/Nelder-Mead_method
"The Nelder–Mead method or downhill simplex method or amoeba 
method is a commonly used nonlinear optimization technique, which 
is a well-defined numerical method for problems for which 
derivatives may not be known. However, the Nelder–Mead technique 
is a heuristic search method that can converge to non-stationary 
points[1] on problems that can be solved by alternative methods".
====

Links here:
https://github.com/Laeeth/d_simplex
https://github.com/Laeeth/d_swisseph
Dec 22 2014
parent reply "bachmeier" <no spam.com> writes:
On Monday, 22 December 2014 at 08:43:56 UTC, Laeeth Isharc wrote:
 Last one for a while, I think.  I wish you all a very peaceful 
 Christmas and New Year, and let's hope 2015 brings some more 
 positive energy to the world.

 Links here:
 https://github.com/Laeeth/d_simplex
 https://github.com/Laeeth/d_swisseph



 1. D bindings/wrappers for the swiss ephemeris

 http://www.astro.com/swisseph/swephinfo_e.htm
 "The SWISS EPHEMERIS is the high precision ephemeris developed 
 by Astrodienst, largely based upon the DExxx ephemerides from 
 NASA's JPL . The original release in 1997 was based on the 
 DE405/406 ephemeris. Since release 2.00 in February 2014, it is 
 based on the DE431 ephemeris released by JPL in September 2013".

 NB - Swiss Ephemeris is not free for commercial use.
 ====
 2. D port of simple Nelder-Mead simplex minimisation (written 
 by Michael F. Hutt in original C version) here.  With 
 constraints.  From Wiki:

 https://en.wikipedia.org/wiki/Nelder-Mead_method
 "The Nelder–Mead method or downhill simplex method or amoeba 
 method is a commonly used nonlinear optimization technique, 
 which is a well-defined numerical method for problems for which 
 derivatives may not be known. However, the Nelder–Mead 
 technique is a heuristic search method that can converge to 
 non-stationary points[1] on problems that can be solved by 
 alternative methods".
 ====

 Links here:
 https://github.com/Laeeth/d_simplex
 https://github.com/Laeeth/d_swisseph
It's been ages since I read the paper, but there is a parallel version of Nelder-Mead that is supposed to give very large performance improvements, even when used on a single processor: http://www.cs.ucsb.edu/~kyleklein/publications/neldermead.pdf It is not difficult to implement. I may look into modifying your code to implement it when I get some time.
Dec 22 2014
parent reply "Marc =?UTF-8?B?U2Now7x0eiI=?= <schuetzm gmx.net> writes:
On Monday, 22 December 2014 at 20:46:23 UTC, bachmeier wrote:
 It's been ages since I read the paper, but there is a parallel 
 version of Nelder-Mead that is supposed to give very large 
 performance improvements, even when used on a single processor:

 http://www.cs.ucsb.edu/~kyleklein/publications/neldermead.pdf

 It is not difficult to implement. I may look into modifying 
 your code to implement it when I get some time.
It will certainly also be advantageous to pass the functions as aliases, so that they can get inlined.
Dec 22 2014
parent "Laeeth Isharc" <laeethnospam spamno_laeeth.com> writes:
On Monday, 22 December 2014 at 21:39:08 UTC, Marc Schütz wrote:
 On Monday, 22 December 2014 at 20:46:23 UTC, bachmeier wrote:
 It's been ages since I read the paper, but there is a parallel 
 version of Nelder-Mead that is supposed to give very large 
 performance improvements, even when used on a single processor:

 http://www.cs.ucsb.edu/~kyleklein/publications/neldermead.pdf

 It is not difficult to implement. I may look into modifying 
 your code to implement it when I get some time.
It will certainly also be advantageous to pass the functions as aliases, so that they can get inlined.
Thanks, Marc. I appreciate the pointer, and if you do have time to look at the code. I confess that it can't really be called my own implementation as I simply ported it to D. There is some more clever stuff within quantlib (c++ project), but I quite liked the idea of starting with this one as it is simple, and speed is not yet vital at this stage. Laeeth.
Dec 22 2014