A particular example for improvement: EvalObjF, which evaluates the function over all points x. However check the function signature:
def EvalObjF(npar,x,testcase=True,testnr=1):
Here npar is either one of five pre-defined "test" (read: example) functions, or it is a function that
apparently gets wrapped in a Modrun, but Modrun is actually commented out.
All this is assuming that the SCE has been properly implemented. To check this, see about if the results on testfunction{1-5} are correct. If so, build proper unit tests around these. This function calling at each iteration can be parallelized. Look for ways to do that.