Konflikte gelöst, gha2_ES aber noch nicht wieder im Dashboard aufgerufen
This commit is contained in:
@@ -7,7 +7,6 @@ import plotly.graph_objects as go
|
||||
from GHA_triaxial.panou_2013_2GHA_num import gha2_num
|
||||
from utils import sigma2alpha
|
||||
|
||||
# Globals für Fitness
|
||||
ell_ES: EllipsoidTriaxial = None
|
||||
P_left: NDArray = None
|
||||
P_right: NDArray = None
|
||||
@@ -27,9 +26,11 @@ def Sehne(P1: NDArray, P2: NDArray) -> float:
|
||||
|
||||
def midpoint_fitness(x: tuple) -> float:
|
||||
"""
|
||||
Fitness für einen Mittelpunkt P_middle zwischen P_left und P_right auf dem Ellipsoid:
|
||||
Fitness für einen Mittelpunkt P_middle zwischen P_left und P_right auf dem triaxialen Ellipsoid:
|
||||
- Minimiert d(P_left, P_middle) + d(P_middle, P_right)
|
||||
- Erzwingt (weich) d(P_left,P_middle) ≈ d(P_middle,P_right) (echter Mittelpunkt im Sinne der Polygonkette)
|
||||
- Erzwingt d(P_left,P_middle) ≈ d(P_middle,P_right) (echter Mittelpunkt im Sinne der Polygonkette)
|
||||
:param x: enthält die Startwerte von u und v
|
||||
:return: Fitnesswert (f)
|
||||
"""
|
||||
global ell_ES, P_left, P_right
|
||||
|
||||
@@ -51,9 +52,17 @@ def midpoint_fitness(x: tuple) -> float:
|
||||
|
||||
def gha2_ES(ell: EllipsoidTriaxial, P0: NDArray, Pk: NDArray, maxSegLen: float = None, stopeval: int = 2000, maxIter: int = 10000, all_points: bool = False):
|
||||
"""
|
||||
- Start mit [P0, Pk]
|
||||
- Für jedes Segment > maxSegLen: Mittelpunkt per CMA-ES optimieren und einfügen
|
||||
- Wiederholen bis alle Segmentlängen <= maxSegLen sind
|
||||
Berechnen der 2. GHA mithilfe der CMA-ES.
|
||||
Die CMA-ES optimiert sukzessive den Mittelpunkt zwischen Start- und Zielpunkt. Der Abbruch der Berechnung erfolgt, wenn alle Segmentlängen <= maxSegLen sind.
|
||||
Die Distanzen zwischen den einzelnen Punkten werden als direkte 3D-Distanzen berechnet und aufaddiert.
|
||||
:param ell: Parameter des triaxialen Ellipsoids
|
||||
:param P0: Startpunkt
|
||||
:param Pk: Zielpunkt
|
||||
:param maxSegLen: maximale Segmentlänge
|
||||
:param stopeval: maximale Durchläufe der CMA-ES
|
||||
:param maxIter: maximale Durchläufe der Mittelpunktsgenerierung
|
||||
:param all_points: Ergebnisliste mit allen Punkte, die wahlweise mit ausgegeben werden kann
|
||||
:return: Richtungswinkel des Start- und Zielpunktes und Gesamtlänge
|
||||
"""
|
||||
global ell_ES
|
||||
ell_ES = ell
|
||||
|
||||
Reference in New Issue
Block a user