模型調整 - 每行最佳化各位,
我首先會嘗試用一個例子來介紹我面臨的問題。 想像一個有 100 行和 6 列的表(PAR1、PAR2、VAR、MOD、MEA、ERR)。
MOD 列包含一個模型(=公式),該模型取決於 3 個參數 P1、P2 和 VAR。
列 P1 和 P2 的值是固定的並且對於每行都不同。
VAR 欄位包含第三個參數,在開始時初始化為預設值(假設為 1)。 舉一個具體的例子,假設 MOD 包含以下公式:MOD[i] = 3.P1[i]^3+COS(2.P2[i]^2+VAR[i])。
MEA 欄位包含測量結果,每條線都不同。
最後,ERR 包含模型和測量之間的二次誤差,也就是說:ERR[i] = (MOD[i] - MEA[i])^2。
我的目標是確定每條線的 VAR[i] 值,以便模型的值等於測量值。
在 Excel 中,我會使用 Solver 來做到這一點。 我們也可以想像一個 JSL 腳本,其中對於每一行,演算法(簡單二分法、牛頓法、布倫特法…)將找到函數 F[i] = MOD[i] - MEA[i] 的根:最小化ERR[i] 的數量。
但是,我想知道是否有更簡單的替代方案可以做到這一點? 使用 JMP 平台?
等待您的好意答覆。
史蒂芬
PS:請原諒我在社群中的第一個貢獻/問題! 
回覆:模型調整 - 每行優化完美的! 我不知道這兩個函數 - Minimize() 和 Constrained Minimize() - 是否存在。 非常感謝你的幫助
回覆:模型調整 - 每行優化您可能可以在所需的成本函數上使用 minimize() 來獲得 VAR 的最佳值,從而優化循環中的每一行。以下是您可以如何設定類似的內容:
dt = Current Data Table();
cost = expr(abs(3 * :PAR1[i] ^ 3 + Cos( 2 * :PAR1[i] ^ 2 + VAR1 ) - :MEA[i]));
for(i=1, i<=N Row(dt), i++,
:VAR[i] = Minimize(cost,{VAR1(-5, 5)});
);由於您僅優化 1 個誤差(無需最小化誤差平方和),因此您可以僅使用更簡單的誤差成本函數,而不進行平方。
還有更多參數可以與 minimize() 一起使用。也請查看 Constrained Minimize()。這似乎適用於我設定的測試表,只要我為 MEA 輸入合理的值,錯誤就會最小化。