Spaces:
Sleeping
Sleeping
File size: 1,451 Bytes
165ee00 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import torch
import numpy as np
#
# JLH2: 2D objective, 1 constraints
#
#
# Reference:
# Jetton C, Li C, Hoyle C (2023) Constrained
# bayesian optimization methods using regres-
# sion and classification gaussian processes as
# constraints. In: International Design Engi-
# neering Technical Conferences and Computers
# and Information in Engineering Conference,
# American Society of Mechanical Engineers, p
# V03BT03A033
#
#
def JLH2(individuals):
assert torch.is_tensor(individuals) and individuals.size(1) == 2, "Input must be an n-by-2 PyTorch tensor."
fx = []
gx = []
for x in individuals:
## Negative sign to make it a maximization problem
test_function = - ( np.cos(2*x[0])*np.cos(x[1]) + np.sin(x[0]) )
fx.append(test_function)
gx.append( ((x[0]+5)**2)/4 + (x[1]**2)/100 -2.5 )
fx = torch.tensor(fx)
fx = torch.reshape(fx, (len(fx),1))
gx = torch.tensor(gx)
gx = torch.reshape(gx, (len(gx),1))
return gx, fx
def JLH2_Scaling(X):
assert torch.is_tensor(X) and X.size(1) == 2, "Input must be an n-by-2 PyTorch tensor."
# X = individuals
X1 = X[:,0].reshape(X.size(0),1)
X1 = X1*5-5
X2 = X[:,1].reshape(X.size(0),1)
X2 = X2*10-5
X_scaled = torch.tensor(np.concatenate((X1,X2), axis=1))
return X_scaled
|