Neu in LINDO API 15.0
Die nachfolgende Liste enthält die neuen Funktionen sowie Informationen zur Steigerung der Performance der jeweils angegeben Version der LINDO API.
Version 15.0
Neu in LINDO API 15.0
LINDO API 15 enthält wesentliche Verbesserungen aller Komponenten der Bibliothek, der LP/MIP-Solver, des globalen Optimierers und des nichtlinearen Solvers und bietet erweiterte Unterstützung für externe MIP-Solver.
Details
- Verbesserte Reproduzierbarkeit beim wiederholten Lösen eines Problems, insbesondere mit der „Concurrent"-Option beim Lösen mit dem schnellsten Barrier-, Primal-Simplex- und Dual-Simplex-Solver
- Globaler Solver bietet eine verbesserte Handhabung von IF-Anweisungen und Polynomen
- Erkennung des CENSOR( x, LB, UB)-Konstrukts, die einfachste Form einer einer S-Kurven-Funktion, wie sie beispielsweise in neuronalen Netzen zu finden ist
- Erkennung des POLYNOMIAL-Konstrukts zur besseren Nutzung von univariaten Polynomen
- Verbesserter Multi-Start-Solver zum schnellen Finden guter Lösungen für schwierige nicht-konvexe Probleme
- Erweiterte Unterstützung von externen Solvern, einschließlich linearen Solvern wie COPT, CLP, HIGHS
- Verbesserte Unterstützung von einigen externen nichtlinearen Solvern
- LINDO API 15 ist für alle großen Plattformen verfügbar: Windows, Linux, MacOS, ARM, Android.
Version 14.0
Neu in LINDO API 14.0
Linearer Integer Solver
- Verbesserte Heuristiken für allgemeine ganzzahlige Modelle
- Durchschnittliche Leistungsverbesserung von 2 - 3 % auf dem Standard-Testdatensatz
- Verbesserte Methode zur Erzeugung alternativer Optima für lineare Modelle:
- Der erste Aufruf von
LSgetNextBestSol()
erzeugt eine vorher festgelegte Anzahl von Eckpunkten durch Pivotierung der optimalen Lösungsmenge. - Nachfolgende Aufrufe liefern nicht-redundant aufeinanderfolgende Eckpunkte zurück.
- Standardlösungsabfrageverfahren können verwendet werden, um nach jedem Aufruf von
LSgetNextBestSol
auf primär-duale Vektoren zuzugreifen.
- Der erste Aufruf von
Linearisierung
- Unterstützung für Indikator-Bedingungen, z. B.
z = 0
impliziertx + y <= 0
; - Mehr Ausdrücke können automatisch linearisiert werden, so dass jetzt ein schnellener linearer Solver verwendet werden kann, wo sonst ein deutlich langsamerer nichtlinearer Solver erforderlich wäre.
- Erweiterte Linearisierung von QP- und konischen Modellen
- Verbesserte Linearisierung bestimmter IF-Ausdrücke
Nonlinear und Global Solver
- Schnellere Lösung (Größenordnung) von linearen fraktionalen Programmen (Verhältnisziele)
- Verbesserter Bound-Tightening-Prozess beim Vorverarbeiten nichtlinearer Modelle
- Automatische Generierung von Hilfsvariablen zur Verbesserung der Performance bei komplizierten Ausdrücken
- Unterstützung für zusätzliche nützliche, aber "problematische" Funktionen: Power-Utility-Funktion
(xg-1)/g
und die Exponentialverhältnisfunktion(exp(g) - 1)/g
sind in einigen Situationen zur Modellierung des Verbraucherverhaltens wichtig. Die LINDO-API kann nun die numerischen Probleme vermeiden, die auftreten, wenn g gegen 0 geht.
Schnittstellen
- Julia/JuMP wird jetzt offiziell unterstützt.
- Die Installation der Python-Schnittstelle ist jetzt via pip (pypi.org) einfacher.
- Die Matlab-Schnittstelle bietet nun zwei alternative Methoden für lineare und ganzzahlige Optimierung,
LSlinprog
undLSintprog
. Die Argumentlisten folgen ihren Gegenstücken,linprog
undintprog
, in der Matlab-Optimierungs-Toolbox.
Version 13.0
Neu in LINDO API 13.0
LINDO API 13 enthält eine Vielzahl von Leistungssteigerungen und neuen Funktionen.
Deutlich schnelleres Lösen von langen, dünnen linearen Modellen
Verbesserungen an den Simplex-Solvern ermöglichen in LINDO API 13 ein wesentlich schnelleres Lösen linearer Modelle mit einem Vielfachen an Variablen wie Nebenbedingungen.
Schneller beim gleichzeitigen Lösen eines linearen Modells mit verschiedenen Solvern
Die in LINDO API 13 verbesserte Funktionalität ermöglicht es Benutzern, gleichzeitig den einfachen und den dualen Simplex-Solver sowie den Barrier-Solver jeweils auf einem separaten Kern auszuführen. Dies stellt eine Lösung in kürzest möglicher Zeit sicher, unabhängig davon, welcher Solver am schnellsten ist.
Verbesserungen am Integer-Solver
Eine bessere Leistung bei vielen ganzzahligen Modellen wurde in LINDO API 13 durch eine verbesserte Vorauswahl von Standardeinstellungen für die Schnittgenerierung und Lösungsheuristik erreicht.
Verbesserungen bei den quadratischen/konischen Solvern
In LINDO API 13 werden Modelle mit ex- und xk-Termen, so genannte Barrier Solver Exponential- und Potenzkegel, schneller gelöst.
Neues Werkzeug zur Parameterkonfiguration
Das Parameter-Tuning-Tool in LINDO API 13 hilft bei der Bestimmung der besten Parameterkonfigurationen für alle Modelltypen (LP, MIP, NLP und Stochastik), indem es mehrere Durchläufe mit einem gegebenen Satz von Modellen durchführt. Benutzer können die anzupassenden Parameter vorwählen oder von der LINDO API auswählen lassen.
Zusätzliche Unterstützung für die Optimierung mit mehreren Zielen
Für lineare Modelle können Benutzer in LINDO API 13 eine priorisierte Liste von Zielfunktionen bereitstellen, und die LINDO-API führt eine Lexico/Präemptive-Prioritätsoptimierung durch.
Zahlreiche Erweiterungen des Global Solvers
- Verbesserte Erkennung und Verwendung der Konvexität verschiedener zusammengesetzter Funktionen
- Verbesserte Leistung für Modelle mit konvex-konkaven Funktionen
- Modelle mit Ratio/Fractional-Ziel, einschließlich MIP, finden deutlich schneller eine Lösung
- Erhebliche Geschwindigkeitsverbesserungen bei nicht-konvexen quadratischen Programmen mit quadratischen Nebenbedingungen
Version 12.0
Neu in LINDO API 12.0
Version 12 der LINDO API enthält umfangreiche Leistungssteigerungen und neue Funktionen.
Bessere Performance bei linearen Modellen mit dem verbesserten Simplex-Solvern
Die Erweiterungen der Simplex-Solver in LINDO API 12 steigern die Lösungsgeschwindigkeit linearer Modelle im Durchschnitt um 18 % bei Verwendung des einfachen und um 15 % bei Verwendung des dualen Simplex-Solvers.
Erhebliche Performancesteigerung bei großen quadratischen Modellen
Verbesserungen beim Umgang mit großen quadratischen Matrizen, z. B. 1.000 x 1.000, bieten erhebliche Performanceverbesserungen beim Lösen quadratischer Programmiermodelle.
Verbessertes Handling von Modellen mit unstetigen Funktionen
Modelle, die unstetige Funktionen wie MOD(x,k)
, INT(x)
, ROUND(x)
verwenden, können mit LINDO API 12 noch schneller gelöst werden.
Leistungssteigerung beim gleichzeitigen Lösen von linearen Modellen unter Verwendung verschiedener Solver
Die neue Multi-Core-Funktion erlaubt es, unterschiedliche Solver verschiedenen Cores zuzuweisen und so simultan auszuführen. Dies führt besonders in Situationen, in denen es schwierig ist vorherzusagen, ob beispielsweise der einfache, duale oder der Barrier-Solver die schnellste Lösung eines linearen Modells liefert, zu schnelleren Ergebnissen.
Unterstützung der Spezifikation eines Zielwerts beim Multi-Start-Nonlinear-Solver
Anwender können in LINDO API 12 einen Zielwert für die Zielfunktion vorgeben. Sobald dann einer der Berechnungsthreads des Multi-Start-Solvers das angegebene Ziel erreicht, stoppt die gesamte Berechnung.
Neue Funktionen für Konstruktionsentwürfe
Neue arithmetische Funktionen SIGNPOWER
, LMTD
und RLMTD
sind in LINDO API 12 integriert worden. Diese Funktionen kommen v. a. beim Konstruktionsentwurf z. B. nichtlinearer Netzwerke oder Wärmetauscher zur Anwendung.
Version 11.0
Neu in LINDO API 11.0
LINDO API 11 bietet folgende neuen Funktionen und Performanceverbesserungen:
Optimierter Simplex-Solver für schnelleres Lösen von linearen Modellen
LINDO API 11 bietet einen optimierten Simplex-Solver, der große lineare Modelle bis zu 20 % schneller mit dem einfachen und bis zu 15 % schneller mit dem dualen Simplex-Algorithmus löst.
Verbesserter Integer-Solver
Neue Funktionen zur Symmetrieerkennung in LINDO API 11 reduzieren die Zeit, die zum Nachweis der Optimalität bei bestimmten Modellklassen mit ganzzahligen Variablen benötigt wird, drastisch. Des Weiteren wurde die Performance bei Markowitz-Portfolio-Problemen mit Mindestkaufmengen und/oder Begrenzung auf eine Anzahl von Instrumenten auf Non-Zero-Level verbessert. Zusätzliche Optimierungen führen zu einer schnelleren Lösung bei bestimmten Aufgabenverteilungsmodellen.
Verbesserter Global-Solver
Die Stabilität und Robustheit des Global-Solvers wurde mit Version 11 der LINDO API durch verschiedene Erweiterungen bei der quadratischen Erkennung und Reichweitenminderung erreicht. Auch wurde die Nutzung von Konvexität bei bestimmten Verhältnis-Bedingungen verbessert, wie sie z. B. beim Entwurf von Netzwerken für Wärmetauscher auftreten können.
Unterstützung von mehr Typen von Nebenbedingungen
In LINDO API 11 werden mehrere neue Funktions- und Nebenbedingungstypen erkannt, z. B. die @AllDiff-Nebenbedingung für allgemeine ganzzahlige Variablen. Die @AllDiff-Nebenbedingung erlaubt es, eine Menge von ganzzahligen Variablen zu spezifizieren, so dass jede Variable der Menge einen eindeutigen, von allen anderen Variablen der Menge unterschiedlichen Wert hat.
Version 10.0
Neu in LINDO API 10.0
Schnelleres Lösen von linearen Modellen mit dem verbesserten Simplex Solver
- Die Erweiterung des Simplex Solvers in LINDO API 10 steigert die Performance bei großen linearen Modellen. Dabei beträgt die Steigerung der Geschwindigkeit im Durchschnitt 35 % bei großen Modellen, wenn der einfache Simplex-Algorithmus verwendet wird, und 20 % bei Verwendung des dualen Simplex-Algorithmus.
- Zusätzliche Erweiterungen am LP Solver beinhalten z. B. die Unterstützung für multiple objektive Kriterien.
Verbesserter Integer Solver mit neuen Funktionen
- Der neu eingeführte Optimierungsmodus in LINDO API 10 gewährleistet reproduzierbare Ergebnisse bei verschiedenen Durchläufen.
- Erweiterungen am K-Best-Algorithmus erlauben es, die k-besten Lösungen mit nur geringem zeitlichen Mehraufwand zu finden als nur eine Lösung.
- Neue heuristische Algorithmen finden schneller Lösungen bei Modellen mit Rucksack-Nebenbedingungen und Blockstrukturen.
- Neue Vorverarbeitungsstufen engen die Variablengrenzen bei Klassen von nicht-linearen Modellen ein und führen somit zu einer besseren Performance.
Erweiterter Stochastic Solver
- Große lineare mehrstufige stochastische Programminstanzen lassen sich durch verbesserte Schnittverwaltung von LINDO API 10 bei der geschachtelten Bender-Zerlegung (Nested Bender Decomposition) 60 % schneller lösen.
- Bessere Handhabung von mehrstufigen stochastischen Optimierungsmodellen, die keinen vollständigen Rekurs haben.
- Erweiterungen des Parsers erlauben die Verwendung von beliebig komplexen Funktionen stochastischer Parameter.
Verbesserter Global Solver
- Die Performance des Global Solvers wurde bei Klassen von quadratischen Problemen drastisch verbessert; dies betrifft insbesondere nicht-konvexe quadratische Probleme, die von anderen Solvern abgelehnt oder nur langsam für ein lokales Optimum durch herkömmliche Solver für nicht-lineare Modelle gelöst werden konnten. Auch kann der Global Solver in LINDO API 10 bisher nicht lösbare Probleme global optimieren, z. B. Finanzportfolio-Modelle mit Mindestkaufmenge und/oder einer begrenzten Anzahl an Instrumenten auf Nonzero-Level.
- Version 10 der LINDO API enthält einen neuen Prozess zur Grenzeinschränkung bei linearen Prozeduren und verbessert dadurch die Lösbarkeit bei linearisierten Modellen. Funktionen wie MAX(), MIN(), ABS(), x*z (z =0 oder 1) u. a. sind drastisch schneller und liefern eine stabile Leistung.
Weitere Neuerungen
- Die Sammlung von Matrixoperationen, die durch den Anwender aufrufbar sind, wurde dahingehende erweitert, dass in LINDO API 10 auch mit Kovarianz-Matrizen, wie sie bei Finanzportfolios verwendet werden, gearbeitet werden kann. Routinen enthalten allgemeine Eigenwert-Zerlegung, Cholesky-Faktorisierung zur Erzeugung von korrelierenden Zufallsvariablen plus lineare Regression, z. B. für Bedarfprognosen bei Produktionsplanungsmodellen.
Version 9.0 - 7.0
LINDO API 9.0
Neu in LINDO API 9.0
Version 9 der LINDO API enthält folgende neue Funktionen und Optimierungen
- Verbesserungen der Geschwindigkeit und Robustheit des Simplex-Verfahrens für lineare Programmierung
- Neue Vorverarbeitung bei linearer und ganzzahliger Programmierung zur Reduzierung der Koeffizientendichte bei bestimmten dichtbesetzten LP-Matrizen
- Verbesserungen bei mit dem Rucksackproblem verbundenen Zuschnitten, so dass sich die Lösungszeit bei Modellen mit dem Rucksackproblem-ähnlichen Bedingungen verringert
- Verbesserte Auswahlregeln des Default-Knotens zur Performancesteigerung bei den meisten gemischt-ganzzahligen Programmen
- Neue Regeloptionen zu Verzweigungsvariablen "Maximale Koeffizienten" und "Nachbarschaftsverzweigungen" können die Anzahl der Verzweigungen bei bestimmten gemischt-ganzzahligen Programmen reduzieren.
- Die perspektivische Reformulierungsfunktion verbessert die Performance bei quadratischen Portfolio-Modellen mit semi-kontinuierlichen Variablen, z. B. Min-Buy Quantities.
- Die optimierten Standardeinstellungen für nicht-lineare Programme erhöhen die Lösungsgeschwindigkeit um durchschnittlich 5 %.
- Schnellere Verarbeitung von langen nicht-linearen Ausdrücken in nicht-linearen Programmen, z. B. bei mehrere tausend Terme wie sie in nicht-linearen Regressionen mit tausenden von Beobachtungen vorkommen.
- Der Global Solver unterstützt noch mehr Funktionen, z. B. Verteilungsfunktionen und inverse Verteilungsfunktionen für Normal-, Cauchy-, Exponential- und logistische Verteilungen usw.
- Unterstützung für semidefinite Programme (SDP) und positiv definite Programme (POSD) inklusive ganzzahligen Variablen, z. B. wenn bei der Schätzung der Kovarianzmatrix eines Portfolios die Bedingung hinzukommt, dass die Matrix positiv semi-definit sein muss.
- Quadratische Reparaturfunktion für fast-konvexe quadratische Programme (QP), so dass sich die Performance bei nicht ganz konvexen quadratischen Programmen verbessert.
- Schwachbesetzte Cholesky-Zerlegung und verwandte Hilfsfunktionen der linearen Algebra wurden zur API hinzugefügt.
- Die Funktion LScomputeFunction() stellt eine einzige Schnittstelle zum direkten Aufruf der meisten der über 150 mathematischen Funktionen in der Operator-Bibliothek der API bereit.
LINDO API 8.0
Neue Features in LINDO API 8.0
- Geschwindigkeitssteigerung auf Multicore-Systemen
Der Barrier-, Global-, Integer, Multistart- und Stochastic-Solver der LINDO API 8 wurden so erweitert, dass sich die Lösungsgeschwindigkeit vieler Optimierungsaufgaben auf Multicore-Systemen deutlich gesteigert hat. - Neuer Branch-and-Price-Solver
Mit dem in LINDO API 8 eingeführten Branch-and-Price-Solver können Probleme mit Blockstrukturen/-matrizen schneller als bisher gelöst werden, da der Solver Multicore-Systeme unterstützt. Weiterhin wurde die Erkennung von Dekompositionsstrukturen zur Unterstützung des Branch-and-Price-Solvers verbessert. - Verbesserter MIP-Solver
LINDO API 8 verbessert signifikant die Heuristiken zum Auffinden guter, annehmbarer Lösungen von ganzzahligen Modellen. Das Simple-Rounding- und das Feasibility-Pump-Verfahren verwenden nun Bound Propagation zur Verbesserung beim Auffinden einer annehmbaren gemischt-ganzzahligen Lösung im aktuellen Pfad. Des Weiteren wurde eine neue, weiter entwickelte Heuristik zur Verbesserung der bisher besten gemischt-ganzzahligen Lösung unter Berücksichtigung bereits erhaltener gemischt-ganzzahliger Lösungen und der aktuellen Relaxation eingeführt. Dadurch ist der MIP-Solver in vielen Fällen in der Lage, bessere gemischt-ganzzahlige Lösungen in kürzerer Zeit zu finden. - Schnellerer und verbesserter Multistart-Solver
Der Multistart-Solver wurde so verbessert, dass er bis zu zwei Mal schneller gegenüber der Vorgängerversion ist. Die Chancen, die global beste Lösung zu finden, haben sich für viele nicht-konvexe Modelle zwischen 10 und 15 % erhöht. - Leistungsstärkerer Stochastic-Solver
Weitreichende Verbesserungen der Nested-Bender-Decomposition führen dazu, dass der Algorithmus sechsmal schneller als bisher ist. Der Chance-Programming-Solver verwendet nun einen genetischen Algorithmus zum Auffinden hochqualitativ annehmbarer Lösungen von großen Instanzen. Modelle dieser Klasse können nun auch durch die einfache Bender-Dekomposition gelöst werden. - Mehr unterstützte Wahrscheinlichkeitsverteilungen
Mit LINDO API 8 werden auch die Beta-Binomial- und Pareto-Verteilung unterstützt. Bei stochastischen Modellen können sogar auch zufällige Variablen über die beiden Verteilungen spezifiziert werden.
LINDO API 7.0
LINDO API 7.0 - Neue Features
LINDO API 7.0 beinhaltet mehrere Solver-Verbesserungen und Unterstützung für neue Wahrscheinlichkeitsfunktionen.
Verbesserungen am Stochastic Solver
- Erweiterte API-Funktionalität zur Unterstützung von stochastischen Modellen mit probabilistischen Nebenbedingungen, so genannten Chance-Constrained Programmen (CCP).
- Verbesserte Methoden, um Korrelationen zwischen stochastischen Parametern zu induzieren.
Verbesserungen am LP Solver für lineare Modelle
- Eine Option Sprint, um "schlanke" lineare Modelle mit Millionen von Variablen effizient zu lösen.
Verbesserungen am MIP Solver für gemischt-ganzzahlige Modelle
- Signifikante Verbesserungen von Heuristiken, um auf schnellem Wege gute, ganzzahlig Lösungen zu finden.
- Verbesserte Identifikation spezieller Strukturen, wie in multi-periodischen Modellen und deren Ausnutzung, um die Lösungszeiten signifikant zu reduzieren.
Verbesserungen am Global Solver
- Verbesserte Heuristiken, um auf schnellem Weg eine gute, realisierbare Lösung zu finden.
- Nebenbedingungen können vom Anwender als konvex definiert werden, wenn der Global Solver nicht in der Lage ist, diese als konvex zu identifizieren. Dadurch kann der Beweis globaler Optimalität beschleunigt werden.
- Verbesserte Identifizierung von Nebenbedingungen, die als Second-Order-Cone-Nebenbedingungen (SOC) umformuliert und daher durch den schnellen SOC-Solver gelöst werden können.
- Verbesserung beim Umgang mit nicht-linearen Modellen, die quadratische Ausdrücke enthalten, besonders in Bezug auf nicht-konvexe quadratische Ausdrücke
Andere Solver, Math Library und Hilfsprogramme
- Mehr als zwei Dutzend neue mathematische Funktionen, um verschiedene Dichte-, Verteilungs- und inverse Verteilungsfunktionen von Wahrscheinlichkeitsverteilungen zu unterstützen.
- Neuer, auf Benders Zerlegung basierender Solver zur Lösung großer LPs mit relativ wenigen verbundenen Spalten. MILPs, deren ganzzahlige Variablen nur in verbundenen Spalten erscheinen, können mit diesem Solver auch gelöst werden.
- Aufrufbare Routine, um Strukturen von Matrizen in (beinahe) unterer Dreiecksform zu identifizieren.
Neue Stochastik-Programmierschnittstelle
- Modellierung und Optimierung mit unbestimmten Elementen in mehrstufigen linearen, nicht-linearen und ganzzahligen stochastischen Modellen
- Umfangreiche API-Funktionen zur Erzeugen und Lösen von stochastischen Modellen
- Benders-Zerlegung für die Lösung stochastischer Modelle
- Deterministische Äquivalent-Methode zur Lösung von nicht-linearen und stochastischen Modellen
- Unterstützung von über 20 kontinuierlichen oder diskreten parametrischen Verteilungen
- Verwendung von benutzerdefinierte Verteilungsfunktionen über Callback-Funktionen möglich
- Anpassbare Szenarien für Stichproben über die statistische Stichproben API
API für statistische Stichproben
- Umfangreiche API-Funktionen zum Ziehen von Stichproben aus verschiedenen Wahrscheinlichkeitsverteilungen
- Varianzreduktion mit Latin-Hyper-Cube und Anti-Thetic Variates Sampling
- Generierung von Stichproben, die nach Pearson, Spearman oder Kendall-Korrelationsmaßen korrelieren
- Erzeugung von Pseudo-Zufallszahlen durch drei verschiedene Generatoren möglich
Verbesserungen am Simplex Solver
- Durch die verbesserten primären und dualen-Simplex-Solver können große lineare Modelle durchschnittlich 20 % schneller gelöst.