schon länger lese ich mich durch verschiedene Foren um mein Problem zu lösen, da mich bisher nichts weitergebracht hat, hoffe ich ihr könnt mir nun helfen!
Ich möchte ein Optimierungsproblem mit der Funktion intlinprog lösen. Das funktioniert für Beispiele mit kleinen Matrizen sehr gut. Kommen negative Zahlen in der Zielfunktion vor, kommt Matlab sehr schnell an seine Grenzen und spuckt folgende Fehlermeldung aus:
Intlinprog stopped because it exceeded its allocated memory.
Ich arbeite auf einem 64bit Rechner mit 64bit Matlab. Den virtuellen Arbeitsspeicher habe ich in den Systemeinstellungen bereits erweitert (ohne Erfolg). Auch die Simulation auf einem PC mit 128 GB RAM hat das Programm an der gleichen Stelle abrechen lassen. Im Task-Manager konnte ich beobachten, dass der RAM nie an seine Grenzen gerät.
Es scheint so, also würde Matlab nur auf einen Teil des RAMs zugreifen können. Wie kann ich das ändern?
Vielen Dank fürs durchlesen und ich freue mich auf eure Lösungsvorschläge!
auf wie viel speicher matlab zugreifen kann kannst du mit dem befehl memory rausfinden.
was hast du denn bis jetzt versucht? der erste anschlag bei google liefert ja schon hinweise und weiterführende links. es bringt ja nix wenn wir dir das was da steht nochmal sagen.
_________________
Folgende Einstellungen habe ich, mit hilfe der google Treffer, schon versucht:
- Virtuellen RAM auf das dreifache des physikalischen RAMs gesetzt (Erweiterte Systemeinstellungen)
- sparse-Matrizen verwendet
- Matlab im Task-Manager die Priorität "hoch" zugewiesen
Alle Einstellungen haben keine Verbesserung hervorgerufen, das Programm stoppt immer an der gleichen Stelle.
Wie man bei dem Abruf von memory sieht, verwendet Matlab nur einen Teil des zur Verfügung stehenden Speichers. Ich denke darin liegt das Problem, nur kann ich keine Lösung finden diese Zuweisung zu erhöhen!
woran sihst du das matlab nicht den ganzen speicher benutzt bei der rechnung ? die 700 mb sind ja nur das was matlab grade nutzt.
8gb ram sind auch nicht so viel aber du meinstest ja er bricht auch bei 128 gb ab.
sicher giebt es auch den speicher auf der festplatte aber der ist so langsam das ich den nur in absoluten notfällen benutzen würde.
hast du mal die weiterführenden beschreibungen durchgelesen und versucht an den solver einstellungen zu drehen ?
http://de.mathworks.com/help/optim/improving-results.html
ohne das entsprechende problem mit code ist es immer schwer selber etwas rumzuprobieren
grüße
_________________
danke für deine Antwort. Ich bin gerade noch am rumprobieren, um das Problem mithilfe der Solver Einstellungen zu lösen. Sieht schon gut aus, immerhin keine Speicher Überschreitung mehr, aber sehr lange Laufzeiten... Ich probiere weiter und melde mich dann noch einmal, wenn das Problem gelöst ist (oder auch nicht )
je mehr Informationen du zur Verfügung stellst, desto eher kann man dir helfen. Die Info, dass du intlinprog verwendest, ist für sich genommen etwas dürftig.
Mit virtuellem RAM in dieser Größenordnung wäre ich vorsichtig. Unter Windows 7 habe ich die Erfahrung gemacht, dass dies Prozesse extrem verlangsamen kann und man nicht mal mit dem Task Manager den Prozess abschießen kann.
danke Harald für deine Antwort. Ich habe nun alle möglichen Einstellungen für intlinprog unter dem Kapitel "Tuning Integer Linear Programming" ausprobiert und noch keine Lösung gefunden. Es gibt zwar keine Speicherüberschreitung mehr, aber innerhalb zwei Stunden Laufzeit wird auch keine einzige Lösung gefunden.
das Optimierungsproblem ist sehr groß; insofern wundert mich die Laufzeit nicht unbedingt. Du kannst ja mal 'Display' auf 'iter' stellen und dir den Fortschritt der Optimierung ansehen.
Variablen bitte grundsätzlich als .mat-Datei zur Verfügung stellen. Das ist deutlich handlicher als riesige Excel-Dateien.
danke für den Hinweis mit der .mat datei. Den Rechenfortschritt beobachte ich schon, leider bringt mich das auch nicht weiter.
A_1 und A_2 waren Hilfsgrößen, da die Variable A zu groß war um sie auf einmal in das Excel File zu exportieren. Ich habe nur vergessen sie zu löschen, sie haben keine Bedeutung...
Weist du ungefähr wie lang die Berechnung mit solch großen Variablen dauert? Ziel des Programms ist es eigentlich, solche Probleme täglich in wenigen Minuten zu lösen. Ist das dann wohl mit Matlab gar nicht möglich?
ich habe mit Problemen dieser Dimension keine Erfahrung.
Das klingt nach einer kommerziellen Anwendung? Dann solltest du am besten den Technischen Support von MathWorks befragen.
Ob es mit MATLAB (oder überhaupt irgendeinem Tool) möglich ist, ein Problem dieser Größenordnung in wenigen Minuten zu lösen, kann ich so nicht beantworten.
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
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.