Konflikte gelöst, gha2_ES aber noch nicht wieder im Dashboard aufgerufen

This commit is contained in:
2026-01-18 22:11:01 +01:00
parent d7076e3001
commit fee5de0041

View File

@@ -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