/*
* File: MinimizerBasedParameterCostMinimizerTestHarness.java
* Authors: Kevin R. Dixon
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright Jul 9, 2009, Sandia Corporation.
* Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
* license for use of this work by or on behalf of the U.S. Government.
* Export of this program may require a license from the United States
* Government. See CopyrightHistory.txt for complete details.
*
*/
package gov.sandia.cognition.learning.algorithm.regression;
import gov.sandia.cognition.evaluator.Evaluator;
import gov.sandia.cognition.learning.algorithm.SupervisedLearnerTestHarness;
import gov.sandia.cognition.learning.algorithm.gradient.GradientDescendable;
import gov.sandia.cognition.learning.function.cost.SumSquaredErrorCostFunction;
import gov.sandia.cognition.math.matrix.VectorizableVectorFunction;
import gov.sandia.cognition.util.NamedValue;
import gov.sandia.cognition.util.ObjectUtil;
/**
* Unit tests for MinimizerBasedParameterCostMinimizerTestHarness.
*
* @author krdixon
*/
public abstract class MinimizerBasedParameterCostMinimizerTestHarness
extends SupervisedLearnerTestHarness
{
/**
* Tests for class MinimizerBasedParameterCostMinimizerTestHarness.
* @param testName Name of the test.
*/
public MinimizerBasedParameterCostMinimizerTestHarness(
String testName)
{
super(testName);
}
/**
* Tests the constructors of class MinimizerBasedParameterCostMinimizerTestHarness.
*/
public abstract void testConstructors();
@Override
public abstract AbstractMinimizerBasedParameterCostMinimizer<? super GradientDescendable,?> createInstance(
GradientDescendable objectToOptimize);
/**
* Test of clone method, of class AbstractMinimizerBasedParameterCostMinimizer.
*/
public void testClone()
{
System.out.println("clone");
AbstractMinimizerBasedParameterCostMinimizer<?,?> instance =
this.createInstance( new FunctionDiffyANN(3,2,1) );
AbstractMinimizerBasedParameterCostMinimizer<?,?> clone = instance.clone();
assertNotNull( clone );
assertNotSame( instance, clone );
assertNotNull( clone.getObjectToOptimize() );
assertNotSame( instance.getObjectToOptimize(), clone.getObjectToOptimize() );
assertNotNull( clone.getCostFunction() );
assertNotSame( instance.getCostFunction(), clone.getCostFunction() );
}
/**
* Test of createInternalFunction method, of class AbstractMinimizerBasedParameterCostMinimizer.
*/
public void testCreateInternalFunction()
{
System.out.println("createInternalFunction");
AbstractMinimizerBasedParameterCostMinimizer<?,?> instance =
this.createInstance(new FunctionDiffyANN(3,2,1) );
Evaluator<?,?> result = instance.createInternalFunction();
assertNotNull( result );
Evaluator<?,?> clone = ObjectUtil.cloneSmart(result);
assertNotNull( clone );
assertNotSame( result, clone );
}
/**
* Test of getObjectToOptimize method, of class AbstractMinimizerBasedParameterCostMinimizer.
*/
public void testGetObjectToOptimize()
{
System.out.println("getObjectToOptimize");
FunctionDiffyANN f = new FunctionDiffyANN(3,2,1);
AbstractMinimizerBasedParameterCostMinimizer<?,?> instance =
this.createInstance(f);
assertSame( f, instance.getObjectToOptimize() );
}
/**
* Test of setObjectToOptimize method, of class AbstractMinimizerBasedParameterCostMinimizer.
*/
@SuppressWarnings("unchecked")
public void testSetObjectToOptimize()
{
System.out.println("setObjectToOptimize");
FunctionDiffyANN f = new FunctionDiffyANN(3,2,1);
AbstractMinimizerBasedParameterCostMinimizer<? super GradientDescendable,?> instance =
this.createInstance(f);
assertSame( f, instance.getObjectToOptimize() );
FunctionDiffyANN f2 = new FunctionDiffyANN(1,2,3);
instance.setObjectToOptimize(f2);
assertSame( f2, instance.getObjectToOptimize() );
}
/**
* Test of getResult method, of class AbstractMinimizerBasedParameterCostMinimizer.
*/
public void testGetResult()
{
System.out.println("getResult");
FunctionDiffyANN f = new FunctionDiffyANN(3,2,1);
AbstractMinimizerBasedParameterCostMinimizer<?,?> instance = this.createInstance(f);
assertNull( instance.getResult() );
}
/**
* Test of setResult method, of class AbstractMinimizerBasedParameterCostMinimizer.
*/
@SuppressWarnings("unchecked")
public void testSetResult()
{
System.out.println("setResult");
FunctionDiffyANN f = new FunctionDiffyANN(3,2,1);
AbstractMinimizerBasedParameterCostMinimizer<? super GradientDescendable,?> instance = this.createInstance(f);
instance.setResult( f );
assertSame( instance.getResult(), f );
}
/**
* Test of getCostFunction method, of class AbstractMinimizerBasedParameterCostMinimizer.
*/
public void testGetCostFunction()
{
System.out.println("getCostFunction");
AbstractMinimizerBasedParameterCostMinimizer<?,?> instance =
this.createInstance(new FunctionDiffyANN(3,2,1) );
assertNotNull( instance.getCostFunction() );
}
/**
* Test of setCostFunction method, of class AbstractMinimizerBasedParameterCostMinimizer.
*/
@SuppressWarnings("unchecked")
public void testSetCostFunction()
{
System.out.println("setCostFunction");
AbstractMinimizerBasedParameterCostMinimizer<?,?> instance =
this.createInstance(new FunctionDiffyANN(3,2,1) );
assertNotNull( instance.getCostFunction() );
SumSquaredErrorCostFunction sse = new SumSquaredErrorCostFunction();
instance.setCostFunction( sse );
assertSame( sse, instance.getCostFunction() );
}
/**
* Test of getPerformance method, of class AbstractMinimizerBasedParameterCostMinimizer.
*/
public void testGetPerformance()
{
System.out.println("getPerformance");
AbstractMinimizerBasedParameterCostMinimizer<?,?> instance =
this.createInstance(new FunctionDiffyANN(3,2,1) );
@SuppressWarnings("unchecked")
NamedValue<Double> result = instance.getPerformance();
assertNotNull( result );
System.out.println( "Performance: " + result.getName() + " = " + result.getValue() );
}
}