PDE Sinkhorn with asymmetric geometric boundaries / pde_boundary_track.py
Mechanism confirmed, baseline not beaten
1import numpy as np
2
3META = {'name': 'anisotropic_oblique_bvp', 'domain': 'pde', 'description': '2D manufactured elliptic boundary-value regression with anisotropic oblique and normal no-flux boundaries.'}
4C = 0.8
5
6def h(y): return y**3 * (1-y)**3
7def hp(y): return 3*y**2*(1-y)**3 - 3*y**3*(1-y)**2
8
9def solution(xy):
10 x, y = xy[:, 0], xy[:, 1]
11 return (h(y) - C*x*hp(y)).astype(np.float32)
12
13def get_dataset(seed, n_train=400, n_test=400):
14 rng = np.random.default_rng(int(seed))
15 n_int = max(1, int(n_train*0.75)); n_edge = int(n_train)-n_int
16 interior = rng.random((n_int,2))
17 edges = np.empty((n_edge,2), np.float32)
18 for i in range(n_edge):
19 t=rng.random(); s=i%4
20 edges[i] = (0,t) if s==0 else ((1,t) if s==1 else ((t,0) if s==2 else (t,1)))
21 xtr=np.concatenate([interior,edges]).astype(np.float32)
22 xte=rng.random((int(n_test),2), dtype=np.float32)
23 return {'xtr':xtr,'ytr':solution(xtr),'xte':xte,'yte':solution(xte),'task':'regression','metric':'mse','out_dim':1}