// Path: src/jmetal/encodings/variable/Binary.java
// public class Binary extends Variable {
//   
//   /**
//    * Stores the bits constituting the binary string. It is
//    * implemented using a BitSet object
//    */
//   public BitSet bits_;
//   
//   /**
//    * Store the length of the binary string
//    */
//   protected int numberOfBits_;
//         
//   /**
//    * Default constructor.
//    */
//   public Binary() {       
//   } //Binary
//   
//   /**
//    *  Constructor
//    *  @param numberOfBits Length of the bit string
//    */
//   public Binary(int numberOfBits){   
//     numberOfBits_ = numberOfBits;
// 
//     bits_ = new BitSet(numberOfBits_);      
//     for (int i = 0; i < numberOfBits_; i++){
//       if (PseudoRandom.randDouble() < 0.5) {
//         bits_.set(i,true);
//       } else {
//         bits_.set(i,false);                      
//       }
//     }
//   } //Binary
//   
//   /**
//    * Copy constructor.
//    * @param variable The Binary encodings.variable to copy.
//    */
//   public Binary(Binary variable){
//     numberOfBits_ = variable.numberOfBits_;
//         
//     bits_ = new BitSet(numberOfBits_);
//     for (int i = 0; i < numberOfBits_; i++) {
//       bits_.set(i,variable.bits_.get(i));      
//     }
//   } //Binary
// 
//   /**
//    * This method is intended to be used in subclass of <code>Binary</code>, 
//    * for examples the classes, <code>BinaryReal</code> and <code>BinaryInt<codes>. 
//    * In this classes, the method allows to decode the 
//    * value enconded in the binary string. As generic variables do not encode any
//    * value, this method do noting 
//    */
//   public void decode() {
//     //do nothing
//   } //decode
//   
//   /** 
//    * Creates an exact copy of a Binary object
//    * @return An exact copy of the object.
//    **/
//   public Variable deepCopy() {
//     return new Binary(this);
//   } //deepCopy
// 
//   /**
//    * Returns the length of the binary string.
//    * @return The length
//    */
//   public int getNumberOfBits(){
//     return numberOfBits_;
//   } //getNumberOfBits
//   
//   /**
//    * Returns the value of the ith bit.
//    * @param bit The bit to retrieve
//    * @return The ith bit
//    */
//   public boolean getIth(int bit){
//     return bits_.get(bit);
//   } //getNumberOfBits
// 
//   /**
//    * Sets the value of the ith bit.
//    * @param bit The bit to set
//    */
//   public void setIth(int bit, boolean value){
//     bits_.set(bit, value) ;
//   } //getNumberOfBits
// 
//   
//  /**
//   * Obtain the hamming distance between two binary strings
//   * @param other The binary string to compare
//   * @return The hamming distance
//   */
//   public int hammingDistance(Binary other) {
//     int distance = 0;
//     int i = 0;
//     while (i < bits_.size()) {
//       if (bits_.get(i) != other.bits_.get(i)) {
//         distance++;
//       }
//       i++;
//     }
//     return distance;
//   } // hammingDistance
// 
//  /**
//   *  
//   */
//   public String toString() {
//     String result ;
//     
//     result = "" ;
//     for (int i = 0; i < numberOfBits_; i ++)
//       if (bits_.get(i))
//         result = result + "1" ;
//       else
//         result = result + "0" ;
//         
//     return result ;
//   } // toString
// } // Binary


