[VBA ] 想請教迴圈中使用規劃求解的問題

看板Visual_Basic作者 (月光光!!!!!!!)時間9年前 (2015/09/29 17:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位大大 我想請問一下 我在做一個最佳化的問題 但是必須不斷重覆做幾百次 所以想包在迴圈裡面寫 但是 我發現在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://www.ptt.cc/bbs/Visual_Basic/M.1443520289.A.1D3.html
文章代碼(AID): #1M2byX7J (Visual_Basic)
文章代碼(AID): #1M2byX7J (Visual_Basic)