# EGGHOLDER FUNCTION

Updated: Aug 5, 2021

Egg holder has a deceptive landscape and is extremely hard function to optimize. This is

because it is characterized by an uneven plane having several dozen local minimums that easily

misleads the search agents.

**Mathematical Definition**

**Input Domain**

The function is usually evaluated on the square xi ∈ [-512, 512], for all i = 1, 2.

**Global Minima**

f(x0) = -959.6407 , at x0 = (512,404.2319)

**Characteristics**

The function is continuous.

The function is non- convex.

The function is defined on 2-dimensional space.

The function is multimodal.

The function is differentiable.

The function is non-separable.

The function is non-random.

The function is non-parametric.

**Python Implementation**

*%** Please forward any comments or bug reports **in** chat*
*Copyright **2021.** **INDUSMIC** **PRIVATE** **LIMITED**.**THERE** **IS** **NO** **WARRANTY**,** **EXPRESS** **OR** **IMPLIED**.** **WE** **DO** **NOT** **ASSUME** **ANY** **LIABILITY** **FOR** **THE** **USE** **OF** **THIS** **PROGRAM**.** If software is modified to produce derivative works**,** such modified software should be clearly marked**.** Additionally**,** user can redistribute it and**/**or modify it under the terms **of** the **GNU** General Public License**.** This program is distributed **in** the hope that it will be useful**,** but **WITHOUT** **ANY** **WARRANTY**.** See the **GNU** General Public License **for** more details**.*
*%** **for** any support connect **with** us on help**.**indusmic@gmail**.**com*
**%**** ****Author****:**** **Parakh Jain
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
from numpy import*
def f(x1,x2):
a=sqrt(fabs(x2+x1/2+47))
b=sqrt(fabs(x1-(x2+47)))
c=-(x2+47)*sin(a)-x1*sin(b)
return c
x1=linspace(-512,512,100)
x2=linspace(-512,512,100)
X1,X2=meshgrid(x1,x2)
def plotter(E,A):
fig=plt.figure(figsize=[12,8])
ax=plt.axes(projection='3d')
ax.plot_surface(X1,X2,f(X1,X2),color='red',alpha=0.7)
ax.plot_wireframe(X1,X2,f(X1,X2),ccount=2,rcount=2, color='orange',alpha=0.8)
ax.view_init(elev=E,azim=A)
ax.set_xlabel('x1')
ax.set_ylabel('x2')
ax.set_zlabel('f(x1,x2)')
plt.show()
from ipywidgets import interactive
iplot=interactive(plotter,E=(-90,90,5),A=(-90,90,5))
iplot

**References:**

[1] Jamil, Momin, and Xin-She Yang. "A literature survey of benchmark functions for global optimization problems." *International Journal of Mathematical Modelling and Numerical Optimization* 4.2 (2013): 150-194.