Kursinhalt
Mathematik für Datenanalyse und Modellierung
Mathematik für Datenanalyse und Modellierung
Optimierungsproblem
In der Mathematik ist ein Optimierungsproblem eine Art mathematisches Problem, bei dem das Ziel darin besteht, die beste Lösung unter allen möglichen machbaren Lösungen zu finden. Das Ziel ist es, eine bestimmte Zielfunktion zu optimieren (maximieren oder minimieren), unter Berücksichtigung einer Reihe von Einschränkungen.
Die Lösung eines Optimierungsproblems ist eine Menge von Werten für die Entscheidungsvariablen, die die Einschränkungen erfüllen und die Zielfunktion optimieren. Abhängig vom Problem und den Einschränkungen kann die Lösung eindeutig sein oder mehrere optimale Lösungen haben.
Das einfachste Optimierungsproblem kann wie folgt definiert werden:
Diese Aufgabe kann wie folgt formuliert werden: Wir müssen den Wert aus der Domäne X
(den Punkt des Maximums/Minimums) finden, für den die Funktion f
einen maximalen (minimalen) Wert in der Kodomäne Y
hat.
Wie können wir das Optimierungsproblem lösen?
Es gibt keinen universellen Ansatz zur Lösung von Optimierungsproblemen, da der Ansatz oft von der Art der Funktion und dem Bereich abhängt, in dem wir die optimale Lösung suchen. Wenn es sich jedoch um eine Funktion einer Variablen handelt, gibt es einen spezifischen Algorithmus, der das Optimierungsproblem effektiv lösen kann:
Die Lösungen der im ersten Punkt beschriebenen Gleichung werden auch als kritischer Wert der Funktion f
bezeichnet.
Schauen wir uns nun an, wie man das Optimierungsproblem in Python löst:
import sympy as sp # Step 1: Define the objective function x = sp.Symbol('x') f = x**3 - 6*x**2 + 9*x # Step 2: Calculate the first derivative f_prime = sp.diff(f, x) # Step 3: Calculate the second derivative f_double_prime = sp.diff(f_prime, x) # Step 4: Find the critical points critical_points = sp.solve(f_prime, x) # Step 5: Check the second derivative at the critical points optimal_points = [] # For loop to check all critical points for point in critical_points: second_derivative_at_point = f_double_prime.subs({x:point}) # Checking second derivative to deternine type of the point if second_derivative_at_point > 0: optimal_points.append((point, 'minima')) elif second_derivative_at_point < 0: optimal_points.append((point, 'maxima')) print(f'Objective function: f(x) = {f}') print(f'First derivative: f\'(x) = {f_prime}') print(f'Second derivative: f\'\'(x) = {f_double_prime}') print(f'Critical points: {critical_points}') print(f'Optimal points and type: {optimal_points}')
Wir haben die Methode sp.solve(f, x)
im obigen Code verwendet. Diese Methode findet eine numerische Lösung der Gleichung f(x) = 0
in Bezug auf die Variable x
.
Danke für Ihr Feedback!