Projects >> WWIDesigner >>cbdf62b22330f23f774e96327efe9463eb3c1cd4

Chunk
Conflicting content
import com.wwidesigner.geometry.bind.GeometryBindFactory;
import com.wwidesigner.modelling.InstrumentCalculator;
import com.wwidesigner.modelling.InstrumentTuner;
<<<<<<< HEAD
=======
import com.wwidesigner.modelling.NAFCalculator;
import com.wwidesigner.modelling.SimpleInstrumentTuner;
import com.wwidesigner.modelling.WhistleCalculator;
import com.wwidesigner.optimization.FippleFactorOptimizer;
import com.wwidesigner.optimization.HoleGroupSpacingOptimizer;
import com.wwidesigner.optimization.HolePosAndDiamImpedanceOptimizer;
import com.wwidesigner.optimization.HoleSizeOptimizer;
import com.wwidesigner.optimization.InstrumentOptimizer;
import com.wwidesigner.optimization.InstrumentOptimizer.OptimizerType;
import com.wwidesigner.optimization.SingleTaperHoleGroupingOptimizer;
>>>>>>> 082ced0360e3fae84c90f12369b1aa66315ef7a0
import com.wwidesigner.optimization.run.BaseOptimizationRunner;
import com.wwidesigner.util.BindFactory;
import com.wwidesigner.util.PhysicalParameters;
Solution content
import com.wwidesigner.geometry.bind.GeometryBindFactory;
import com.wwidesigner.modelling.InstrumentCalculator;
import com.wwidesigner.modelling.InstrumentTuner;
import com.wwidesigner.optimization.run.BaseOptimizationRunner;
import com.wwidesigner.util.BindFactory;
import com.wwidesigner.util.PhysicalParameters;
File
StudyModel.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
	public static final String CALCULATOR_CATEGORY_ID = "Instrument calculator";
	public static final String OPTIMIZER_CATEGORY_ID = "Optimizer";
	public static final String CONSTRAINT_CATEGORY_ID = "Constraint set";
<<<<<<< HEAD

	protected List categories;
	
	protected PhysicalParameters params;
=======
	public static final String CALCULATOR_CATEGORY_ID = "Instrument calculator";
	public static final String MULTI_START_CATEGORY_ID = "Multi-start optimization";

	public static final String GORDON_CALC_SUB_CATEGORY_ID = "Gordon calculator";
	public static final String NAF_CALC_SUB_CATEGORY_ID = "NAF calculator";
	public static final String WHISTLE_CALC_SUB_CATEGORY_ID = "Whistle calculator";

	public static final String NO_MULTI_START_SUB_CATEGORY_ID = "No multi-start optimization";
	public static final String VARY_FIRST_MULTI_START_SUB_CATEGORY_ID = "Vary first bound variable";

	public static final String FIPPLE_OPT_SUB_CATEGORY_ID = "Fipple-factor Optimizer";
	public static final String HOLESIZE_OPT_SUB_CATEGORY_ID = "Hole-size Optimizer";
	public static final String NO_GROUP_OPT_SUB_CATEGORY_ID = "No-hole-grouping Optimizer";
	public static final String GROUP_OPT_SUB_CATEGORY_ID = "Hole-grouping Optimizer";
	public static final String TAPER_GROUP_OPT_SUB_CATEGORY_ID = "Taper, hole-grouping Optimizer";

	public static final String HOLE_0_CONS_SUB_CATEGORY_ID = "0 holes";
	public static final String HOLE_6_1_125_SPACING_CONS_SUB_CATEGORY_ID = "6 holes, 1-1/8\" max spacing";
	public static final String HOLE_6_1_25_SPACING_CONS_SUB_CATEGORY_ID = "6 holes, 1-1/4\" max spacing";
	public static final String HOLE_6_1_5_SPACING_CONS_SUB_CATEGORY_ID = "6 holes, 1-1/2\" max spacing";
	public static final String HOLE_7_CONS_SUB_CATEGORY_ID = "7 holes";

	private List categories;
