作者moon0815 (月光光!!!!!!!)
看板Visual_Basic
標題[VBA ] 想請教迴圈中使用規劃求解的問題
時間Tue Sep 29 17:51:25 2015
各位大大
我想請問一下
我在做一個最佳化的問題
但是必須不斷重覆做幾百次
所以想包在迴圈裡面寫
但是 我發現在EXCEL的規劃求解視窗中
設定好相同的條件 進行求解
然後我跑下面這段程式碼的時候
(輸入相對應的儲存格位置都相同)
會有兩個限制式消失
我想 應該是在Reset之後
那兩個限制式沒有被寫入
但很奇怪的是 我都照著書上與網路上的作法輸入
不知道為何限制式無法被加入
分別是:
1. Call SolverAdd(sqlstr, 1, 1) '限制權重小於等於1
2. Call SolverAdd(sqlstr4, 2, 1) '限制權重加總等於1
偏偏這兩個限制式還滿基本重要的....
也想請各位大大看一下
我程式這樣寫有哪邊有問題...
還請各位大大撥冗幫忙..
以下是程式碼
----------------------------------------
Option Explicit
Public Sub Optimization()
Dim sqlstr As String
Dim sqlstr1 As String
Dim sqlstr2 As String
Dim sqlstr3 As String
Dim sqlstr4 As String
Dim sqlstr5 As String
Dim sqlstr6 As String
Dim W1 As String
Dim W2 As String
Dim W3 As String
Dim W4 As String
Dim W5 As String
Dim W6 As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
Worksheets("RR5").Activate
j = 64
Do While Worksheets("RR5").Cells(j, 2) <> ""
sqlstr = "$D$" & j & ":$I$" & j '變數範圍
sqlstr1 = "$C$" & j '目標式位置
sqlstr2 = "$A$" & j '限制式位置(期望報酬)
sqlstr3 = "$B$" & j '限制式數值(期望報酬)
sqlstr4 = "$J$" & j '限制式位置(權重加總)
sqlstr5 = "$K$" & j '限制式位置(投資組合變異數)
sqlstr6 = "$L$" & j '限制式位置(權重變化加總)
W1 = "$D$" & j '限制式位置(權重1)
W2 = "$E$" & j '限制式位置(權重2)
W3 = "$F$" & j '限制式數值(權重3)
W4 = "$G$" & j '限制式位置(權重4)
W5 = "$H$" & j '限制式位置(權重5)
W6 = "$I$" & j '限制式位置(權重6)
Call SolverReset
Call SolverOk(sqlstr1, 2, , sqlstr) '目標式: 最小
Call SolverAdd(sqlstr, 1, 1) '限制式: 各權重小於1
Call SolverAdd(sqlstr, 3, 0) '限制式: 各權重大於0
Call SolverAdd(W1, 1, 0.75) '限制式: 限制各權重不能超過75%
Call SolverAdd(W2, 1, 0.75)
Call SolverAdd(W3, 1, 0.75)
Call SolverAdd(W4, 1, 0.75)
Call SolverAdd(W5, 1, 0.75)
Call SolverAdd(W6, 1, 0.75)
Call SolverAdd(sqlstr5, 3, 0) '限制式: 乘積大於0
Call SolverAdd(sqlstr6, 1, 0.8) '限制式: 權重變化累積需小於80%
Call SolverAdd(sqlstr4, 2, 1) '限制式: 各權重加總於1
Call SolverAdd(sqlstr2, 2, sqlstr3) '限制式: 預期值等於給定值
Call SolverOptions(100, 1000, , , , , 2, , , , , True)
'限制規劃求解的選項: 使結果為非負
Call SolverSolve(True) '執行規劃求解
Call Solverfinish(1) '結束規劃求解 並將結果留在儲存格中
j = j + 1
Loop
End Sub
--
只有用真心 才能交到真心的朋友
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.108.184
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Visual_Basic/M.1443520289.A.1D3.html