// Real.java
//
// Author:
// Antonio J. Nebro <antonio@lcc.uma.es>
// Juan J. Durillo <durillo@lcc.uma.es>
//
// Copyright (c) 2011 Antonio J. Nebro, Juan J. Durillo
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package jmetal.encodings.variable;
import jmetal.core.Variable;
import jmetal.util.Configuration;
import jmetal.util.JMException;
import jmetal.util.PseudoRandom;
/**
* This class implements a Real value decision encodings.variable
*/
public class Real extends Variable{
/**
* Stores the value of the real encodings.variable
*/
private double value_;
/**
* Stores the lower bound of the real encodings.variable
*/
private double lowerBound_;
/**
* Stores the upper bound of the real encodings.variable
*/
private double upperBound_;
/**
* Constructor
*/
public Real() {
} // Real
/**
* Constructor
* @param lowerBound Lower limit for the encodings.variable
* @param upperBound Upper limit for the encodings.variable
*/
public Real(double lowerBound, double upperBound){
lowerBound_ = lowerBound;
upperBound_ = upperBound;
value_ = PseudoRandom.randDouble()*(upperBound-lowerBound)+lowerBound;
} //Real
/**
* Constructor
* @param lowerBound Lower limit for the encodings.variable
* @param upperBound Upper limit for the encodings.variable
* @param value Value of the variable
*/
public Real(double lowerBound, double upperBound, double value){
lowerBound_ = lowerBound;
upperBound_ = upperBound;
value_ = value ;
} //Real
/**
* Copy constructor.
* @param variable The encodings.variable to copy.
* @throws JMException
*/
public Real(Variable variable) throws JMException{
lowerBound_ = variable.getLowerBound();
upperBound_ = variable.getUpperBound();
value_ = variable.getValue();
} //Real
/**
* Gets the value of the <code>Real</code> encodings.variable.
* @return the value.
*/
public double getValue() {
return value_;
} // getValue
/**
* Sets the value of the encodings.variable.
* @param value The value.
*/
public void setValue(double value) {
value_ = value;
} // setValue
/**
* Returns a exact copy of the <code>Real</code> encodings.variable
* @return the copy
*/
public Variable deepCopy(){
try {
return new Real(this);
} catch (JMException e) {
Configuration.logger_.severe("Real.deepCopy.execute: JMException");
return null ;
}
} // deepCopy
/**
* Gets the lower bound of the encodings.variable.
* @return the lower bound.
*/
public double getLowerBound() {
return lowerBound_;
} //getLowerBound
/**
* Gets the upper bound of the encodings.variable.
* @return the upper bound.
*/
public double getUpperBound() {
return upperBound_;
} // getUpperBound
/**
* Sets the lower bound of the encodings.variable.
* @param lowerBound The lower bound.
*/
public void setLowerBound(double lowerBound) {
lowerBound_ = lowerBound;
} // setLowerBound
/**
* Sets the upper bound of the encodings.variable.
* @param upperBound The upper bound.
*/
public void setUpperBound(double upperBound) {
upperBound_ = upperBound;
} // setUpperBound
/**
* Returns a string representing the object
* @return the string
*/
public String toString(){
return value_+"";
} //toString
} // Real