我對VBA不是很有經驗,但是我對它有基本的瞭解。我試圖創建一個優化模型,其中求解器生成一組約束的最小值:使用求解器寫入值
-Cell O40需要最小化,並且該值記錄並打印在單元格中Kx -Cell O41是我的動態約束,需要將其設置爲等於解算器每次迭代的單元格Jx中的值。 -Cells J40:J45是將會改變的權重,並受制於約束J46 = 1(其中J46 = SUM(J40:J45)使得權重加起來爲1)
我運行Solver一次並記錄宏,得到了以下的輸出:
子解()
SolverAdd CellRef:="$J$46", Relation:=2, FormulaText:="1"
SolverAdd CellRef:="$O$41", Relation:=2, FormulaText:="$J17"
SolverOk SetCell:="$O$40", MaxMinVal:=2, ValueOf:=0, ByChange:="$J$40:$J$45", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
末次
現在我需要求解器做兩件事情:
在程序結束時將單元格O40中求解的值寫入單元格Kx中,其中單元格Kx對應於確定單元格O41的固定值約束的相鄰單元格Jx。
對範圍J17:J33重複該過程,更改單元格O41中的固定值約束。
結果應該是單元格K17:K33中的值填充到單元格J17:J33中的給定級別並最小化。
我感謝任何幫助,我可以得到。
您有兩個問題:解決優化問題和編程。你的問題對於SO來說太廣泛了。 – duffymo
我確定需要幾行代碼來指定我需要更改的單元格範圍,並且在每次迭代之後都需要某種計數器來抵消單元格,但這是我需要幫助的。我可以手動完成,但對於需要做什麼來說效率很低。 – fede
有趣的問題,我想你需要寫一個VBA宏根據你的規格上面。當你詳細描述過程時,現在並不難。 –