Hello.

On Sat, 12 Sep 2015 13:12:36 +0200, Thom Brown wrote:
Hey,

I think I'm almost set up and I'm positive about my jacobian, but I can't
solve two - rather simple? - problems on my own.

double[] prescribedValues = new double[observedValues.length];
for (int i = 0; i < prescribedValues.length; i++) {
      prescribedValues[i] = observedValues[i];
}


I don't know if that makes sense. All I do here is to set the target on my observations. Because I can't think of another way to get observed "F"
values, but I think that's rather correct.

I'm not familiar with the problem itself ("triple exponential smoothing") so I'm a bit lost now with all the "previous period" and "previous season"
etc.
I hope I didn't put you on the wrong track.

However:


RealVector startVector = new ArrayRealVector(new double[] { 1.0, 0.0 });
startVector.append(new ArrayRealVector(new double[] { 1.0, 0.0 }));
startVector.append(new ArrayRealVector(new double[] { 1.0, 0.0 }));
LeastSquaresProblem problem = new LeastSquaresBuilder().start(startVector
).model(distanceToCurrentF)
.target(prescribedValues).lazyEvaluation(false
).maxEvaluations(1000).maxIterations(100).build();


this won't work.

Well you use arrays of size 2 as arguments while you have 3 parameters...
I also don't understand the "append" calls...

What I want to do is to set three points each for alpha,
beta and gamma that contain the possible values (0 <= alpha, beta, gamma <= 1). Apparently equal entries are merged to one? Anyways, I also doubt I can
access my parameters by using:

Vector3D approx = new Vector3D(params.getEntry(0), params.getEntry(1),
params.getEntry(2));

I don't see the purpose of using "Vector3D", the "RealVector" is already
holding the values of the parameters; no need to copy them elsewhere.


[...]

helper.calculateSmoothedObservation(i, approx.getX(), approx.getY(), approx
.getZ());


at the very beginning of my jacobian function.
calculatedSmoothedObservation(int index, double alpha, double beta, double gamma) should always update the S, b and I parameters by using the alpha, beta and gamma values of the optimization. I think I'm not on the right
track here.

I'm positive that we (okay, you did more than I did here) can solve that
too :P

We can provide a few guidelines, but you should really look at the unit
tests, and discover "what is what" in your problem...
See also the function fitting classes in the package "o.a.c.m.fitting"; e.g.
the "HarmonicCurveFitter" and its "AbstractCurveFitter" base class.

I looked a little at the code referred to in your other post. Some trivial
suggestions:
* Avoid "Double" when "double" would be fine.
* Avoid variables named "l" (can easily be confused with "1").
* Give meaningful names ("HelperClass" and "Test" do not describe what the
  should do).
* Comment abundantly. [Comments could help people help you...]
* Devise unit tests for every case for which you can figure out the result (or for which you have reference values). Even trivial tests could point
  you to where the code is getting off tracks.
* Use a class to represent each concept of the problem at hand (this will
  make the above "meaningless class name" problem vanish).


Sorry if that does not help you find the solution directly,
Gilles

Greetings,
Thom


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org

Reply via email to