Implementing Nelder-Mead on Casio fx-9860GII

The Nelder-Mead algorithm is a very versatile optimization technique that is easy to implement. Having covered on how such a program in the TI-nSpire can help in estimating GARCH parameters, fitting logistic regression and Gompertz curve, I have decided to give it a try on a Casio fx-9860GII. It will also be an interesting opportunity to see the comparison of how these two calculators perform.

Compared to the more sophisticated programming features available on the TI-nSpire, programming the Nelder-Mead using the Casio language on the fx-9860GII is quite a challenge. Variables are limited to 28 and only single alphabet variable name is supported. Extra porting efforts are needed to deal with array features which must be borrowed from the fixed 26 List and 26 Matrix memory, and lack of elseif construct (not a big deal usually but just required extra effort in porting programming especially for those with nested loops). Fortunately, the expression evaluation feature is present on the Casio which is an important part for a dynamic implementation of the algorithm, otherwise there will be a strong cohesion between the algorithm itself and the function it handles.

For a quick porting, the structure and variables of the original program from the TI-Basic are preserved without much adaptations except those that are required for the program to work on the fx-9860GII like changing variable names to single alphabets, mapping arrays into Matrices and Lists etc.

After exhausting almost all 28 variables and 10+ matrices, it is about time to do a speed comparison. As used previously to benchmark the same program on the TI-nSpire, the Rosenbrog function is used again. For a fair comparison, the same initial parameter set {10,10} will be used on both machines.

casio-nelder-mead-1

casio-nelder-mead-2

And the result on performance:

0:22 Nspire CX CAS
1:25 fx-9860GII (version with in-line objective function)
1:28 fx-9860GII (version with objective function as string variable)

It is not that bad for the clock speed from the Casio (no overclocking) and also worth mention is that no particular optimization was done during code porting, and also the fact that the program is in Casio BASIC which is an interpreted language with execution performance far below native C.

In next installment, exciting results on boosted performance by overclocking will be posted for the same algorithm on the same hardware.

All programming on the Casio was done on the real calculator. The keys are nice and soft. With a user-friendly and consistent menu system to code the program, porting an existing program is not as tedious as previously thought, but rather a pleasant journey to learn another calculator as well as a refreshment to the Nelder-Mead algorithm.

Advertisements

One thought on “Implementing Nelder-Mead on Casio fx-9860GII

  1. Pingback: Nelder-Mead algorithm on the TI-84 Plus SE | gmgolem

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s