作者:
Tampa (光芒)
2016-11-19 17:10:17※ [本文轉錄自 Visual_Basic 看板 #1OC1QXPU ]
作者: Tampa (光芒) 看板: Visual_Basic
標題: [VBA ] 規劃求解
時間: Sat Nov 19 17:08:47 2016
各位大大好
我用的是excel 2010
有試著錄製一段規劃求解的巨集
程式碼如下
快速鍵: Ctrl+s
'
SolverOk SetCell:="$AB$2", MaxMinVal:=2, ValueOf:=0, ByChange:="$G$2",
Engine:= _
3, EngineDesc:="Evolutionary"
SolverDelete CellRef:="$G$3432", Relation:=1, FormulaText:="48"
SolverAdd CellRef:="$G$2", Relation:=1, FormulaText:="$E$2"
SolverOk SetCell:="$AB$2", MaxMinVal:=2, ValueOf:=0, ByChange:="$G$2",
Engine:= _
3, EngineDesc:="Evolutionary"
SolverDelete CellRef:="$G$3432", Relation:=4
SolverAdd CellRef:="$G$2", Relation:=4, FormulaText:="整數"
SolverOk SetCell:="$AB$2", MaxMinVal:=2, ValueOf:=0, ByChange:="$G$2",
Engine:= _
3, EngineDesc:="Evolutionary"
SolverDelete CellRef:="$G$3432", Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$E$2", Relation:=3, FormulaText:="0"
SolverOk SetCell:="$AB$2", MaxMinVal:=2, ValueOf:=0, ByChange:="$G$2",
Engine:= _
3, EngineDesc:="Evolutionary"
SolverOk SetCell:="$AB$2", MaxMinVal:=2, ValueOf:=0, ByChange:="$G$2",
Engine:= _
3, EngineDesc:="Evolutionary"
SolverSolve
End Sub
簡單來說
我輸入變數在G欄位的所有儲存格,範圍從G2到G17860,限制式如下
G2<=E2
G2>=0
G2=整數
求AB2的最小值
.
.
.
G3<=E3
G3>=0
G3=整數
求AB3的最小值
.
.一直到
.
G17860<=E17860
G17860>=0
G17860=整數
求AB17860的最小值
巨集結束
問題一:規劃求解似乎不能直接用複製來做
所以需要用巨集,但小弟我 對程式碼不很了解
所以附上程式碼,希望各位大大可以指點一下,需要修改哪幾個地方
以方便我順利求解
ps計算方式為演化
感謝
作者: soyoso (我是耀宗) 2016-11-19 17:56:00
加上迴圈,setcell、bychange等,所帶入的儲存格位置字串改以變數以&連接,如因出現規劃求解結果的視窗中斷,再於solversolve後加true或是搜尋版上規劃求解,
#1LjuNjw6、
#1IeB04ZV等原文有寫到迴圈的部分出現沒定義這個sub或function的話,看
#1NpNv6SIrange(cells(j,7))方面將range()拿掉試試