2017-01-17 12 views
2

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

+3

JA es ist machbar in VBA, gehen Sie dafür. –

Antwort

2

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.

Verwandte Themen