// Path: src/main/java/org/avmframework/Vector.java
// public class Vector extends AbstractVector {
// 
//   public void addVariable(Variable variable) {
//     variables.add(variable);
//   }
// 
//   public List<Variable> getVariables() {
//     return new ArrayList<>(variables);
//   }
// 
//   public void setVariablesToInitial() {
//     for (Variable var : variables) {
//       var.setValueToInitial();
//     }
//   }
// 
//   public void setVariablesToRandom(RandomGenerator rg) {
//     for (Variable var : variables) {
//       var.setValueToRandom(rg);
//     }
//   }
// 
//   public Vector deepCopy() {
//     Vector copy = new Vector();
//     deepCopyVariables(copy);
//     return copy;
//   }
// }
// 
// Path: src/main/java/org/avmframework/variable/FixedPointVariable.java
// public class FixedPointVariable extends AtomicVariable {
// 
//   protected int precision;
// 
//   public FixedPointVariable(double initialValue, int precision, double min, double max) {
//     super(
//         doubleToInt(initialValue, precision),
//         doubleToInt(min, precision),
//         doubleToInt(max, precision));
//     this.precision = precision;
//     if (min > max) {
//       throw new MinGreaterThanMaxException(min, max);
//     }
//     setValueToInitial();
//   }
// 
//   public double asDouble() {
//     return intToDouble(value, precision);
//   }
// 
//   @Override
//   public FixedPointVariable deepCopy() {
//     FixedPointVariable copy = new FixedPointVariable(initialValue, precision, min, max);
//     copy.value = value;
//     return copy;
//   }
// 
//   @Override
//   public boolean equals(Object obj) {
//     if (this == obj) {
//       return true;
//     }
//     if (!(obj instanceof FixedPointVariable)) {
//       return false;
//     }
//     if (!super.equals(obj)) {
//       return false;
//     }
// 
//     FixedPointVariable that = (FixedPointVariable) obj;
// 
//     return precision == that.precision;
//   }
// 
//   @Override
//   public int hashCode() {
//     int result = super.hashCode();
//     result = 31 * result + precision;
//     return result;
//   }
// 
//   @Override
//   public String toString() {
//     return String.format("%." + precision + "f", asDouble());
//   }
// 
//   private static int doubleToInt(double value, int precision) {
//     return (int) Math.round(value * Math.pow(10, precision));
//   }
// 
//   private static double intToDouble(int value, int precision) {
//     return ((double) value) * Math.pow(10, -precision);
//   }
// }


import org.avmframework.Vector;
import org.avmframework.variable.FixedPointVariable;
import java.util.List;
package org.avmframework.examples.testoptimization;



public class PrioritizationObject {
  static final int INIT = 0;
  static final int MIN = 0;
  static final int MAX = 1;

  // set up the vector to be optimized
// Path: src/main/java/org/avmframework/Vector.java
// public class Vector extends AbstractVector {
// 
//   public void addVariable(Variable variable) {
//     variables.add(variable);
//   }
// 
//   public List<Variable> getVariables() {
//     return new ArrayList<>(variables);
//   }
// 
//   public void setVariablesToInitial() {
//     for (Variable var : variables) {
//       var.setValueToInitial();
//     }
//   }
// 
//   public void setVariablesToRandom(RandomGenerator rg) {
//     for (Variable var : variables) {
//       var.setValueToRandom(rg);
//     }
//   }
// 
//   public Vector deepCopy() {
//     Vector copy = new Vector();
//     deepCopyVariables(copy);
//     return copy;
//   }
// }
// 
// Path: src/main/java/org/avmframework/variable/FixedPointVariable.java
// public class FixedPointVariable extends AtomicVariable {
// 
//   protected int precision;
// 
//   public FixedPointVariable(double initialValue, int precision, double min, double max) {
//     super(
//         doubleToInt(initialValue, precision),
//         doubleToInt(min, precision),
//         doubleToInt(max, precision));
//     this.precision = precision;
//     if (min > max) {
//       throw new MinGreaterThanMaxException(min, max);
//     }
//     setValueToInitial();
//   }
// 
//   public double asDouble() {
//     return intToDouble(value, precision);
//   }
// 
//   @Override
//   public FixedPointVariable deepCopy() {
//     FixedPointVariable copy = new FixedPointVariable(initialValue, precision, min, max);
//     copy.value = value;
//     return copy;
//   }
// 
//   @Override
//   public boolean equals(Object obj) {
//     if (this == obj) {
//       return true;
//     }
//     if (!(obj instanceof FixedPointVariable)) {
//       return false;
//     }
//     if (!super.equals(obj)) {
//       return false;
//     }
// 
//     FixedPointVariable that = (FixedPointVariable) obj;
// 
//     return precision == that.precision;
//   }
// 
//   @Override
//   public int hashCode() {
//     int result = super.hashCode();
//     result = 31 * result + precision;
//     return result;
//   }
// 
//   @Override
//   public String toString() {
//     return String.format("%." + precision + "f", asDouble());
//   }
// 
//   private static int doubleToInt(double value, int precision) {
//     return (int) Math.round(value * Math.pow(10, precision));
//   }
// 
//   private static double intToDouble(int value, int precision) {
//     return ((double) value) * Math.pow(10, -precision);
//   }
// }


// Path: src/main/java/org/avmframework/examples/testoptimization/PrioritizationObject.java
import org.avmframework.Vector;
import org.avmframework.variable.FixedPointVariable;
import java.util.List;

package org.avmframework.examples.testoptimization;



public class PrioritizationObject {
  static final int INIT = 0;
  static final int MIN = 0;
  static final int MAX = 1;

  // set up the vector to be optimized
  public Vector setUpVector(int size) {