Ich bin ziemlich neu in der Programmierung, und ich versuche zu bestimmen, ob die folgende Simulation in VBA machbar ist: Eine Monte Carlo Simulation, die 36 Zeitperioden, 20 Simulationsvariablen pro Periode und bis zu beinhaltet 5000 Simulationen pro Periode. Die Ergebnisse der Simulationen werden dann für jede Periode aggregiert, um 36 Verteilungen zu erzeugen (eine pro Periode). Dies scheint ein 3D-Array zu sein, das Variablen speichern muss, Schleifen usw. erfordert. Ich mache mir Sorgen um die Rechenzeit. Scheint so, als ob das für VBA zu viel wäre, also wollte ich ein Feedback bekommen. Danke im Voraus.vba, Simulationen und Arrays
Antwort
Ja, das ist durchaus machbar. Ich mache solche Dinge die ganze Zeit.
Als ich anfing, VBA vor 15-20 Jahren zu benutzen, war die Leistung oft ein Problem, und es ist immer noch ein Problem für bestimmte Dinge. Aber von der Magie der Moore's law, VBA auf meinem 2+ Jahre alten Laptop passt die Geschwindigkeit von kompilierten C vor 20 Jahren:
Sub quick()
Dim i As Long, sum As Long
Dim start As Double, elapsed As Double
start = Timer
For i = 1 To 100000000
sum = sum + 1
Next i
elapsed = Timer - start
Debug.Print "Sum of " & sum & " computed in " & elapsed & " seconds"
End Sub
Ausgang:
Sum of 100000000 computed in 0.765625 seconds
100 Mio. läuft durch eine Schleife in weniger als eine Sekunde. Selbst wenn eine Simulation in den niedrigen Milliarden von Fließkommaoperationen benötigt wird, läuft sie in weniger als einer Minute. Wenn nicht jeder dieser 5000 individuellen Simulationsschritte Hunderte von Millionen Berechnungen erfordert, sollten Sie in Ordnung sein.
Also - Codierung starten. Wenn Sie nicht weiterkommen, schreiben Sie eine andere Frage.
Ein Wort der Warnung: VBA ist schnell. Excel selbst ist schnell. Die Brücke, die die beiden verbindet (das Excel-Objektmodell), ist langsam. Um eine akzeptable Geschwindigkeit zu erreichen, sollten Sie die Übertragung von Daten zwischen dem Arbeitsblatt und VBA minimieren. Ein häufiger Anfängerfehler besteht darin, die Tabelle selbst als Datenstruktur zu verwenden. Schreiben Sie die Simulation selbst in eine reine VBA, wobei die Interaktion mit der Tabellenkalkulation weitgehend auf das Lesen der Anfangswerte zu Beginn der Simulation und das Schreiben der Ausgabe in die Tabellenkalkulation am Ende beschränkt ist.
- 1. VBA-Arrays und Loops
- 2. Arrays und Bereiche in VBA
- 3. Listen und Arrays in VBA
- 4. Slope und Intercept mit Dynamic Arrays VBA
- 5. Rediming-Arrays in VBA
- 6. Assoziative VBA-Arrays (Index)
- 7. Wie dokumentiert man Simulationen mit parallelen Prozessen?
- 8. Looping durch Arrays in VBA
- 9. Dynamische Dimensionierung eines VBA-Arrays?
- 10. vba Arrays und dynamisch Hinzufügen von Nachrichtenfehler auf ein msgbox
- 11. Deklarieren und Initialisieren von Arrays in Excel VBA
- 12. Verschieben von numpy Arrays von VBA zu Python und zurück
- 13. Ist Hadoop richtig zum Ausführen meiner Simulationen?
- 14. Simulationen von diskreten Übertragungsfunktionen mit unterschiedlichen Ergebnissen
- 15. Einfache Simulationen für Physik in Python?
- 16. Handhabung von großen Simulationen in R
- 17. Warum brauchen wir Stochastizität in deterministischen Simulationen?
- 18. Simulationen in R Wahrscheinlichkeit unter Verwendung
- 19. VBA zweidimensionale Arrays verbinden mit einer Datenbank
- 20. Wie verwendet man Arrays in VBA-Funktionen?
- 21. VBA-Arrays mit nebeneinander liegenden Werten
- 22. Excel VBA-Arrays erstellen Fehler 9
- 23. VBA Excel Loop durch 2 Arrays zusammen
- 24. Schleifen über Arrays in VBA vermeiden?
- 25. Definieren und Hinzufügen von Werten zu Arrays innerhalb eines Arrays in VBA Excel
- 26. Rückgabe eines Arrays von Funktion in VBA
- 27. Gezackte Arrays als Parameter für VBA Sub
- 28. Concurrent Simulationen mit OpenCL auf Intel Xeon Phi
- 29. Java Swing, das mehrere Simulationen in einer Schleife ausführt
- 30. Wie kann ich die Zuverlässigkeit meiner Veins-Simulationen testen?
JA es ist machbar in VBA, gehen Sie dafür. –