> (1) seems the best approach to me. A one-dimensional problem should converge very fast. I don't really understand the motivation you've given for (2). Why would the constraint-solving fail if, as you say, "For a given theta, the constraints uniquely determine the rest of the parameters"? And if it can fail, why would (2) be any more robust to it?
The only way to solve for the parameters (given theta) is with a numerical algorithm. So (1) has the undesirable quality of using a numerical solver to solve a problem involving a numerical solver (i.e. 2 levels of numerical solving).
This means that the lower level of the numerical solving has to always succeed. If it succeeds 99% of the time but the code wants to check 100 values of theta, I could be stuck.
(1) also seemed the best to me despite this, but I wanted a second opinion.