Excel-Solver/OpenSolver: Nebenbedingungen mit VBA
04.01.2017 11:29:00
Maximilian
ich bin derzeit dabei, ein Optimierungsproblem für eine große Menge an Datenreihen zu programmieren. Der Algorithmus dahinter steht dank den Tools im Excel-Solver/OpenSolver(OS), jedoch habe ich Probleme beim Aufsetzen der Nebenbedingungen.
Ich probiere die Programmierung beider Solver in VBA parallel, jedoch werde ich wahrscheinlich aufgrund einer hohen Variablenanzahl später alleinig auf OS zurückgreifen.
1. Der veränderbare Bereich soll die Bereiche"F2:H2" sowie "E3:H26" enthalten, sprich alle Zellen des Bereichs "E2:H26" bis auf "E2". Dies schaffe ich leider mit der SolverOk-Funktion bzw. SetDecisionVariables(OS) nicht, weil ich die korrekte Syntax in den Befehlen, wenn für "ByChange" bzw. "DecisionVariables" 2 Ausdrücke verwendet werden sollen, nicht.
2. Die veränderbaren Variablen unterliegen Nebenbedingungen, die nicht konstant sind. Ein Beispiel macht das wahrscheinlich besser deutlich: l Sei Laufvariable, die für jeden Zeitschritt um 1 erhöht wird. Die Zelle "E"&l soll der Zelle "F"&l-1 entsprechen. Da diese Zelle "F"&l erst bei der Optimierung berechnet wird, ich die Nebenbedingungen im Script jedoch durch eine while-Schleife anlegen möchte, werden die Nebenbedingungen für "E2" bis "E26" (Ende der beispielhaften Datenreihe) auf null gesetzt. Die Frage lautet also, wie ich die Beziehungen in VBA definieren kann, ohne dass Zahlenwerte hinterlegt werden. Bei der manuellen Definition des Problems im Solver ist dies kein Problem, da Zellbezüge hinterlegt sind. Ich vermute also, dass das auch per VBA geht, stehe nur auf dem Schlauch, wie.
Ich hoffe, das Problem ausreichend erklärt zu haben und auf Eure Unterstützung.
Vielen Dank und beste Grüße
Max