code: def de_solve():
      solver = DifferentialEvolutionSolver(ND, NP)
  
      stepmon = Monitor()
      minrange = [-1000.0, -1000.0, -100.0, -10.0]
      maxrange = [1000.0, 1000.0, 100.0, 10.0]
      solver.SetRandomInitialPoints(min=minrange, max=maxrange)
      solver.SetEvaluationLimits(generations=MAX_GENERATIONS)
      solver.SetGenerationMonitor(stepmon)
  
      # termination = VTR(0.0000029)
      termination = ChangeOverGeneration(generations=100)
  
      solver.Solve(
          cost_function,
          termination=termination,
          CrossProbability=0.5,
          ScalingFactor=0.5,
      )
  
      solution = solver.Solution()
  
      return solution, stepmon
  
file_path: mystic/examples/test_mogi.py
imports: import matplotlib.pyplot
  from mystic.solvers import DifferentialEvolutionSolver
  from mystic.termination import ChangeOverGeneration, VTR
  from mystic.monitors import Monitor, VerboseMonitor
  from mystic.tools import getch, random_seed
  from numpy import pi, sqrt, array, mgrid, random, real, conjugate, arange
  from numpy.random import rand
  import numpy
  from mystic.models import mogi
label_desc: Use image node_id 6 for calling a global function with example usage: de_solve() and returns: solution,  stepmon