From 567b7ef1b71421fb38d3942de2cfdb3631dd3608 Mon Sep 17 00:00:00 2001 From: Marcel Kronfeld Date: Fri, 20 Nov 2009 10:48:43 +0000 Subject: [PATCH] Gradients for F6 (Rastrigins) --- src/eva2/server/go/problems/F6Problem.java | 19 ++++++++++++++++--- .../strategies/GradientDescentAlgorithm.java | 2 ++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/eva2/server/go/problems/F6Problem.java b/src/eva2/server/go/problems/F6Problem.java index 42830451..72f4edc8 100644 --- a/src/eva2/server/go/problems/F6Problem.java +++ b/src/eva2/server/go/problems/F6Problem.java @@ -11,7 +11,7 @@ import eva2.tools.math.Jama.Matrix; * Time: 13:09:36 * To change this template use File | Settings | File Templates. */ -public class F6Problem extends AbstractProblemDoubleOffset implements InterfaceMultimodalProblem, java.io.Serializable { +public class F6Problem extends AbstractProblemDoubleOffset implements InterfaceMultimodalProblem, InterfaceFirstOrderDerivableProblem, java.io.Serializable { private boolean doRotation = false; private double m_A = 10; @@ -55,7 +55,6 @@ public class F6Problem extends AbstractProblemDoubleOffset implements InterfaceM * @return The m-dimensional output vector. */ public double[] eval(double[] x) { - if (doRotation) { Matrix resVec = rotation.times(new Matrix(x, x.length)); x = resVec.getColumnPackedCopy(); @@ -68,7 +67,21 @@ public class F6Problem extends AbstractProblemDoubleOffset implements InterfaceM } return result; } - + + public double[] getFirstOrderGradients(double[] x) { + if (doRotation) { + Matrix resVec = rotation.times(new Matrix(x, x.length)); + x = resVec.getColumnPackedCopy(); + } + double[] result = new double[x.length]; + for (int j=0; j