/testcases_2D.py (3063a1b6a132cbb5440ab95f1b6af1f1ff4266ac) (3433 bytes) (mode 100644) (type blob)
#!/usr/bin/env python
# coding: utf-8
"""
We will prepare here WhiteBox instances
of different well-known 2D problems
"""
import numpy as np
from . import g_models as gm
from . import f_models
from .whitebox import WhiteBox
import scipy.stats as stats
from scipy import integrate # for Pareto tail
f = f_models.SNorm(2)
# Uniform-uniform
# from scipy: "In the standard form, the distribution is uniform on [0, 1]."
u = f_models.UnCorD((stats.uniform, stats.uniform))
testcases = []
"""
I would like to use function definitions to clearly isolate ones testcases
"""
# Rescaled Branin function
def uniform_branin_2D():
wt = WhiteBox(u, gm.branin_2D)
wt.pf_exact = 0.257
wt.pf_exact_method = 'known value' #"some guys said me that" it's 0.256
wt.description = "Rescaled Branin function"
return wt
testcases.append(uniform_branin_2D())
# Four branch system
def snorm_four_branch_2D():
wt = WhiteBox(f, gm.FourBranch2D(k1=3, k2=7))
wt.pf_exact = 2.34e-03
wt.pf_exact_method = 'known value' #"some guys said me that"
wt.description = "Four branch system from some paper"
return wt
testcases.append(snorm_four_branch_2D())
def snorm_four_branch_2D_2():
wt = WhiteBox(f, gm.FourBranch2D(k1=5.5, k2=11))
# TODO calculate
#wt.pf_exact = 0.257
#wt.pf_exact_method = 'known value' #"some guys said me that" it's 0.256
wt.description = "Four branch system from another paper"
return wt
testcases.append(snorm_four_branch_2D_2())
# Breitung
# Piecewise linear function
def snorm_piecewise_2D_linear():
wt = WhiteBox(f, gm.piecewise_2D_linear)
wt.description = "Breitung. Piecewise linear function"
return wt
testcases.append(snorm_piecewise_2D_linear())
# Pareto tail
class PiecewiseParetoDist:
def __init__(self, a=3.5):
self.ax = a
self.au = stats.norm.cdf(a)
self.c = np.log(stats.norm.cdf(-a))/np.log(a)
self.pareto = stats.pareto(b=-self.c)
# без излишевст
self._p = integrate.quad(lambda x: self.pdf(x), -np.inf, np.inf)[0]
self._mean = integrate.quad(lambda x: x*self.pdf(x), -np.inf, np.inf)[0]
self._var = integrate.quad(lambda x: x**2*self.pdf(x), -np.inf, np.inf)[0]
def cdf(self, x):
return np.where(x < self.ax, stats.norm.cdf(x), self.pareto.cdf(x))
def pdf(self, x):
return np.where(x < self.ax, stats.norm.pdf(x), self.pareto.pdf(x))
def ppf(self, u):
return np.where(u < self.au, stats.norm.ppf(u), self.pareto.ppf(u))
def mean(self): return self._mean
def var(self): return self._var
def std(self): return np.sqrt(self._var)
def piecewise_pareto_tail():
h = f_models.UnCorD((stats.norm, PiecewiseParetoDist()))
wt = WhiteBox(h, gm.non_chi_squares)
wt.pf_exact = 1.87e-06
wt.pf_exact_method = 'FORM-type thought-three beta points'
wt.description = "Breitung. Pareto tail"
return wt
testcases.append(piecewise_pareto_tail())
# Logistic 2D function
def snorm_min_2D_linear():
wt = WhiteBox(f, gm.Logistic2D())
wt.description = "Breitung. 2D linear (easy version for SuS)"
return wt
testcases.append(snorm_min_2D_linear())
def snorm_min_2D_logistic():
wt = WhiteBox(f, gm.Logistic2D(easy_version=False))
wt.description = "Breitung. Logistic 2D function (hard version for SuS)"
return wt
testcases.append(snorm_min_2D_logistic())
Mode |
Type |
Size |
Ref |
File |
100644 |
blob |
19075 |
e556c1eafdce91cf8d67a5075447eb04a9abe383 |
IS_stat.py |
100644 |
blob |
6 |
0916b75b752887809bac2330f3de246c42c245cd |
__init__.py |
100644 |
blob |
73368 |
3d245b8568158ac63c80fa0847631776a140db0f |
blackbox.py |
100644 |
blob |
11243 |
10c424c2ce5e8cdd0da97a5aba74c54d1ca71e0d |
candybox.py |
100644 |
blob |
34373 |
72054b0293b0fc0647a26e05a85309d3d62b2a5f |
convex_hull.py |
100644 |
blob |
80674 |
8bcf8260951e9bdb65654257b572c486efa04e7c |
dicebox.py |
100644 |
blob |
36930 |
a775d1114bc205bbd1da0a10879297283cca0d4c |
estimation.py |
100644 |
blob |
34394 |
3f0ab9294a9352a071de18553aa687c2a9e6917a |
f_models.py |
100644 |
blob |
31540 |
a577087003a885ca7499d1ee9451e703fa9d2d36 |
g_models.py |
100644 |
blob |
42820 |
1092b3b9f05b11d0c53b3aa63df2460ec355085d |
gl_plot.py |
100644 |
blob |
2718 |
5d721d117448dbb96c554ea8f0e4651ffe9ac457 |
gp_plot.py |
100644 |
blob |
29393 |
96162a5d181b8307507ba2f44bafe984aa939163 |
lukiskon.py |
100644 |
blob |
12028 |
dabcfd7eb6c467ff25efa47eccebfd21697c9473 |
mart.py |
100644 |
blob |
7983 |
75455aa723db8bab291dcf941b92b9ffdba3aef1 |
mart3d.py |
100644 |
blob |
5356 |
faac09f784e48599ff9a67e607a8e8a990b05d80 |
mgraph.py |
100644 |
blob |
2004 |
6ea8dc8f50a656c48f786d5a00bd6398276c9741 |
misc.py |
100644 |
blob |
2439 |
fe482f41cb07d6d8a079553aa09b13a8a82d512d |
mplot.py |
100644 |
blob |
1450 |
4849f178b588e252b8c7f6a940d2d82ad35f6914 |
plot.py |
100644 |
blob |
2807 |
1feb1d43e90e027f35bbd0a6730ab18501cef63a |
plotly_plot.py |
100644 |
blob |
138229 |
863b3787b57691a29ecb834f163d57b8c65e0e9c |
qt_plot.py |
100644 |
blob |
8206 |
5981023118262109fca8309d9b313b521a25f88f |
reader.py |
100644 |
blob |
4284 |
a0e0b4e593204ff6254f23a67652804db07800a6 |
samplebox.py |
100644 |
blob |
6397 |
90f4252f7484271e81e64cb432d77e4f710ec893 |
sball.py |
100644 |
blob |
5553 |
bac994ae58f1df80c7f8b3f33955af5402f5a4f3 |
sball_old.py |
100644 |
blob |
2605 |
0034d2e3f14c056541888235e59127e8f28b131d |
schemes.py |
100644 |
blob |
21623 |
281aef80556b8d22842b8659f6f0b7dab0ad71af |
shapeshare.py |
100644 |
blob |
48537 |
10f90c5614e9a04f0cd9f78e75f0db4a6becb3e4 |
simplex.py |
100644 |
blob |
10940 |
6965eabdb5599bb22773e7fef1178f9b2bb51efe |
stm_df.py |
100644 |
blob |
3433 |
3063a1b6a132cbb5440ab95f1b6af1f1ff4266ac |
testcases_2D.py |
100644 |
blob |
22048 |
4a6014ca5255aa96059ff9ed5a7e29df98d26ffc |
whitebox.py |
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/iam-git/WellMet
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/iam-git/WellMet
Clone this repository using git:
git clone git://git.rocketgit.com/user/iam-git/WellMet
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main