import jmetal.encodings.variable.Binary;
import java.io.Serializable;
	public SolutionType getType() {
		return type_;
	} // getType

	/**
	 * Returns the aggregative value of the solution
	 * 
	 * @return The aggregative value.
	 */
	public double getAggregativeValue() {
		double value = 0.0;
		for (int i = 0; i < numberOfObjectives(); i++) {
			value += getObjective(i);
		}
		return value;
	} // getAggregativeValue
	


	/**
	 * Returns the number of bits of the chromosome in case of using a binary
	 * representation
	 * 
	 * @return The number of bits if the case of binary variables, 0 otherwise
	 *         This method had a bug which was fixed by Rafael Olaechea
	 */
	public int getNumberOfBits() {
		int bits = 0;

		for (int i = 0; i < variable_.length; i++)
// Path: src/jmetal/encodings/variable/Binary.java
// public class Binary extends Variable {
//   
//   /**
//    * Stores the bits constituting the binary string. It is
//    * implemented using a BitSet object
//    */
//   public BitSet bits_;
//   
//   /**
//    * Store the length of the binary string
//    */
//   protected int numberOfBits_;
//         
//   /**
//    * Default constructor.
//    */
//   public Binary() {       
//   } //Binary
//   
//   /**
//    *  Constructor
//    *  @param numberOfBits Length of the bit string
//    */
//   public Binary(int numberOfBits){   
//     numberOfBits_ = numberOfBits;
// 
//     bits_ = new BitSet(numberOfBits_);      
//     for (int i = 0; i < numberOfBits_; i++){
//       if (PseudoRandom.randDouble() < 0.5) {
//         bits_.set(i,true);
//       } else {
//         bits_.set(i,false);                      
//       }
//     }
//   } //Binary
//   
//   /**
//    * Copy constructor.
//    * @param variable The Binary encodings.variable to copy.
//    */
//   public Binary(Binary variable){
//     numberOfBits_ = variable.numberOfBits_;
//         
//     bits_ = new BitSet(numberOfBits_);
//     for (int i = 0; i < numberOfBits_; i++) {
//       bits_.set(i,variable.bits_.get(i));      
//     }
//   } //Binary
// 
//   /**
//    * This method is intended to be used in subclass of <code>Binary</code>, 
//    * for examples the classes, <code>BinaryReal</code> and <code>BinaryInt<codes>. 
//    * In this classes, the method allows to decode the 
//    * value enconded in the binary string. As generic variables do not encode any
//    * value, this method do noting 
//    */
//   public void decode() {
//     //do nothing
//   } //decode
//   
//   /** 
//    * Creates an exact copy of a Binary object
//    * @return An exact copy of the object.
//    **/
//   public Variable deepCopy() {
//     return new Binary(this);
//   } //deepCopy
// 
//   /**
//    * Returns the length of the binary string.
//    * @return The length
//    */
//   public int getNumberOfBits(){
//     return numberOfBits_;
//   } //getNumberOfBits
//   
//   /**
//    * Returns the value of the ith bit.
//    * @param bit The bit to retrieve
//    * @return The ith bit
//    */
//   public boolean getIth(int bit){
//     return bits_.get(bit);
//   } //getNumberOfBits
// 
//   /**
//    * Sets the value of the ith bit.
//    * @param bit The bit to set
//    */
//   public void setIth(int bit, boolean value){
//     bits_.set(bit, value) ;
//   } //getNumberOfBits
// 
//   
//  /**
//   * Obtain the hamming distance between two binary strings
//   * @param other The binary string to compare
//   * @return The hamming distance
//   */
//   public int hammingDistance(Binary other) {
//     int distance = 0;
//     int i = 0;
//     while (i < bits_.size()) {
//       if (bits_.get(i) != other.bits_.get(i)) {
//         distance++;
//       }
//       i++;
//     }
//     return distance;
//   } // hammingDistance
// 
//  /**
//   *  
//   */
//   public String toString() {
//     String result ;
//     
//     result = "" ;
//     for (int i = 0; i < numberOfBits_; i ++)
//       if (bits_.get(i))
//         result = result + "1" ;
//       else
//         result = result + "0" ;
//         
//     return result ;
//   } // toString
// } // Binary


// Path: src/jmetal/core/Solution.java
import jmetal.encodings.variable.Binary;
import java.io.Serializable;

	public SolutionType getType() {
		return type_;
	} // getType

	/**
	 * Returns the aggregative value of the solution
	 * 
	 * @return The aggregative value.
	 */
	public double getAggregativeValue() {
		double value = 0.0;
		for (int i = 0; i < numberOfObjectives(); i++) {
			value += getObjective(i);
		}
		return value;
	} // getAggregativeValue
	


	/**
	 * Returns the number of bits of the chromosome in case of using a binary
	 * representation
	 * 
	 * @return The number of bits if the case of binary variables, 0 otherwise
	 *         This method had a bug which was fixed by Rafael Olaechea
	 */
	public int getNumberOfBits() {
		int bits = 0;

		for (int i = 0; i < variable_.length; i++)
			if ((variable_[i].getVariableType() == jmetal.encodings.variable.Binary.class)