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