Eckpunkt-Rechner
Geben Sie die Koeffizienten der Zielfunktion und die Eckpunkte des zulässigen Bereichs ein und sehen Sie, welcher den höchsten Wert liefert: Für 3x + 5y über (0, 0), (0, 4), (3, 3) und (5, 0) gewinnt (3, 3) mit 24. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Ziel
- 3, 5
- Optimaler Eckpunkt
- 3, 3
- Zielwert
- 24
- Index
- 2
- Ausgewertete Eckpunkte
- 4
Der Eckpunkt-Rechner beantwortet den letzten Schritt jeder Aufgabe zur linearen Optimierung: Welcher Punkt maximiert bei gegebenen Zielfunktionskoeffizienten und Eckpunkten des zulässigen Bereichs die Zielfunktion, und welchen Wert erreicht sie? Eine lineare Zielfunktion über einem konvexen Polytop erreicht ihr Optimum stets in einem Eckpunkt; die Auswertung an jedem Eckpunkt ist daher keine Näherung, sondern die exakte Lösung. Sie senden den Koeffizientenvektor und die Punktliste; der Endpunkt wertet das Skalarprodukt an jedem Punkt aus, wendet eine deterministische Regel bei Gleichstand an und liefert den Gewinnerpunkt, seinen Zielwert und seine Position in Ihrer Liste. Er läuft in Millisekunden, speichert nichts, und derselbe Code läuft kostenlos in Ihrem Browser auf dieser Seite.
Warum das Optimum stets ein Eckpunkt ist
Der Hauptsatz der linearen Optimierung besagt: Hat ein lineares Programm eine optimale Lösung und besitzt sein zulässiger Bereich mindestens einen Eckpunkt, dann ist ein Eckpunkt optimal. Eine lineare Zielfunktion verschiebt sich in parallelen Niveaumengen; schiebt man diese in Richtung der Verbesserung, werden sie schließlich gegen einen Extrempunkt des zulässigen Polytops gedrückt. Deshalb arbeiten die klassischen Methoden — die grafische Lösung mit zwei Variablen, die Simplex-Methode in höheren Dimensionen — ausschließlich mit Eckpunkten.
Haben Sie die Eckpunkte Ihres zulässigen Bereichs bereits aufgezählt, ist die verbleibende Arbeit reine Arithmetik: Berechnen Sie c·x an jedem Punkt und wählen Sie den größten Wert. Genau das tut dieser Endpunkt, mit strenger Validierung, damit ein fehlerhafter Punkt oder ein Dimensionskonflikt laut scheitert statt Ihr Ergebnis still zu verfälschen. Da er jeden Punkt auswertet, nennt er Ihnen auch die Zahl der verglichenen Kandidaten — nützlich, wenn Sie eine Lösung prüfen oder die Methode Schritt für Schritt vermitteln.
Eckpunkte aus Ihren Nebenbedingungen aufbereiten
Die Eingabe ist bewusst einfach: ein Zielarray und ein Array von Eckpunkten, wobei jeder Punkt ein Array von Zahlen mit derselben Länge wie das Zielarray ist. Das Ermitteln dieser Punkte ist Ihre Aufgabe — üblicherweise durch Schnitt von Nebenbedingungsgeraden in zwei Dimensionen oder durch ein Vertex-Enumerationsverfahren in höheren Dimensionen. Jeder gesendete Punkt muss zulässig sein; der Endpunkt vertraut Ihrer Liste und prüft Nebenbedingungen nicht nach, weil er sie nie zu sehen bekommt.
Gleichstand ist deterministisch: Erreichen zwei Punkte denselben Maximalwert, gewinnt der zuerst in Ihrer Liste stehende — wiederholte Aufrufe mit derselben Eingabe liefern also immer Byte für Byte dieselbe Antwort.
Das Ergebnis lesen und automatisieren
Der index ist in der Praxis wichtig, weil Punkte in Ihrem Modell meist Bezeichnungen tragen — Maschinenmix A, Portfolio B — und die Position die Rückabbildung ohne fehleranfälligen Koordinatenvergleich erlaubt. Typische Automatisierungen sind die Bewertung von Studierendenabgaben gegen eine Referenzlösung, die Verifikation, dass das von einem Solver gemeldete Optimum zu einer unabhängigen Eckpunktaufzählung passt, sowie die Bewertung kleiner Planungs- oder Mischungsmodelle, bei denen das Aufzählen der Eckpunkte günstiger ist als der Einsatz eines vollwertigen LP-Solvers.
Anwendungsfälle
Grafische LP-Aufgabe abschließen
Nachdem Sie die zulässigen Eckpunkte eines Problems mit zwei Variablen von Hand bestimmt haben, bestätigen Sie ohne erneutes Rechnen, welcher den Gewinn maximiert.
LP-Solver gegenchecken
Geben Sie eine unabhängig aufgezählte Punktliste und die Zielfunktion in den Endpunkt ein und verifizieren Sie, dass das gemeldete Optimum des Solvers übereinstimmt.
Optimierungshausaufgaben skaliert bewerten
Automatisieren Sie den Vergleich zwischen den eingereichten Eckpunkten eines Studierenden und der Referenzantwort — ein deterministischer Aufruf pro Abgabe.
Häufige Fragen
Was kostet das?
Der kostenlose Lauf in Ihrem Browser auf dieser Seite ist ebenfalls möglich — beide Wege führen denselben Code aus.
Was gilt, wenn mehrere Punkte dasselbe Maximum erreichen?
Es gewinnt der erste in Ihrer Liste. Die Gleichstandsregel ist deterministisch, identische Eingabe liefert also stets die identische Antwort.
Wird geprüft, ob meine Punkte die Nebenbedingungen erfüllen?
Nein. Der Endpunkt sieht Ihre Nebenbedingungen nie — er vertraut der gesendeten Punktliste. Die Zulässigkeit muss beim Aufzählen der Eckpunkte sichergestellt werden.
Welche Dimensionen werden unterstützt?
Jede Dimension von 1 bis zur dokumentierten Obergrenze, solange jeder Punkt exakt dieselbe Länge wie das Zielarray hat.
Warum liegt das Optimum einer linearen Optimierung immer in einem Eckpunkt?
Weil sich eine lineare Zielfunktion stets in eine Richtung verbessert. Schiebt man sie so weit, wie der zulässige Bereich erlaubt, landet man an einem Extrempunkt. Gibt es eine Optimallösung und hat der Bereich einen Eckpunkt, ist einer davon optimal.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/math/corner-point \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"objective":[3,5],"vertices":[[0,0],[0,4],[3,3],[5,0]]}'const res = await fetch("https://api.kit.forhosting.com/math/corner-point", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"objective": [
3,
5
],
"vertices": [
[
0,
0
],
[
0,
4
],
[
3,
3
],
[
5,
0
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/corner-point",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"objective": [
3,
5
],
"vertices": [
[
0,
0
],
[
0,
4
],
[
3,
3
],
[
5,
0
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/corner-point", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"objective":[3,5],"vertices":[[0,0],[0,4],[3,3],[5,0]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"objective":[3,5],"vertices":[[0,0],[0,4],[3,3],[5,0]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/corner-point", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"objective": [
3,
5
],
"vertices": [
[
0,
0
],
[
0,
4
],
[
3,
3
],
[
5,
0
]
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.corner_point",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_rows | 4096 |
max_cols | 64 |
max_abs | 1000000000000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Eckpunkte aus Ihren Nebenbedingungen aufbereiten
Jede Koordinate muss eine endliche Zahl innerhalb der dokumentierten Größenbegrenzung sein, und eine leere Punktliste wird mit einem invalid_input-Fehler abgewiesen, denn ein Bereich ohne Eckpunkte bietet nichts zu optimieren.
Das Ergebnis lesen und automatisieren
Die Antwort enthält vier Felder: optimal_vertex, eine Kopie der Gewinnerkoordinaten; objective_value, das erreichte Maximum von c·x; index, die nullbasierte Position dieses Punktes in Ihrem Array; und vertices_evaluated, die Zahl der verglichenen Kandidaten.
Technische Fragen
Was passiert bei einer leeren Punktliste?
Die Anfrage wird mit einem invalid_input-Fehler abgewiesen und nicht berechnet: Ohne Eckpunkte gibt es nichts zu optimieren.
Kann er statt Maximierung auch minimieren?
Negieren Sie die Zielfunktionskoeffizienten und den zurückgegebenen objective_value: −c·x zu maximieren ist dasselbe wie c·x zu minimieren.