EN DE

OnlyOffice NLP Solver

Ein Plugin für OnlyOffice Spreadsheet mit zwei Werkzeugen: NLP Solver für nichtlineare Optimierung und PolyFit für automatische Polynomregression.

Als OnlyOffice-Nutzer habe ich festgestellt, dass es kein Solver-Plugin gab — also habe ich eines entwickelt. Der Solver verwendet eine angepasste Nelder-Mead-Implementierung (Simplex-Downhill), die in Go geschrieben ist und über WebAssembly im Plugin läuft.

Inzwischen ist der Solver ausgereift und in der Praxis sehr zuverlässig. Er löst nichtlineare Probleme auch mit nichtlinearen Nebenbedingungen stabil und schnell — und schließt damit eine echte Lücke im OnlyOffice-Funktionsumfang.

Zwei Modi im Plugin

Demonstration des NLP Solvers

NLP Solver

Klassische nichtlineare Optimierung. Sie definieren eine Zielzelle, Parameterzellen und optionale Nebenbedingungen — der Solver minimiert die Zielfunktion.

Demonstration von PolyFit

PolyFit

Automatische Polynomregression. Sie geben Eingabespalten und eine Zielspalte an, PolyFit probiert systematisch alle Polynomkombinationen im definierten Gradbereich durch und liefert die Formel mit der besten Anpassung.

Installation

OnlyOffice ab Version 9.x

Seit Version 9 lädt OnlyOffice Plugins, die über den Plugin-Manager installiert wurden, nicht mehr zuverlässig. Bis das im Editor behoben ist, lässt sich das Plugin direkt im Plugin-Verzeichnis ablegen — der Mehraufwand sind drei Befehle:

  1. Plugin-Ordner auf dem System finden, z. B. /opt/onlyoffice/desktopeditors/editors/sdkjs-plugins
  2. ZIP herunterladen über den Button oben
  3. ZIP entpacken
  4. Den entpackten Ordner {88fb63f6-cd50-4e4c-bf2f-f2b0d902d05c} in den Plugin-Ordner verschieben:
    sudo mv '{88fb63f6-cd50-4e4c-bf2f-f2b0d902d05c}' \
      /opt/onlyoffice/desktopeditors/editors/sdkjs-plugins/

OnlyOffice bis Version 8.x

Die alte Plugin-Loader-Variante funktioniert noch über den Plugin-Manager:

  1. Legacy-Plugin (.plugin) über den Button oben herunterladen
  2. OnlyOffice Spreadsheet öffnen
  3. Plugins → Plugin Manager → Aus Datei installieren
  4. Heruntergeladene Datei auswählen
  5. Der NLP Solver erscheint im Plugins-Menü

Anleitung — NLP Solver

Schritt 1: Zielzelle auswählen

Auswahl der Zielzelle im NLP Solver

Wählen Sie die Zelle aus, die die zu minimierende Formel enthält. Das ist Ihre Zielfunktion — der Wert, den der Solver so klein wie möglich machen wird.

Schritt 2: Parameter definieren

Konfiguration der Parameter mit Grenzen

Wählen Sie die Parameterzellen aus — also die Werte, die der Solver anpasst, um das Optimum zu finden.

Hinweis: Der Solver verwendet nicht die aktuellen Werte in den Parameterzellen. Was beim Drücken von Start drinsteht, wird ignoriert.

Sie können Grenzen für jeden Parameter festlegen. Der Solver bildet daraus das Start-Simplex und findet so leichter das richtige Minimum. Ohne Angabe gelten Standardgrenzen von -1.0 bis 1.0 — diese sind aber nicht bindend, das Simplex kann sich darüber hinaus bewegen.

StrictMin / StrictMax

Wenn aktiviert, wird die Grenze niemals überschritten. Beispiel: StrictMin aktivieren und auf 0 setzen, um nur positive Werte zu erlauben.

Schritt 3: Nebenbedingungen hinzufügen (optional)

Festlegen von Nebenbedingungen im NLP Solver

Fügen Sie Nebenbedingungen hinzu, um den Lösungsraum einzuschränken. Jede Bedingung hat Min- und Max-Werte mit eigenen Checkboxen.

DefineMin / DefineMax

Wenn aktiviert, wird die jeweilige Grenze erzwungen. Deaktiviert lassen, wenn auf dieser Seite keine Grenze nötig ist — z. B. wenn ein Minimum nötig ist, der Maximalwert aber egal. Intern werden undefinierte Grenzen auf ±MaxFloat64 gesetzt.

