package org.jactr.core.production.six;
/*
* default logging
*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jactr.core.model.IModel;
import org.jactr.core.production.IProduction;
import org.jactr.core.production.basic.BasicSubsymbolicProduction;
import org.jactr.core.utils.parameter.ParameterHandler;
public class DefaultSubsymbolicProduction6 extends BasicSubsymbolicProduction
implements ISubsymbolicProduction6
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(DefaultSubsymbolicProduction6.class);
private double _reward = Double.NaN;
private double _utility = 0;
private double _expectedUtility = Double.NaN;
public DefaultSubsymbolicProduction6(IProduction parent, IModel model)
{
super(parent, model);
}
protected void setDefaultParameters()
{
super.setDefaultParameters();
setReward(Double.NaN);
setUtility(0);
setExpectedUtility(Double.NaN);
}
public double getExpectedUtility()
{
return _expectedUtility;
}
public void setExpectedUtility(double utility)
{
_expectedUtility = utility;
}
public double getReward()
{
return _reward;
}
public double getUtility()
{
return _utility;
}
public void setReward(double reward)
{
_reward = reward;
/*
* TODO propogate the event!
*/
}
public void setUtility(double utility)
{
_utility = utility;
/*
* TODO propogate the event
*/
}
public Collection<String> getSetableParameters()
{
Collection<String> rtn = new ArrayList<String>(Arrays.asList(new String[] {
EXPECTED_UTILITY_PARAM, UTILITY_PARAM, REWARD_PARAM }));
rtn.addAll(super.getSetableParameters());
return rtn;
}
public String getParameter(String key)
{
if(UTILITY_PARAM.equalsIgnoreCase(key))
return ""+getUtility();
else if(EXPECTED_UTILITY_PARAM.equalsIgnoreCase(key))
return ""+getExpectedUtility();
else if(REWARD_PARAM.equalsIgnoreCase(key))
return ""+getReward();
return super.getParameter(key);
}
public void setParameter(String key, String value)
{
if(UTILITY_PARAM.equalsIgnoreCase(key))
setUtility(ParameterHandler.numberInstance().coerce(value).doubleValue());
else if(EXPECTED_UTILITY_PARAM.equalsIgnoreCase(key))
setExpectedUtility(ParameterHandler.numberInstance().coerce(value).doubleValue());
else if(REWARD_PARAM.equalsIgnoreCase(key))
setReward(ParameterHandler.numberInstance().coerce(value).doubleValue());
else super.setParameter(key, value);
}
}