code: import numpy as np
  import matplotlib.pyplot as plt
  from scipy import optimize
  
  
  def eggholder(x):
      return (-(x[1] + 47) * np.sin(np.sqrt(abs(x[0]/2 + (x[1]  + 47))))
              -x[0] * np.sin(np.sqrt(abs(x[0] - (x[1]  + 47)))))
  
  bounds = [(-512, 512), (-512, 512)]
  
  x = np.arange(-512, 513)
  y = np.arange(-512, 513)
  xgrid, ygrid = np.meshgrid(x, y)
  xy = np.stack([xgrid, ygrid])
  
  results = dict()
  results['shgo'] = optimize.shgo(eggholder, bounds)
  results['DA'] = optimize.dual_annealing(eggholder, bounds)
  results['DE'] = optimize.differential_evolution(eggholder, bounds)
  results['shgo_sobol'] = optimize.shgo(eggholder, bounds, n=256, iters=5,
                                        sampling_method='sobol')
  
  fig = plt.figure(figsize=(4.5, 4.5))
  ax = fig.add_subplot(111)
  im = ax.imshow(eggholder(xy), interpolation='bilinear', origin='lower',
                 cmap='gray')
  ax.set_xlabel('x')
  ax.set_ylabel('y')
  
  def plot_point(res, marker='o', color=None):
      ax.plot(512+res.x[0], 512+res.x[1], marker=marker, color=color, ms=10)
  
  plot_point(results['DE'], color='c')  # differential_evolution - cyan
  plot_point(results['DA'], color='w')  # dual_annealing.        - white
  
  # SHGO produces multiple minima, plot them all (with a smaller marker size)
  plot_point(results['shgo'], color='r', marker='+')
  plot_point(results['shgo_sobol'], color='r', marker='x')
  for i in range(results['shgo_sobol'].xl.shape[0]):
      ax.plot(512 + results['shgo_sobol'].xl[i, 0],
              512 + results['shgo_sobol'].xl[i, 1],
              'ro', ms=2)
  
  ax.set_xlim([-4, 514*2])
  ax.set_ylim([-4, 514*2])
  
  fig.tight_layout()
  plt.show()
  
  
  
apis: scipy.optimize.shgo scipy.optimize.dual_annealing matplotlib.pyplot.figure numpy.arange scipy.optimize.differential_evolution matplotlib.pyplot.show numpy.stack numpy.meshgrid