>>>>>>> 082ced0360e3fae84c90f12369b1aa66315ef7a0

	public StudyModel()
	{
Solution content
	public static final String CALCULATOR_CATEGORY_ID = "Instrument calculator";
	public static final String MULTI_START_CATEGORY_ID = "Multi-start optimization";
	public static final String OPTIMIZER_CATEGORY_ID = "Optimizer";
	public static final String CONSTRAINT_CATEGORY_ID = "Constraint set";

	protected List categories;
	
	protected PhysicalParameters params;

	public StudyModel()
	{
File
StudyModel.java
Developer's decision
Manual
Kind of conflict
Attribute
Chunk
Conflicting content
		categories = new ArrayList();
		categories.add(new Category(INSTRUMENT_CATEGORY_ID));
		categories.add(new Category(TUNING_CATEGORY_ID));
<<<<<<< HEAD
=======
		Category calculators = new Category(CALCULATOR_CATEGORY_ID);
		calculators.addSub(GORDON_CALC_SUB_CATEGORY_ID, null);
		calculators.addSub(NAF_CALC_SUB_CATEGORY_ID, null);
		calculators.addSub(WHISTLE_CALC_SUB_CATEGORY_ID, null);
		categories.add(calculators);
		Category multiStart = new Category(MULTI_START_CATEGORY_ID);
		multiStart.addSub(NO_MULTI_START_SUB_CATEGORY_ID, null);
		multiStart.addSub(VARY_FIRST_MULTI_START_SUB_CATEGORY_ID, null);
		// Default to no multi-start
		multiStart.setSelectedSub(NO_MULTI_START_SUB_CATEGORY_ID);
		categories.add(multiStart);
		Category optimizers = new Category(OPTIMIZER_CATEGORY_ID);
		optimizers.addSub(FIPPLE_OPT_SUB_CATEGORY_ID, null);
		optimizers.addSub(NO_GROUP_OPT_SUB_CATEGORY_ID, null);
		optimizers.addSub(HOLESIZE_OPT_SUB_CATEGORY_ID, null);
		optimizers.addSub(GROUP_OPT_SUB_CATEGORY_ID, null);
		optimizers.addSub(TAPER_GROUP_OPT_SUB_CATEGORY_ID, null);
		categories.add(optimizers);
		Category constraints = new Category(CONSTRAINT_CATEGORY_ID);
		constraints.addSub(HOLE_0_CONS_SUB_CATEGORY_ID, null);
		constraints.addSub(HOLE_6_1_125_SPACING_CONS_SUB_CATEGORY_ID, null);
		constraints.addSub(HOLE_6_1_25_SPACING_CONS_SUB_CATEGORY_ID, null);
		constraints.addSub(HOLE_6_1_5_SPACING_CONS_SUB_CATEGORY_ID, null);
		constraints.addSub(HOLE_7_CONS_SUB_CATEGORY_ID, null);
		categories.add(constraints);
>>>>>>> 082ced0360e3fae84c90f12369b1aa66315ef7a0
	}

	public List getCategories()
Solution content
		categories = new ArrayList();
		categories.add(new Category(INSTRUMENT_CATEGORY_ID));
		categories.add(new Category(TUNING_CATEGORY_ID));
	}

	public List getCategories()
File
StudyModel.java
Developer's decision
Version 1
Kind of conflict
Comment
Method invocation
Variable
Chunk
Conflicting content
		return xmlString;
	}

<<<<<<< HEAD
	protected String marshal(Instrument instrument) throws Exception
=======
	private boolean configureMultiStart(BaseOptimizationRunner runner)
	{
		Category multiStartCategory = getCategory(MULTI_START_CATEGORY_ID);
		String multiStartSelected = multiStartCategory.getSelectedSub();
		boolean isMultiStart = false;

		switch (multiStartSelected)
		{
			case NO_MULTI_START_SUB_CATEGORY_ID:
				runner.doMultiStart(false, 1, null, false);
				break;
			case VARY_FIRST_MULTI_START_SUB_CATEGORY_ID:
				runner.doMultiStart(true, 50, new int[] { 0 }, false);
				isMultiStart = true;
				break;
		}

		return isMultiStart;
	}

	private InstrumentCalculator getCalculator()
	{
		Category calculatorCategory = getCategory(CALCULATOR_CATEGORY_ID);
		String calculatorSelected = calculatorCategory.getSelectedSub();
		InstrumentCalculator calculator = null;

		switch (calculatorSelected)
		{
			case GORDON_CALC_SUB_CATEGORY_ID:
				calculator = new GordonCalculator();
				break;
			case NAF_CALC_SUB_CATEGORY_ID:
				calculator = new NAFCalculator();
				break;
			case WHISTLE_CALC_SUB_CATEGORY_ID:
				calculator = new WhistleCalculator();
				break;
		}

		return calculator;
	}

	private String marshal(Instrument instrument) throws Exception
