Skip to content

Commit

Permalink
Merge pull request #449 from Spinachboul/NewBranin
Browse files Browse the repository at this point in the history
Update Branin Function
  • Loading branch information
ChrisRackauckas authored Dec 13, 2023
2 parents 33d3eaa + 9a0ef6f commit 1e0848e
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
3 changes: 2 additions & 1 deletion docs/pages.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pages = ["index.md"
"Tutorials" => [
"Tutorials" => [
"Basics" => "tutorials.md",
"Radials" => "radials.md",
"Kriging" => "kriging.md",
Expand Down Expand Up @@ -32,6 +32,7 @@ pages = ["index.md"
"Water Flow function" => "water_flow.md",
"Welded beam function" => "welded_beam.md",
"Branin function" => "BraninFunction.md",
"Improved Branin function" => "ImprovedBraninFunction.md",
"Ackley function" => "ackley.md",
"Gramacy & Lee Function" => "gramacylee.md",
"Salustowicz Benchmark" => "Salustowicz.md",
Expand Down
41 changes: 41 additions & 0 deletions docs/src/ImprovedBraninFunction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Branin Function

The Branin Function is commonly used as a test function for metamodelling in computer experiments, especially in the context of optimization.


# Modifications for Improved Branin Function:
To enhance the Branin function, changes were made to introduce irregularities, variability, and a dynamic aspect to its landscape. Here's an example:

```function improved_branin(x, time_step)
x1 = x[1]
x2 = x[2]
b = 5.1 / (4*pi^2)
c = 5/pi
r = 6
a = 1
s = 10
t = 1 / (8*pi)
# Adding noise to the function's output
noise = randn() * time_step # Simulating time-varying noise
term1 = a * (x2 - b*x1^2 + c*x1 - r)^2
term2 = s*(1-t)*cos(x1 + noise) # Introducing dynamic component
y = term1 + term2 + s
end
```

This improved function now incorporates irregularities, variability, and a dynamic aspect. These changes aim to make the optimization landscape more challenging and realistic.

# Using the Improved Branin Function:
After defining the improved Branin function, you can proceed to test different surrogates and visualize their performance using the updated function. Here's an example of using the improved function with the Radial Basis surrogate:

```
# Assuming you've defined 'improved_branin' and imported necessary packages
radial_surrogate = RadialBasis(xys, [improved_branin(xy, 0.1) for xy in xys], lower_bound, upper_bound)
p1 = surface(x, y, (x, y) -> radial_surrogate([x, y]))
scatter!(xs, ys, marker_z=zs)
p2 = contour(x, y, (x, y) -> radial_surrogate([x, y]))
scatter!(xs, ys, marker_z=zs)
plot(p1, p2, title="Radial Surrogate")
```

0 comments on commit 1e0848e

Please sign in to comment.