From fee5de0041fa431653a398f0e874a2b93966c6a9 Mon Sep 17 00:00:00 2001 From: Nico Date: Sun, 18 Jan 2026 22:11:01 +0100 Subject: [PATCH] =?UTF-8?q?Konflikte=20gel=C3=B6st,=20gha2=5FES=20aber=20n?= =?UTF-8?q?och=20nicht=20wieder=20im=20Dashboard=20aufgerufen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GHA_triaxial/ES_gha2.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/GHA_triaxial/ES_gha2.py b/GHA_triaxial/ES_gha2.py index 3be7936..2bc4713 100644 --- a/GHA_triaxial/ES_gha2.py +++ b/GHA_triaxial/ES_gha2.py @@ -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