First, re-define ‘alpha0’ to include the initial conditions::
alpha0 = [alpha0; 80.2;4.451e-3;4.264e-3];
and change ‘kinetics’ correspondingly so that:
With those changes, it converged very quickly for me (R2020a) producing:
Local minimum possible.
lsqcurvefit stopped because the final change in the sum of squares relative to
its initial value is less than the value of the function tolerance.
<stopping criteria details>
alpha(1) = 1160.81907
alpha(2) = 0.60175
alpha(3) = 2.38292
alpha(4) = 1.71922
alpha(5) = 1482.53287
alpha(6) = 0.21982
alpha(7) = 2.88669
alpha(8) = 2.53375
alpha(9) = 77.58045
alpha(10) = 2.62417
alpha(11) = 2.62398
If it does not produce the parameter values you expect, it would be best to use a global search, such as the genetic algorithm (ga) function. If you have the Global Optimization Toolbox, I will post a version of that code that uses ga.