我的應用庫需要調用的優化例程:Ç回調數值優化功能
err = optim(int n, double *x, double *f, void *obj)
然後,該例程將調用目標函數來請求目標函數值。
void obj(int n, double *x, double *f)
optim()是外部庫的一部分。 optim()和obj()的簽名是固定的。
功能obj()
需要訪問包含在單個對象「模型」中的數據。所有其他函數都圍繞指向模型對象的指針傳遞。因此,調用運行優化程序可能是這樣:
err = doOptimize(model)
doOptimize()
將設置問題,並呼籲optim()
err= optim(model->n, model->x, model->f, model->obj)
的問題是,可以在obj()
函數訪問的變量駐留在model
除了n
,x
和f
? obj()
功能需要調用需要的model
對象做實際的計算等功能:
updateParms(model);
computeF(model);
我不知道怎麼obj()
可能使這些電話沒有實際處理?以下工作可以嗎?
updateParms();
computeF();
感謝,
你說的是不是'N','x'和'F'成員的其他數據?你能提供一個更詳細的代碼示例,並指出你正在嘗試做什麼? –