Как запустить оптимизацию параметров для моей модели с использованием графического процессора - PullRequest
0 голосов
/ 06 июня 2019

По сути, у меня есть модель с заданным набором параметров, способная рассчитывать разные термодинамические свойства для разных соединений, скажем, например, плотности жидкости и давления паров.

Когда я хочу регрессировать параметры модели(например, a, b, c, d, e), подбирая данные для различных соединений, я обычно делаю много последовательных операций, которые, я уверен, я могу легко улучшить их эффективность.Я имею в виду многоцелевую оптимизацию или даже лучшее использование GPU или многоядерных процессоров.Но я немного растерялся, когда начал читать только документацию.

Так что в рамках моей объективной функции у меня обычно есть что-то вроде:

[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, когда вычисления для всех компонентов выполнены.Но как?

...