我的应用库需要调用的优化例程:Ç回调数值优化功能
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'成员的其他数据?你能提供一个更详细的代码示例,并指出你正在尝试做什么? –