|
|
Simulink extrem langsam wenn Matlab aus Python aufgerufen |
|
GPD |
Forum-Anfänger
|
|
Beiträge: 23
|
|
|
|
Anmeldedatum: 03.03.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.04.2016, 14:49
Titel: Simulink extrem langsam wenn Matlab aus Python aufgerufen
|
|
Hallo,
ich rufe aus Python Matlab 2014b 64-Bit auf und starte ein Skript, das wiederum ein Matlab-Modell mit einer S-Function ausführt.
Hier mein Quellcode in Python dazu:
Hier der Quellcode des Matlabskriptes "simulinkTest.m":
Wenn ich Matlab per Hand öffne und Simulink start benötigt das Durchlaufen ca. 2 Minuten. Wenn ich jedoch Matlab aus Python starte, dann dauert es bis zu 15 Minuten
Weiss jemand woran das liegen kann?
Vielen Dank!
|
|
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 18.04.2016, 07:31
Titel:
|
|
Wenn das Debugging zeigt, dass tatsächlich ausschliesslich die Ausführung des SIM Befehls diese Verzögerung bringt kann ich mir keinen Grund vorstellen warum Simulink relativ verlangsamt wird, MATLAB aber nicht. Wird denn die ausführung eines MATLAB Codes auch stark verlangsamt? So was wie bench(10) mal laufen lassen.
Andreas
|
|
|
GPD |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 23
|
|
|
|
Anmeldedatum: 03.03.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.04.2016, 09:46
Titel:
|
|
Hallo Andreas,
danke für den Tipp mit bench(10).
Ich habe folgende Zeiten gemessen für bench(10), unter Verwendung von Matlab 2014 b, 64-Bit:
Ausführung direkt aus Matlab:
1. Versuch: 95,13 s
2. Versuch: 94,60 s
Ausführung von Python:
1. Versuch: 132,27 s
2. Versuch: 132,06 s
Mein Python-skript:
Die Ausführung des Benchmark-Test wird durch das externe Aufrufen von Matlab lediglich um 30 Sekunden verzögert.
Allerdings habe ich für mein Problem eine Lösung gefunden:
Ich nutze anstatt sim('model.slx') einfach die Funktion set_param(bdroot,'simulationcommand','start').
Weisst du, warum sim eine Simulation langsamer ausführt als set_param?
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 18.04.2016, 09:57
Titel:
|
|
Das ist alles sehr mirakulös... Ein wenig Overhead kann man erwarten, aber auch das nur-MATLAB Beispiel ist mir zu vlel. Und die beiden Simulink-Startbefehle machen intern genau das Gleiche.
Alles ziemlich unerklärlich. Die Frage ist jetzt wer Interesse hat das zu verfolgen / auf welcher Seite das Problem liegt. Was für einen Grund gibt es denn eigentlich das von Python aus zu machen? Was kann diese Toolkette was MATLAB/Simulink alleine nicht können?
Andreas
|
|
|
GPD |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 23
|
|
|
|
Anmeldedatum: 03.03.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.04.2016, 10:05
Titel:
|
|
Hallo Andreas,
ich habe kein größeres Interesse, den Grund für die langsamere Ausführung von sim gegenüber set_param zu erfahren. Als Praktiker reicht mir vorerst zu wissen, dass set_param mein Problem löst.
Der Bench zeigt übrigens nur, dass mein PC ohnehin sehr langsam ist (AMD E2-1800 APU, 1,7 GHz).
Ich schreibe eine Middleware die es ermöglicht, elektrische Anlagen in DigSILENT PowerFactory und Matlab gemeinsam zu simulieren. Daher benötige ich Python, mit der ich die Middleware programmiere. Leider kann ich die Python-Schnittstelle von Matlab nicht benutzen (Engine-Mode), da ich auch ältere Versionen ohne Python-Feature von Matlab nutzen muss.
Ich danke dir für deine Hilfe!
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 18.04.2016, 11:42
Titel:
|
|
Interessante Anwendung! Die meisten Co-Simulationen die ich kenne (und die performant sind), arbeiten über Simulinks "C MEX S-Functions".
Darüber hinaus wäre natürlich die Frage inwiefern man das das man in DigSILENT PowerFactory modeliert auch gleich in Simulink (Simscape / Simscape Power Systems http://de.mathworks.com/products/simpower/) modellieren kann.
Andreas
|
|
|
GPD |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 23
|
|
|
|
Anmeldedatum: 03.03.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.04.2016, 11:58
Titel:
|
|
Hallo Andreas,
die Modelle werden von den Windkraftanlagen- und Wechselrichterherstellern entwickelt und leider nicht von mir. Sicherlich wäre es einfacher, wenn die Hersteller sich auf eine Plattform einigen.
Aktuell werden Modelle zum größeren Anteil auf PowerFactory modelliert und danach in Simulink / Simpowersystems. Daher auch die Notwendigkeit meiner Middleware.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|