Beide Optionen sind der Einfachheit halber standardmäßig aktiviert.

Schritt 4: Iterationen festlegen und Starten

Iterationen und Start

Wählen Sie die Anzahl der Iterationen. Mehr Iterationen können bei komplexen, stark nichtlinearen Problemen bessere Ergebnisse liefern — dauern aber auch länger. Klicken Sie auf Start.

Anleitung — PolyFit

PolyFit findet automatisch die beste Polynomformel, die Ihre Daten beschreibt. Sie geben Eingabespalten (Params) und eine Zielspalte (Target) an, der Algorithmus probiert systematisch alle Polynomkombinationen im definierten Gradbereich durch und liefert die Formel mit der besten Anpassung.

Während der Standardmodus voraussetzt, dass die Zielfunktion f(x1, x2, x3, …) bereits bekannt ist und nur deren Parameter angepasst werden, behandelt PolyFit die Funktion selbst als unbekannt. Gefittet wird also sowohl die Struktur des Polynoms als auch dessen Koeffizienten.

Das ist besonders bei der Auswertung von Messreihen nützlich, bei denen kein theoretisches Modell vorliegt. Sobald die Formel einmal bestimmt ist, lässt sich damit anschließend ohne weiteren Rechenaufwand arbeiten — als gewöhnliche Zellformel.

Schritt 1: Modus wechseln

Im Plugin-Fenster oben auf PolyFit umschalten.

Schritt 2: Zellbereiche markieren

Markieren Sie in der Tabelle die jeweiligen Zellbereiche und weisen Sie sie über die Buttons zu:

  • Select as Params — die Spalten mit den Eingabewerten x1, x2, x3, …
  • Select as Target — die Spalte mit den Zielwerten y, die das Polynom annähern soll

Schritt 3: Suchraum festlegen

  • MinGrade und MaxGrade bestimmen, welche Exponenten in den Termen vorkommen dürfen (auch negative Werte sind erlaubt).
  • NumParams ist die Anzahl der Terme im Ergebnispolynom — also wie viele Summanden die finale Formel hat.

Schritt 4: Use Native (optional, empfohlen)

Mit Use Native nutzt PolyFit einen lokal laufenden HTTP-Service statt der WASM-Variante im Browser. Das ist deutlich schneller, gerade bei großen Datenmengen oder breiten Suchräumen. Siehe Native PolyFit-Service unten.

Ergebnis

Das Ergebnis ist eine fertige Formel, die Sie direkt in die Tabelle übernehmen können — z. B.:

-0.1300·x2⁻¹·x3² + 1.5252·x1²·x3 + …

Native PolyFit-Service

Der PolyFit-Service ist ein kleines natives Programm, das die Berechnung lokal übernimmt. Er ist deutlich schneller als die WASM-Variante und wird parallel zum OnlyOffice-Editor gestartet.

  1. PolyFit-Service ZIP über den Button oben herunterladen und entpacken.
  2. Den Ordner für die eigene Plattform auswählen (z. B. nlp-linux-amd64, nlp-windows-amd64, nlp-darwin-arm64).
  3. Die Binary nlp bzw. nlp.exe starten. Standardport ist 8081:
    ./nlp           # Standardport 8081
    ./nlp 9000      # eigener Port
  4. Im Plugin Use Native aktivieren und denselben Port eintragen.

Das Terminal-Fenster bleibt offen, solange der Service läuft. Beenden mit Ctrl+C oder durch Schließen des Fensters. Eine ausführliche Anleitung inklusive HTTP-API liegt der ZIP als README.txt bei.

Helfen Sie, dieses Plugin zu verbessern

Ich entwickle das Plugin aktiv weiter, und Ihr Feedback ist von unschätzbarem Wert. So können Sie beitragen:

  • Etwas unklar? Fragen Sie gerne nach.
  • Einen Fehler gefunden? Senden Sie mir Ihre Tabellendatei, damit ich das Problem reproduzieren und beheben kann.
  • Ein kniffliges Optimierungsproblem? Teilen Sie es mir mit — ich suche immer nach Grenzfällen zum Testen.
  • Vergleich mit Excel oder LibreOffice gemacht? Ich würde mich über Ihr Feedback freuen.