code: def de_solve():
      solver = DifferentialEvolutionSolver(ND, NP)
  
      solver.enable_signal_handler()
  
      stepmon = VerboseMonitor()
      minrange = [-1000.0, -1000.0, -100.0, -1.0] * 2
      maxrange = [1000.0, 1000.0, 100.0, 1.0] * 2
      solver.SetRandomInitialPoints(min=minrange, max=maxrange)
      solver.SetEvaluationLimits(generations=MAX_GENERATIONS)
      solver.SetGenerationMonitor(stepmon)
  
      solver.Solve(
          cost_function,
          termination=ChangeOverGeneration(generations=300),
          CrossProbability=0.5,
          ScalingFactor=0.5,
          sigint_callback=plot_sol,
      )
  
      solution = solver.Solution()
  
      return solution, stepmon
  
imports: from test_mogi import *
label_desc: Use image node_id 4 for calling a global function with example usage: de_solve() and returns: solution,  stepmon