Я пытаюсь реализовать процедуру подбора электрофоретических данных моих экспериментов.
Цель состоит в том, чтобы получить кинетические параметры взаимодействия биомолекул из относительных площадей пиков на электрофореграмме на основе площадей пиков в наборе данных.
Поскольку все соответствующие дифференциальные уравнения известны и система уравнений имеет аналитическое решение, как описано здесь:
Рукопись аналитического решения
Я начал вводить соответствующие уравнения (6, 8, 13, ... из указанной рукописи) в Matlab.
Созданная таким образом функция работает, и я могу использовать ее для моделирования электрофореграммы взаимодействующих видов.
Очевидно, теперь я хотел бы использовать эту функцию для подбора экспериментальных данных и получения параметров (всего 8, Va, Vc, MUa, MUc, k, A0, C0, базовый шум).
Некоторые из них, очевидно, будут коррелированы. Примеры значений могут быть (чтобы дать представление об их величине):
params0 = [ ...
8.44E-02; ... % Va
1.25E-01; ... % Vc
5.32E-05; ... % MUa
8.87E-05; ... % MUc
4.48E-03; ... % k
6.06E-01; ... % A0
3.00E-00; ... % C0
4.64E-03 ... % noise
];
Моя проблема в том, что если я предоставлю экспериментальные данные и попробую что-то вроде lsqcurvefit:
[x,resnorm,residual] = lsqcurvefit(@(param,xdata) Electropherogram2(param,xdata,column), params0, time, ydata,lb, ub);
Я часто получаю очень плохие результаты, потому что либо у меня заканчиваются итерации, я попадаю на некоторый (явно плохо подходящий) локальный минимум или что-то еще ...
Только если я много возьмусь с начальными значениями и допустимыми интервалами (т. Е. Потому, что я знаю вероятные значения из других экспериментов), я получу более или менее приличные совпадения, но даже в этом случае совпадения не так хороши, как указано в оригинале. рукопись (рис. 3).
Авторы этой рукописи использовали решатель Excel и были достаточно любезны, чтобы предоставить исходные данные, использованные на рис. 3, но все же мне кажется, что я не могу в конечном итоге получить такие же хорошие результаты, как их, без почти буквального предоставления почти правильных начальных значений.
У меня недостаточно опыта, чтобы знать, что я могу настроить, чтобы сделать этот процесс менее беспроблемным.
Может ли мне помочь что-то вроде инструментария глобальной оптимизации?
Любые подсказки приветствуются ...