>>>>>>> 082ced0360e3fae84c90f12369b1aa66315ef7a0
	{
		BindFactory binder = GeometryBindFactory.getInstance();
		StringWriter writer = new StringWriter();
Solution content
		return xmlString;
	}

	protected String marshal(Instrument instrument) throws Exception
	{
		BindFactory binder = GeometryBindFactory.getInstance();
		StringWriter writer = new StringWriter();
File
StudyModel.java
Developer's decision
Version 1
Kind of conflict
Method declaration
Method signature
Chunk
Conflicting content
	public PhysicalParameters getParams()
	{
<<<<<<< HEAD
		return params;
=======
		Category constraintCategory = getCategory(CONSTRAINT_CATEGORY_ID);
		String constraint = constraintCategory.getSelectedSub();
		Category optimizerCategory = getCategory(OPTIMIZER_CATEGORY_ID);
		String optimizer = optimizerCategory.getSelectedSub();
		Class optimizerClass = null;
		double[] lowerBound = null;
		double[] upperBound = null;
		InstrumentOptimizer.OptimizerType optimizerType = null;
		switch (optimizer)
		{
			case FIPPLE_OPT_SUB_CATEGORY_ID:
				optimizerClass = FippleFactorOptimizer.class;
				lowerBound = new double[] { 0.2 };
				upperBound = new double[] { 1.5 };
				optimizerType = InstrumentOptimizer.OptimizerType.CMAESOptimizer;
				break;
			case HOLESIZE_OPT_SUB_CATEGORY_ID:
				optimizerClass = HoleSizeOptimizer.class;
				switch (constraint)
				{
					case HOLE_0_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[0];
						upperBound = new double[0];
						optimizerType = InstrumentOptimizer.OptimizerType.CMAESOptimizer;
						break;
					case HOLE_6_1_125_SPACING_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[] { 0.1, 0.15, 0.15, 0.15,
								0.15, 0.15 };
						upperBound = new double[] { 0.5, 0.5, 0.5, 0.5, 0.5,
								0.6 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						break;
					case HOLE_6_1_25_SPACING_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[] { 0.1, 0.15, 0.15, 0.15,
								0.15, 0.15 };
						upperBound = new double[] { 0.5, 0.5, 0.5, 0.5, 0.5,
								0.6 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						break;
					case HOLE_6_1_5_SPACING_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[] { 0.1, 0.15, 0.15, 0.15,
								0.15, 0.15 };
						upperBound = new double[] { 0.5, 0.5, 0.5, 0.5, 0.5,
								0.6 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						break;
					case HOLE_7_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[] { 0.1, 0.1, 0.1, 0.1, 0.1,
								0.05, 0.05 };
						upperBound = new double[] { 0.7, 0.7, 0.7, 0.7, 0.7,
								0.4, 0.4 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						break;
				}
				break;
			case NO_GROUP_OPT_SUB_CATEGORY_ID:
				optimizerClass = HolePosAndDiamImpedanceOptimizer.class;
				switch (constraint)
				{
					case HOLE_0_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[] { 0.25 };
						upperBound = new double[] { 0.4 };
						optimizerType = InstrumentOptimizer.OptimizerType.CMAESOptimizer;
						break;
					case HOLE_6_1_125_SPACING_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[] { 0.25, 0.01, 0.01, 0.01,
								0.01, 0.01, 0.01, 0.1, 0.15, 0.15, 0.15, 0.15,
								0.15 };
						upperBound = new double[] { 0.6, 0.029, 0.029, 0.07,
								0.029, 0.029, 0.3, 0.5, 0.5, 0.5, 0.5, 0.5, 0.6 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						break;
					case HOLE_6_1_25_SPACING_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[] { 0.25, 0.01, 0.01, 0.01,
								0.01, 0.01, 0.01, 0.1, 0.15, 0.15, 0.15, 0.15,
								0.15 };
						upperBound = new double[] { 0.6, 0.032, 0.032, 0.07,
								0.032, 0.032, 0.3, 0.5, 0.5, 0.5, 0.5, 0.5, 0.6 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						break;
					case HOLE_6_1_5_SPACING_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[] { 0.25, 0.01, 0.01, 0.01,
								0.01, 0.01, 0.01, 0.1, 0.15, 0.15, 0.15, 0.15,
								0.15 };
						upperBound = new double[] { 0.6, 0.038, 0.038, 0.07,
								0.038, 0.038, 0.3, 0.5, 0.5, 0.5, 0.5, 0.5, 0.6 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						break;
					case HOLE_7_CONS_SUB_CATEGORY_ID:
						lowerBound = new double[] { 0.2, 0.012, 0.012, 0.012,
								0.012, 0.012, 0.0005, 0.05, 0.1, 0.1, 0.1, 0.1,
								0.1, 0.05, 0.05 };
						upperBound = new double[] { 0.5, 0.05, 0.05, 0.1, 0.05,
								0.05, 0.003, 0.2, 0.7, 0.7, 0.7, 0.7, 0.7, 0.4,
								0.4 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						break;
				}
				break;
			case GROUP_OPT_SUB_CATEGORY_ID:
				switch (constraint)
				{
					case HOLE_0_CONS_SUB_CATEGORY_ID:
						optimizerClass = HolePosAndDiamImpedanceOptimizer.class;
						lowerBound = new double[] { 0.25 };
						upperBound = new double[] { 0.4 };
						optimizerType = InstrumentOptimizer.OptimizerType.CMAESOptimizer;
						break;
					case HOLE_6_1_125_SPACING_CONS_SUB_CATEGORY_ID:
						optimizerClass = HoleGroupSpacingOptimizer.class;
						lowerBound = new double[] { 0.2, 0.012, 0.012, 0.012,
								0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
						upperBound = new double[] { 0.8, 0.029, 0.1, 0.029,
								0.3, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						((HoleGroupSpacingOptimizationRunnner) runner)
								.setHoleGroups(new int[][] { { 0, 1, 2 },
										{ 3, 4, 5 } });
						break;
					case HOLE_6_1_25_SPACING_CONS_SUB_CATEGORY_ID:
						optimizerClass = HoleGroupSpacingOptimizer.class;
						lowerBound = new double[] { 0.2, 0.012, 0.012, 0.012,
								0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
						upperBound = new double[] { 0.8, 0.032, 0.1, 0.032,
								0.3, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						((HoleGroupSpacingOptimizationRunnner) runner)
								.setHoleGroups(new int[][] { { 0, 1, 2 },
										{ 3, 4, 5 } });
						break;
					case HOLE_6_1_5_SPACING_CONS_SUB_CATEGORY_ID:
						optimizerClass = HoleGroupSpacingOptimizer.class;
						lowerBound = new double[] { 0.2, 0.012, 0.012, 0.012,
								0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
						upperBound = new double[] { 0.8, 0.038, 0.1, 0.038,
								0.3, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						((HoleGroupSpacingOptimizationRunnner) runner)
								.setHoleGroups(new int[][] { { 0, 1, 2 },
										{ 3, 4, 5 } });
						break;
					case HOLE_7_CONS_SUB_CATEGORY_ID:
						optimizerClass = HoleGroupSpacingOptimizer.class;
						lowerBound = new double[] { 0.2, 0.012, 0.012, 0.012,
								0.0005, 0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.05,
								0.05 };
						upperBound = new double[] { 0.5, 0.05, 0.05, 0.1,
								0.003, 0.2, 0.7, 0.7, 0.7, 0.7, 0.7, 0.4, 0.4 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						((HoleGroupSpacingOptimizationRunnner) runner)
								.setHoleGroups(new int[][] { { 0, 1, 2 },
										{ 3, 4, 5 }, { 6 } });
						break;
				}
				break;
			case TAPER_GROUP_OPT_SUB_CATEGORY_ID:
				switch (constraint)
				{
					case HOLE_0_CONS_SUB_CATEGORY_ID:
						optimizerClass = HolePosAndDiamImpedanceOptimizer.class;
						lowerBound = new double[] { 0.25 };
						upperBound = new double[] { 0.4 };
						optimizerType = InstrumentOptimizer.OptimizerType.CMAESOptimizer;
						break;
					case HOLE_6_1_125_SPACING_CONS_SUB_CATEGORY_ID:
						optimizerClass = SingleTaperHoleGroupingOptimizer.class;
						lowerBound = new double[] { 0.2, 0.01, 0.01, 0.01,
								0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.5, 0.0,
								0.0 };
						upperBound = new double[] { 0.8, 0.029, 0.1, 0.029,
								0.3, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 2.0, 0.8,
								0.8 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						((HoleGroupSpacingOptimizationRunnner) runner)
								.setHoleGroups(new int[][] { { 0, 1, 2 },
										{ 3, 4, 5 } });
						break;
					case HOLE_6_1_25_SPACING_CONS_SUB_CATEGORY_ID:
						optimizerClass = SingleTaperHoleGroupingOptimizer.class;
						lowerBound = new double[] { 0.2, 0.01, 0.01, 0.01,
								0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.5, 0.0,
								0.0 };
						upperBound = new double[] { 0.8, 0.032, 0.1, 0.032,
								0.3, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 2.0, 0.8,
								0.8 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						((HoleGroupSpacingOptimizationRunnner) runner)
								.setHoleGroups(new int[][] { { 0, 1, 2 },
										{ 3, 4, 5 } });
						break;
					case HOLE_6_1_5_SPACING_CONS_SUB_CATEGORY_ID:
						optimizerClass = SingleTaperHoleGroupingOptimizer.class;
						lowerBound = new double[] { 0.2, 0.01, 0.01, 0.01,
								0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.5, 0.0,
								0.0 };
						upperBound = new double[] { 0.8, 0.038, 0.1, 0.038,
								0.3, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 2.0, 0.8,
								0.8 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						((HoleGroupSpacingOptimizationRunnner) runner)
								.setHoleGroups(new int[][] { { 0, 1, 2 },
										{ 3, 4, 5 } });
						break;
					case HOLE_7_CONS_SUB_CATEGORY_ID:
						optimizerClass = SingleTaperHoleGroupingOptimizer.class;
						lowerBound = new double[] { 0.2, 0.012, 0.012, 0.012,
								0.0005, 0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.05,
								0.05, 0.5, 0.0, 0.0 };
						upperBound = new double[] { 0.5, 0.032, 0.05, 0.032,
								0.003, 0.2, 0.7, 0.7, 0.7, 0.7, 0.7, 0.4, 0.4,
								2.0, 0.5, 0.5 };
						optimizerType = InstrumentOptimizer.OptimizerType.BOBYQAOptimizer;
						((HoleGroupSpacingOptimizationRunnner) runner)
								.setHoleGroups(new int[][] { { 0, 1, 2 },
										{ 3, 4, 5 }, { 6 } });
						break;
				}
				break;
		}

		setRunnerConstraints(runner, optimizerClass, optimizerType, lowerBound,
				upperBound);
	}

	protected void setRunnerConstraints(BaseOptimizationRunner runner,
			Class optimizerClass,
			OptimizerType optimizerType, double[] lowerBound,
			double[] upperBound)
	{
		runner.setOptimizerClass(optimizerClass);
		runner.setOptimizerType(optimizerType);
		runner.setLowerBound(lowerBound);
		runner.setUpperBound(upperBound);

		int numberOfDimensions = lowerBound == null ? 0 : lowerBound.length;
		boolean isMultiStart = configureMultiStart(runner);
		int numberOfInterpolations = determineInterpolations(optimizerType,
				numberOfDimensions, isMultiStart);
		runner.setNumberOfInterpolationPoints(numberOfInterpolations);
	}

	protected int determineInterpolations(OptimizerType optimizerType,
			int numberOfDimensions, boolean isMultiStart)
	{
		int numberOfInterpolations = 0; // The default value for CMAES

		if (OptimizerType.BOBYQAOptimizer.equals(optimizerType))
		{
			if (isMultiStart)
			{
				numberOfInterpolations = 2 * numberOfDimensions;
			}
			else
			{
				numberOfInterpolations = (numberOfDimensions + 1)
						* (numberOfDimensions + 2) / 2;
			}
		}

		return numberOfInterpolations;
>>>>>>> 082ced0360e3fae84c90f12369b1aa66315ef7a0
	}

	public void setParams(PhysicalParameters params)
Solution content
	public PhysicalParameters getParams()
	{
		return params;
	}

	public void setParams(PhysicalParameters params)
File
StudyModel.java
Developer's decision
Version 1
Kind of conflict
Attribute
Comment
If statement
Method declaration
Method invocation
Method signature
Return statement
Switch statement
Variable
Chunk
Conflicting content
	public void setParams(PhysicalParameters params)
	{
<<<<<<< HEAD
		this.params = params;
=======
		String selectedOptimizer = getCategory(OPTIMIZER_CATEGORY_ID)
				.getSelectedSub();
		String selectedConstraint = getCategory(CONSTRAINT_CATEGORY_ID)
				.getSelectedSub();

		BaseOptimizationRunner runner = null;

		if (HOLE_0_CONS_SUB_CATEGORY_ID.equals(selectedConstraint))
		{
			runner = new BaseOptimizationRunner();
		}
		else if (GROUP_OPT_SUB_CATEGORY_ID.equals(selectedOptimizer))
		{
			runner = new HoleGroupSpacingOptimizationRunnner();
		}
		else if (TAPER_GROUP_OPT_SUB_CATEGORY_ID.equals(selectedOptimizer))
		{
			runner = new HoleGroupSpacingOptimizationRunnner();
		}
		else
		{
			runner = new BaseOptimizationRunner();
		}

		return runner;
>>>>>>> 082ced0360e3fae84c90f12369b1aa66315ef7a0
	}

	// Methods to create objects that will perform this study,
Solution content
	public void setParams(PhysicalParameters params)
	{
		this.params = params;
	}

	// Methods to create objects that will perform this study,
File
StudyModel.java
Developer's decision
Version 1
Kind of conflict
Attribute
If statement
Method invocation
Return statement
Variable