1

I'm trying to minimize a loss function between empirical human data and simulated data from a 6-parameters cognitive model. The model is very noisy. Note that the model is programmed in PYTHON.

The standard method is to use a Simplex search. However, Simplex is very dependent on the initial guess, and the risk to capture a local minimum is high. So I have two questions:

1) I'm wondering if a genetic algorithm could not be used to first search for an approximate position of the global minimum first, and use the result as a starting point for the simplex search. If it is a good idea, does someone know a good implementation of an appropriate genetic algorithm in python?

2) Which reflection, expansion, and contraction constant should I use for the Simplex search?

Any help would be highly appreciated.

Cheers, Mat

user1363251
  • 421
  • 1
  • 11
  • 24

1 Answers1

4

Since your function is very noisy, have few dimensions and you are open to try evolutionary algorithm, I would recommend you to actually replace your Simplex optimization process by the Covariance Matrix Adaptation Evolution Strategy.

The algorithm is recognized by the black-box optimization community to be one of the most efficient for complex problem under 50 dimensions. It is described in details by its author : here.

The author provides implementation of its algorithm in Python here. The evolutionary algorithms framework DEAP also provides a Python implementation of CMA-ES and different examples of application, which I find easier to use (disclaimer, I am one of the main developers of DEAP).

CmdNtrf
  • 1,163
  • 7
  • 16