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 GHA_triaxial.panou_2013_2GHA_num import gha2_num
|
||||||
from utils import sigma2alpha
|
from utils import sigma2alpha
|
||||||
|
|
||||||
# Globals für Fitness
|
|
||||||
ell_ES: EllipsoidTriaxial = None
|
ell_ES: EllipsoidTriaxial = None
|
||||||
P_left: NDArray = None
|
P_left: NDArray = None
|
||||||
P_right: NDArray = None
|
P_right: NDArray = None
|
||||||
@@ -27,9 +26,11 @@ def Sehne(P1: NDArray, P2: NDArray) -> float:
|
|||||||
|
|
||||||
def midpoint_fitness(x: tuple) -> 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)
|
- 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
|
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):
|
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]
|
Berechnen der 2. GHA mithilfe der CMA-ES.
|
||||||
- Für jedes Segment > maxSegLen: Mittelpunkt per CMA-ES optimieren und einfügen
|
Die CMA-ES optimiert sukzessive den Mittelpunkt zwischen Start- und Zielpunkt. Der Abbruch der Berechnung erfolgt, wenn alle Segmentlängen <= maxSegLen sind.
|
||||||
- Wiederholen bis 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
|
global ell_ES
|
||||||
ell_ES = ell
|
ell_ES = ell
|
||||||
|
|||||||
Reference in New Issue
Block a user