Comments (13)
Thanks for the report. Going to fix this within the next hour.
from smoof.
And:, Exponential Function has a multimodal tag?
from smoof.
Ok, there is a FIXME in the Eggholder function. It is implemented as a scalable function, but I did not figure out the global optimum for dimensions > 2L. That's why I removed the dimension
argument for this special generator. For now I will remove the scalable
tag.
Fixed the other two issues as well.
Let's leave this open for now. Maybe you will find some more minor issues. Unfortunately for some function there exist different sources with different opt value specifications.
from smoof.
getGlobalOptimum(makeAlpine02Function(2))
# $param
# x1 x2
# 1 7.917 7.917
#
# $value
# [1] 7.884864
but in http://infinity77.net/global_optimization/test_functions_nd_A.html it says that
f(x_i) = -6.1295 for all i=1,...,n
from smoof.
Yeah, I remember that Alpine02 case. I think the specification on the website is wrong.
The function is implemented correctly via `prod(sqrt(x) * sin(x)). Take a look at the 3D plot:
fn = makeAlpine02Function(2L)
plot3D(fn)
- Since the function is expected to be maximized, a negative global optimum is not possible.
- The 3D plot revelas, that the optimum has a value above 7. In fact
fn(c(7.917, 7.917))
results in7.886
from smoof.
Aggreed. I think they used the gobal "minimum" of the function, which is indeed f(x_i) = -6.1295, however, not at c(7.917, 7.917)
. So this function wants to be maximized and not minimized.
from smoof.
Further strange things:
- In http://infinity77.net/global_optimization/test_functions_nd_B.html it says "Global optimum: f(x_i) = 0 for \mathbf{x} = [-10, 0]", but the function is defined in "x_1 \in [-15, -5], x_2 \in [-3, 3]"
getGlobalOptimum(makeBukinN2Function())$value
# [1] 0
makeBukinN2Function()(c(-15,-3))
# [1] -424.75
also plot3D(makeBukinN2Function())
looks a bit strange, right? It is at least completely different from
-
This seems to be a good page http://al-roomi.org/component/tags/tag/20-matlab. They have, for example information about the global optimum for the michalewicz function (for n=1,2).
plot3D(makeCosineMixtureFunction(2)) # looks like a maximum, but:
getGlobalOptimum(makeCosineMixtureFunction(2))
$param
x1 x2
1 0 0
$value
[1] -0.2
$is.minimum
[1] TRUE
same for Keane.
plot3D(makeBochachevskyFunction(2))
does not look like http://al-roomi.org/benchmarks/unconstrained/2-dimensions/10-bohachevsky-s-function-no-1
Also:
makeBochachevskyFunction(2)(c(-15,-0.3))
# -13.49639, although getGlobalOptimum says that 0 is the optimum
plot3D(makeRosenbrockFunction(2))
does not look like the rosenbrock function from https://en.wikipedia.org/wiki/Rosenbrock_function
from smoof.
Thanks for the report. Going to check this soon.
from smoof.
Ok, I fixed all the stuff above. For the Rosenbrock function there obviously exist different function definitions. I now changed the defintion to the specification of infinity77
The implementation of the BukinN2 function is given by:
makeBukinN2Function = function() {
makeSingleObjectiveFunction(
name = "Bukin Function N. 2",
fn = function(x) {
100 * (x[2] - 0.01 * x[1]^2 + 1) + 0.01 * (x[1] + 10)^2
},
par.set = makeNumericParamSet(
len = 2L,
id = "x",
lower = c(-15, -3),
upper = c(-5, 3),
vector = TRUE
),
tags = attr(makeBukinN2Function, "tags"),
global.opt.params = c(-10, 0),
global.opt.value = 0
)
}
This corresponds with the infinity77 formula, but the 3D plot does not resemble the plot given on the website. If you have a look at the formula, than you can see, that the contribution x_2 is not squared ans thus the plot cannot look like the one on the website.
from smoof.
@giuseppec: What do you think about the Bukin02 function (see my last comment here)?
from smoof.
Hm, I googled a little bit and it is difficult to find more infos for this function. I think there is more info in "Differential Evolution: Fundamentals and Applications in Electrical Engineering (Anyong Qing)" but I don't have access to this book right now. By plotting this Bukin02 function, it does not seem to be a "cool" function that should be optimized...
What about removing this Bukin02 function and just keep http://al-roomi.org/benchmarks/unconstrained/2-dimensions/51-bukin-s-function-no-4
and http://al-roomi.org/benchmarks/unconstrained/2-dimensions/52-bukin-s-function-no-6, which seem to be much more "well-known"?
from smoof.
Ok, I found the Bukin02 function definition in two more papers. It is correct. As a consequence, the plot on the infinity77 website must be wrong. Not removing for now.
from smoof.
Closing for now. Reopen if needed.
from smoof.
Related Issues (20)
- Error in `convertToMinimization` helpful?
- Upload 1.5.1 to CRAN HOT 2
- Michalewicz Function HOT 1
- Following functions do not work for 1d although they should? HOT 5
- Michalewicz Function dimensions != 2 HOT 1
- Hartmann Function 4D- falsches Globales Minimum
- Use geom_raster instead of geom_tile
- generateDataframeForGGPlot2 lacks method for "integervector" HOT 2
- smoof and vector parameters HOT 2
- Upload 1.6 to CRAN HOT 2
- Mail by Prof. Ripley: CRAN packages with installation failures with gcc trunk aka 10 HOT 21
- Next mail from CRAN: HOT 3
- CRAN Status: orphaned HOT 5
- package does not load HOT 3
- plot3D with plotly HOT 2
- Consider "Suggesting" plot libraries instead of "Importing" them HOT 2
- Send v1.7 to CRAN
- Incorrect Instance ID mapping in makeBiObjBBOBFunction HOT 4
- Implement extended bi-objective BBOB functions HOT 2
- Michalewicz function accepts only 2-dimensional arguments, even if function has more dimensions HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smoof.