The main program essentially looks like
#include <oxstd.h> // Include the Ox standard library header
#include <oxfloat.h>
#import <maximize>
#import <packages/maxsa/maxsa>
main()
{
decl vP, dFunc, dT, ir;
println ("\nEstimating using MaxBFGS");
ir= MaxBFGS(fnc, &vP, &dFunc, 0, TRUE);
println (MaxConvergenceMsg(ir), " at parameters ", vP',
"with function value ", double(dFunc));
// Estimate using MaxSA, to find global optimum
println ("\nEstimating using MaxSA");
ir= MaxSA(fnc, &vP, &dFunc, &dT);
println (MaxSAConvergenceMsg(ir), " at parameters ", vP',
"with function value ", double(dFunc), " and temperature ",
double(dT));
}
On the output, you'll see information like
Estimating using MaxBFGS
Strong convergence at parameters
2.3545 -0.31919
with function value -20.9805
Estimating using MaxSA
Strong convergence at parameters
0.86480 1.2357
with function value -16.0817 and temperature 7.45058e-08
which indicates how MaxBFGS indeed did not get away from the local
maximum, whereas the Simulated Annealing algorithm managed to get away
to the global optimum.