Skip to content

Commit 39d087c

Browse files
committed
'0213'
1 parent 1142fb4 commit 39d087c

File tree

18 files changed

+5689
-9
lines changed

18 files changed

+5689
-9
lines changed

UQPyL/doe/morris.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def _generate(self, nt: int, nx: int):
4040
xInit = np.zeros((nt * (nx + 1), nx))
4141

4242
for i in range(nt):
43-
43+
#
4444
xInit[i * (nx + 1):(i + 1) * (nx + 1), :] = self._generate_trajectory(nx)
4545

4646
return xInit

UQPyL/optimization/soea/asmo.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import numpy as np
44

5+
from typing import Literal
6+
57
from .sce_ua import SCE_UA
68
from ..base import AlgorithmABC, Verbose
79
from ..population import Population
@@ -19,10 +21,10 @@ class ASMO(AlgorithmABC):
1921
2022
Attributes:
2123
problem: Problem
22-
The problem to solve, which includes attributes like n_input, ub, lb, and evaluate.
24+
The problem to solve, which includes attributes like nInput, ub, lb, and evaluate.
2325
surrogate: Surrogate
2426
The surrogate model to use for optimization.
25-
n_init: int, default=50
27+
nInit: int, default=50
2628
Number of initial samples for surrogate modeling.
2729
2830
Methods:
@@ -41,6 +43,7 @@ class ASMO(AlgorithmABC):
4143
def __init__(self, nInit: int = 50,
4244
surrogate: SurrogateABC = None,
4345
optimizer: AlgorithmABC = None,
46+
euclidThres: float = 1e-5,
4447
maxFEs: int = 1000,
4548
maxIters: int = 1000,
4649
maxTolerates: int = None,
@@ -52,6 +55,7 @@ def __init__(self, nInit: int = 50,
5255
:param surrogate: Surrogate model to use. Defaults to Kriging if None.
5356
:param optimizer: Optimizer to use. Defaults to SCE_UA if None.
5457
:param maxFEs: Maximum number of function evaluations.
58+
:param euclidThres: Threshold for euclidean distance. Defaults to 1e-6.
5559
:param maxTolerateTimes: Maximum number of tolerated iterations without improvement.
5660
:param verbose: Flag to enable verbose output.
5761
:param verboseFreq: Frequency of verbose output.
@@ -63,6 +67,7 @@ def __init__(self, nInit: int = 50,
6367
verboseFlag = verboseFlag, verboseFreq = verboseFreq, logFlag = logFlag, saveFlag = saveFlag)
6468

6569
self.setParaVal('nInit', nInit)
70+
self.setParaVal('euclidThres', euclidThres)
6671

6772
if surrogate is None:
6873
# Default surrogate model is Kriging with standard scaling
@@ -73,7 +78,7 @@ def __init__(self, nInit: int = 50,
7378

7479
if optimizer is None:
7580
# Default optimizer is SCE_UA
76-
optimizer = SCE_UA(maxFEs=5000, verboseFlag=False, saveFlag=False, logFlag=False)
81+
optimizer = SCE_UA(maxFEs = 5000, verboseFlag = False, saveFlag = False, logFlag = False)
7782

7883
self.optimizer = optimizer
7984
self.optimizer.verboseFlag, self.optimizer.logFlag, self.optimizer.saveFlag = False, False, False
@@ -100,6 +105,7 @@ def run(self, problem, xInit = None, yInit = None, seed = None, oneStep = False)
100105

101106
# Initialization
102107
nInit = self.getParaVal('nInit')
108+
euclidThres = self.getParaVal('euclidThres')
103109

104110
# Define a subproblem using the surrogate model
105111
subProblem = Problem(objFunc = self.surrogate.predict, nInput = problem.nInput,
@@ -132,7 +138,16 @@ def run(self, problem, xInit = None, yInit = None, seed = None, oneStep = False)
132138

133139
# Evaluate the offspring
134140
bestDecs = np.asarray(res["result"]["bestDecs"].data)
135-
offSpring = Population(decs=bestDecs)
141+
142+
euclidDist = np.linalg.norm(bestDecs - pop.decs, axis = 1)
143+
minEuclidDist = np.min(euclidDist)
144+
145+
if minEuclidDist < euclidThres:
146+
decs = np.random.uniform(problem.lb, problem.ub, size = (1, problem.nInput))
147+
else:
148+
decs = bestDecs
149+
150+
offSpring = Population(decs = decs)
136151

137152
self.evaluate(offSpring)
138153

examples/example_surrogate_optimization.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
# ASMO #
2222
# ------------------------------------------- #
2323

24-
# from UQPyL.optimization.soea import ASMO, GA
24+
from UQPyL.optimization.soea import ASMO, GA
2525

26-
# optimizer = GA(maxFEs = 5000)
26+
optimizer = GA(maxFEs = 5000)
2727

28-
# asmo = ASMO(optimizer = optimizer)
28+
asmo = ASMO(optimizer = optimizer)
2929

30-
# asmo.run(problem)
30+
asmo.run(problem)
3131

3232

3333
# ------------------------------------------- #

0 commit comments

Comments
 (0)