返回列表 上一主題 發帖

[發問] excel規劃求解問題(是否能自動更新)

回復 10# ML089
在EXCEL表中的計算表內黃色兩行(第m行及n行)M行是想求的解   N行是計算出來的答案
接著我用計算出來得答案帶入求解  計算表驗算那一分頁   計算結果與原始資料  有算出他的誤差
但我發現存在一個問題   每次計算的答案都不相同,不知道原因是什麼!



計算流程.rar (959 KB)
m06o2~~~~

TOP

回復 11# m06o2

看不太懂
若有公式就直接就直接求解
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 12# ML089

   O3 =((1.5*P3*Q3)*((1/(L3*(1+((U3/Q3)^2)*((N3/L3)^(2/3)))^(1/2)))+((1-(1/((1+((U3/Q3)^2))^(1/2))))/N3)))
   O3、P3、L3、U3、N3、U3都已知   要求Q3  所以用了求解的方法求   Q3
   接著把求出來的Q3帶入原式子中計算新的的O3   在跟原始的O3比較  發現他差異很大
   
m06o2~~~~

TOP

J3 =(1.5*D3*E3)*((1/(C3*(1+((F3/E3)^2)*((B3/C3)^(2/3)))^(1/2)))+((1-(1/((1+((F3/E3)^2))^(1/2))))/B3))-H3
下拉

精度低速度快
Sub 目標搜尋()
    [E3:E30] = 1
    For i = 3 To 30
        Range("J" & i).GoalSeek Goal:=0, ChangingCell:=Range("E" & i)
    Next
End Sub


求解精度比較高
'SolverSolve 函數
'
'開始執行規劃求解解決方案。相當於按一下 [規劃求解參數] 對話方塊中的 [規劃求解]。
'
'使用本函數之前,必須建立對規劃求解增益集的參照。在 Visual Basic 編輯器中,將焦點移至某個模組,按一下 [工具] 功能表上的 [參照],然後選取 [可用參照] 底下的 [Solver.xlam] 核取方塊。如果 [Solver.xlam] 沒有出現在 [可用參照] 底下,按一下 [瀏覽],然後開啟 \office12\library\Solver 子資料夾中的 Solver.xlam。
'
Sub 規劃求解()
    [E3:E30] = 1
    For i = 3 To 30
        SolverOk SetCell:="$J$" & i, MaxMinVal:=3, ValueOf:="0", ByChange:="$E$" & i
        SolverSolve UserFinish:=True
        'SolverFinish KeepFinal:=1, ReportArray:=Array(1)    '1 表示建立答案報告,2 表示建立敏感度報告,而 3 表示建立限制報告
    Next
End Sub

計算流程.rar (804.1 KB)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 13# m06o2

假如是用 range.goalseek 單變數求解, goal := 0
建議調整 "檔案""選項""公式""計算選項" "最大誤差",例如 0.00001 應該會得到不同的誤差百分比
1

評分人數

    • ML089: 謝謝補充金錢 + 2

TOP

回復 15# Scott090
有喔   這個方法有變好一點!!
m06o2~~~~

TOP

回復 14# ML089
我有測試這個方法  發現一個問題  
Sub 規劃求解()
    For i = 1 To 30
        SolverOk SetCell:="$J$" & i, MaxMinVal:=3, ValueOf:="0", ByChange:="$B$" & i
        SolverSolve UserFinish:=True
        'SolverFinish KeepFinal:=1, ReportArray:=Array(1)    '1 表示建立答案報告,2 表示建立敏感度報告,而 3 表示建立限制報告
    Next
End Sub
這樣可以執行  
但是當我的i 從  1 To 30  改成  1 To 1990  跑完我全部的時候  發現跑很久  結果跑完後  數值都沒改變!!  但一次調整小範圍就可以執行
m06o2~~~~

TOP

回復 17# m06o2

昨天我有測試 99筆還OK,
要執行1~2000筆會很久吧?
晚上我再試試

目前沒有想法可以解決
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 18# ML089
我測試 1-100也還OK  約1分鐘  但我cpu是i7的   跑大概只需要15分鐘  2000筆
m06o2~~~~

TOP

回復 19# m06o2

[E3:E30] = 1
初始值有修改嗎?
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 人的眼睛長在前面,只看到別人的缺點,絲毫看不到自己的缺點。
返回列表 上一主題