com.opttek.optquest
Class COptQuestWeightedMultiObjective

java.lang.Object
  extended by com.opttek.optquest.COptQuestObjective
      extended by com.opttek.optquest.COptQuestMultiObjective
          extended by com.opttek.optquest.COptQuestWeightedMultiObjective

public class COptQuestWeightedMultiObjective
extends COptQuestMultiObjective

The COptQuestWeightedMultiObjective allows the user to combine objectives and treat them as a single objective for the optimization. The COptQuestWeightedMultiObjective is defined by adding COptQuestObjective objects to the COptQuestMultipleObjective and assigning a coefficient to each objective. The COptQuestWeightedMultiObjective is then added to the COptQuestOptimization object. The COptQuestWeightedMultiObjective supports two options for evaluating the combination of the objectives. First, the objectives can be combined using the weights. In this case, the COptQuestWeightedMultiObjective is evaluated as minimizing or maximizing the expression coeff1*objective1 + coeff2*objective2 etc. Second, the objectives can be combined as goals to the best objective. In this case, the the COptQuestWeightedMultiObjective is evaluated as maximizing the expression coeff1*percentage of objective 1 goal + coeff2**percentage of objective 2 goal etc.


Nested Class Summary
static class COptQuestWeightedMultiObjective.WEIGHTED_HEURISTIC
           
 
Constructor Summary
COptQuestWeightedMultiObjective()
          Default constructor
COptQuestWeightedMultiObjective(java.lang.String name)
          Constructor that assigns a name to the objective
 
Method Summary
 void AddObjective(COptQuestObjective obj, double coefficient)
          Adds the input sub-objective to the COptQuestWeightedMultiObjective and assigns a coefficient to the sub-objective.
 void AddObjective(COptQuestObjective obj, double coefficient, double goal)
          Adds the input sub-objective to the COptQuestWeightedMultiObjective and assigns a coefficient to the objective and a value representing the goal of the objective.
 void AddObjective(COptQuestObjective obj, double coefficient, double minObj, double maxObj)
          Adds the input sub-objective to the COptQuestMultipleObjective and assigns a coefficient to the objective and values representing the range of the objective.
 double GetCoefficientAt(int index)
          Returns the coefficient at the specified index
 void SetFrontierSearchHeuristic(COptQuestWeightedMultiObjective.WEIGHTED_HEURISTIC heur)
          For internal use - Sets the multi-objective search to use a weighted measure of the objectives or a weighted measure of the goal to find the best solution given those weights.
 void SetObjectiveCoefficient(COptQuestObjective obj, double coefficient)
          Assigns a new coefficient to the input objective.
 void SetObjectiveGoal(COptQuestObjective obj, double minObj, double maxObj)
          Assigns a new objective range for a particular objective.
 
Methods inherited from class com.opttek.optquest.COptQuestMultiObjective
GetObjectiveAt, GetObjectiveCount, GetOptimizationName, GetRequirementAt
 
Methods inherited from class com.opttek.optquest.COptQuestObjective
GetBestFeasible, GetBestValue, GetCurrentFeasible, GetCurrentFeasible, GetCurrentValue, GetCurrentValue, GetName, GetNthBestFeasible, GetNthBestValue, GetReplicationConfidenceLevel, GetReplicationConfidencePercent, GetReplicationConfidenceType, IsLinear, IsMaximize, IsMinimize, SetCurrentValue, SetCurrentValue, SetMaximize, SetMinimize, SetName, SetReplicationConfidence
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

COptQuestWeightedMultiObjective

public COptQuestWeightedMultiObjective()
Default constructor


COptQuestWeightedMultiObjective

public COptQuestWeightedMultiObjective(java.lang.String name)
Constructor that assigns a name to the objective

Parameters:
name -
Method Detail

AddObjective

public void AddObjective(COptQuestObjective obj,
                         double coefficient)
Adds the input sub-objective to the COptQuestWeightedMultiObjective and assigns a coefficient to the sub-objective.

Parameters:
obj -
coefficient -

SetObjectiveGoal

public void SetObjectiveGoal(COptQuestObjective obj,
                             double minObj,
                             double maxObj)
Assigns a new objective range for a particular objective.

Parameters:
obj -
minObj -
maxObj -

AddObjective

public void AddObjective(COptQuestObjective obj,
                         double coefficient,
                         double goal)
Adds the input sub-objective to the COptQuestWeightedMultiObjective and assigns a coefficient to the objective and a value representing the goal of the objective.

Parameters:
obj -
coefficient -
goal -

AddObjective

public void AddObjective(COptQuestObjective obj,
                         double coefficient,
                         double minObj,
                         double maxObj)
Adds the input sub-objective to the COptQuestMultipleObjective and assigns a coefficient to the objective and values representing the range of the objective.

Parameters:
obj -
coefficient -
minObj -
maxObj -

SetFrontierSearchHeuristic

public void SetFrontierSearchHeuristic(COptQuestWeightedMultiObjective.WEIGHTED_HEURISTIC heur)
For internal use - Sets the multi-objective search to use a weighted measure of the objectives or a weighted measure of the goal to find the best solution given those weights.


GetCoefficientAt

public double GetCoefficientAt(int index)
                        throws COptQuestException
Returns the coefficient at the specified index

Parameters:
index -
Returns:
the coefficient at the specified index
Throws:
COptQuestException

SetObjectiveCoefficient

public void SetObjectiveCoefficient(COptQuestObjective obj,
                                    double coefficient)
                             throws COptQuestException
Assigns a new coefficient to the input objective. The objective value for all evaluated solutions is rechecked and a different solution may become the new best solution. You should call COptQuestOptimization.OptimizeAdditional() after changing the coefficients.

Parameters:
obj -
coefficient -
Throws:
COptQuestException