0

本质上,我有一个模型,它具有给定的一组参数,能够计算不同化合物的不同热力学性质,例如液体密度和蒸气压。

当我想通过拟合不同化合物的数据来回归模型参数(例如a、b、c、d、e)时,我通常会做很多顺序操作,我确信我可以轻松提高它们的效率。我正在考虑多目标优化,甚至更好地使用 GPU 或 CPU 的多核。但是我有点迷失从哪里开始阅读文档。

所以在我的目标函数中,我通常有类似的东西:

[fval]= objective_function(a,b,c,d,e)

input_comp1=f(constants,a,b,c,d,e)

input_comp2=f(constants,a,b,c,d,e)

exp_density1=load some text file or so.

exp_density2=load some text file or so.

exp_vaporpressure1=load some text file or so.

exp_vaporpressure2=load some text file or so.

densities_1=density(a,b,c,d,e,input_comp1)

vapor_pressures1=vapor_pressures(a,b,c,d,e,input_comp1)

densities_2=density(a,b,c,d,e,input_comp2)

vapor_pressures=vapor_pressures (a,b,c,d,e,input_comp2)

ARD_d1=expression for deviations between experimental and calculated values for density of comp.1

ARD_d2=...

ARD_p1=...

ARD_p2=...

fval= ARD_d1+ARD_d2+ARD_p1+ARD_p2

然后由 fminsearch 之类的东西进行评估,但我过去也使用过其他人,fminsearch 对我来说效果最好。当我只为一个组件执行此操作时,它的工作速度足以满足我的目的(但我是一个有耐心的人)。但是现在我已经扩展了模型,需要同时从多个组件中回归参数,这变得不可能。

我很确定这种计算方式可以改进,因为我可以同时对不同的化合物进行计算,而不是按顺序进行计算,然后在所有组分的计算完成后评估 fval。但是怎么做?

4

0 回答 0