Package com.opttek.optquest
Class COptQuestUserControlledOptimization
java.lang.Object
com.opttek.optquest.COptQuestUserControlledOptimization
The COptQuestUserControlledOptimization class searches for solutions to problems using a
'black box' approach. It incorporates metaheuristics to guide its search
algorithms toward better solutions. This approach remembers which solutions
worked well and recombines them into new, better solutions.
The simplest optimization problem contains decision variables, an objective
function and the goal of the optimization (to either minimize or maximize)
-
Constructor Summary
ConstructorDescriptionThe default constructor.COptQuestUserControlledOptimization
(int license) Constructor that accepts the license ID as input. -
Method Summary
Modifier and TypeMethodDescriptionvoid
AddConstraint
(COptQuestStringConstraint constraint) Adds the string constraint defined by the input parameter to the optimization.void
AddObjective
(COptQuestObjective objective) Adds the objective defined by the input parameter to the optimization problem.void
Adds the permutation group defined by the input parameter to the optimization problem.void
Adds a Selection Group to the optimization.void
AddSuggestedSolution
(COptQuestSolution suggSol) The input solution is added to the set of suggested solutions.void
AddVariable
(COptQuestVariable variable) Adds the variable defined by the input parameter to the optimization.void
Call BeginOptimization() defining variables, constraints and an objective.void
Use this method to check an optimization for errors.void
Closes the xml nodes in the log setup file and then closes the file.void
Creates a new solution that can be used to create a suggested solution.void
Call this method when you no longer want to get solutions for evaluation.Returns the solution that has the best objective value.Use this method to update UI components of your application.GetIterationSolution
(int iteration) Returns the solution that was generated at the iteration specified by the input parameter.int
Returns the maximum number of replications set by the call to SetMaximumReplications().int
Returns the minimum number of replications set by the call to SetMinimumReplications().GetName()
Returns the name assigned to the optimization objectCall this method to get the next solution for evaluation.GetNthBestSolution
(int nth) Returns the nth best solution where solutions are ordered from best to worst based on the objective value.int
Returns the number of solutions that have been evaluated.int
Returns the number of solutions that satisfied all linear and non-linear constraints.int
Returns the number of solutions that violated a non-linear constraint.int
Returns the number of solutions that were rejected by calling COptQuestSolution.RejectSolution();int
Returns the number of COptQuestStringConstraint objects added to the optimization.Returns the COptQuestObjective object added by the AddObjective() methodProvides all solutions in the current pattern frontier in no particular order.Provides all solutions in the current pattern frontier sorted by the specified objective.GetStringConstraint
(int index) Returns the string constraint at the index specified by the input parameter.int
Returns the reason the optimization terminated.boolean
Returns true if general replication processing is turned on.GetVariable
(String Name) Given a variable name, return the COptQuestVariable object.Returns an array of all variables that have been added to the optimization using the AddVariable()method.static String
Returns the version number of the OptQuest Engine.boolean
Returns true if all variables in the optimization problem can be enumerated.void
LogSetup() logs calls to the COptQuestOptimization class in an xml formatted file.void
LogSolutions
(String logFilePath) LogSolutions() logs all solutions in a csv formatted file.void
ReturnEvaluatedSolution
(COptQuestSolution solution) Call when a COptQuestSolution has completed evaluation.void
SetGenerateNewSolutions
(boolean onOff) If you only want OptQuest to call Evaluate() with suggested solutions, call SetGenerateNewSolutions(false).void
SetLicenseID
(int license) Used to set the license ID.void
SetMaximumReplications
(int maximum) Sets the maximum number of replications to be run when running general replication.void
SetMinimumReplications
(int minimum) Sets the minimum number of replications to be run when running general replication.void
Assigns a name to the optimization problem.void
SetUseReplications
(boolean Value) Use to turn on the general replication algorithm.
-
Constructor Details
-
COptQuestUserControlledOptimization
public COptQuestUserControlledOptimization()The default constructor. The license ID must be set by theSetLicenseID(int)
method. -
COptQuestUserControlledOptimization
public COptQuestUserControlledOptimization(int license) Constructor that accepts the license ID as input.- Parameters:
license
- - the license ID assigned by OptTek Systems, Inc.
-
-
Method Details
-
BeginOptimization
Call BeginOptimization() defining variables, constraints and an objective. OptQuest will validate the model and begin solution generation. If there is an error in the model, a COptQuestException will be thrown.- Throws:
COptQuestException
- if a problem is encountered
-
GetNextSolution
Call this method to get the next solution for evaluation. If solutions cannot be generated, null is returned. This may happen if all solutions can be enumerated and they have all been returned, or if the model is tightly constrained and OptQuest cannot generate new solutions.- Returns:
- - a solution to be evaluated or null if no solutions can be created.
- Throws:
COptQuestException
- if a problem is encountered
-
ReturnEvaluatedSolution
Call when a COptQuestSolution has completed evaluation. All COptQuestUserControlledVariables and COptQuestSingleObjectives should have values set.- Parameters:
solution
- completed solution- Throws:
COptQuestException
- if a problem is encountered
-
EndOptimization
public void EndOptimization()Call this method when you no longer want to get solutions for evaluation. -
GetCompletedSolutions
Use this method to update UI components of your application. It will return a list of solutions that have completed evaluation since the last time this method was called.- Returns:
- - list of solutions that have completed evaluation.
-
GetVersion
Returns the version number of the OptQuest Engine.- Returns:
- the version number as a string.
-
SetName
Assigns a name to the optimization problem. -
GetName
Returns the name assigned to the optimization object -
GetNumberofCompletedIterations
public int GetNumberofCompletedIterations()Returns the number of solutions that have been evaluated. The count includes feasible solutions, infeasible solutions and rejected solutions. -
AddVariable
Adds the variable defined by the input parameter to the optimization. If the user is naming variables, the name must be unique, and it cannot be an OptQuest keyword such as a math function name.- Throws:
COptQuestException
- if a problem is encountered
-
AddSelectionGroup
Adds a Selection Group to the optimization. Selection groups allow a variable that can be turned "off" which indicates that other variables will not be used in the evaluation.- Parameters:
group
- the selection group to add
-
AddObjective
Adds the objective defined by the input parameter to the optimization problem.- Parameters:
objective
- the objective to add- Throws:
COptQuestException
- if an objective has already been defined
-
GetObjective
Returns the COptQuestObjective object added by the AddObjective() method -
AddConstraint
Adds the string constraint defined by the input parameter to the optimization. If an optimization problem contains multiple constraints, the constraints are ANDed together. If a solution is feasible, it satisfies every constraint in the optimization.- Parameters:
constraint
- the constraint to add- Throws:
COptQuestException
- if the string expression is empty.
-
AddSuggestedSolution
The input solution is added to the set of suggested solutions. If the optimization has not started, the suggested solution will be evaluated first If the optimization is running, the suggested solution will be one of the next solutions to be evaluated. To create a suggested solution, callCreateSolution()
. Use theSetVariableValue(COptQuestVariable, double)
method to set a value for each decision variable. Note: All decision variables must be added to the optimization problem before adding a suggested solution. Note: If multiple suggested solutions are added they will be returned for evaluation in reverse order (last in, first out). Note: If multiple suggested solutions are added, OptQuest may return additional solutions for evaluation between the suggested solutions specified.- Parameters:
suggSol
- the suggested solution to add
-
AddPermutationGroup
Adds the permutation group defined by the input parameter to the optimization problem.- Parameters:
group
- the permutation group to add
-
SetGenerateNewSolutions
public void SetGenerateNewSolutions(boolean onOff) If you only want OptQuest to call Evaluate() with suggested solutions, call SetGenerateNewSolutions(false). The default condition is to call Evaluate() with all suggested solutions and then with OptQuest generated solutions. -
CheckOptimization
Use this method to check an optimization for errors. A COptQuestException is thrown if an error is found. The exception identifies the type of error.- Throws:
COptQuestException
- if a problem is encountered
-
SetLicenseID
public void SetLicenseID(int license) Used to set the license ID. License IDs are assigned by OptTek Systems, Inc.- Parameters:
license
- - license id
-
SetUseReplications
public void SetUseReplications(boolean Value) Use to turn on the general replication algorithm. Your Evaluate() method will be called to evaluate each replication of a solution. -
GetUseReplications
public boolean GetUseReplications()Returns true if general replication processing is turned on. Returns false if it is not.- Returns:
- true if general replication processing is turned on.
-
SetMinimumReplications
Sets the minimum number of replications to be run when running general replication. The default is 2 replication and the minimum value allowed is 2.- Parameters:
minimum
- the minimum number of replications to be run before stopping replication processing.- Throws:
COptQuestException
- if replication value is less than 2
-
GetMinimumReplications
public int GetMinimumReplications()Returns the minimum number of replications set by the call to SetMinimumReplications().- Returns:
- the minimum number of replications to be run before stopping.
-
SetMaximumReplications
public void SetMaximumReplications(int maximum) Sets the maximum number of replications to be run when running general replication. If you are running with confidence type 1 or 2, you can set the maximum to -1 which means we will run replications until the confidence criteria is met.- Parameters:
maximum
- the maximum number of replications to be run before stopping replication processing.
-
GetMaximumReplications
public int GetMaximumReplications()Returns the maximum number of replications set by the call to SetMaximumReplications().- Returns:
- the maximum number of replications to be run
-
LogSetup
LogSetup() logs calls to the COptQuestOptimization class in an xml formatted file. This is used for debugging optimization setup problems.- Parameters:
logFilePath
- path to a file that will contain the logging info- Throws:
IOException
- if there is a problem with the file path
-
CloseLogSetupFile
public void CloseLogSetupFile()Closes the xml nodes in the log setup file and then closes the file. Use in conjunction with LogSetup() to have a properly formatted XML file. -
LogSolutions
LogSolutions() logs all solutions in a csv formatted file. This is used for debugging solution generation.- Parameters:
logFilePath
- path to a file that will contain the solution log- Throws:
IOException
- if there is a problem with the file path
-
CloseSolutionLog
public void CloseSolutionLog() -
GetVariable
Given a variable name, return the COptQuestVariable object.- Parameters:
Name
- variable name- Returns:
- COptQuestVariable object with that name
-
GetVariables
Returns an array of all variables that have been added to the optimization using the AddVariable()method.- Returns:
- array of COptQuestVariable objects
-
GetNumberOfStringConstraints
public int GetNumberOfStringConstraints()Returns the number of COptQuestStringConstraint objects added to the optimization.- Returns:
- number of COptQuestStringConstraint objects
-
GetStringConstraint
Returns the string constraint at the index specified by the input parameter.- Parameters:
index
- index of the constraint- Returns:
- the string constraint at the specified index
-
GetBestSolution
Returns the solution that has the best objective value. Returns null if no best solution exists.- Returns:
- the best solution
-
GetNthBestSolution
Returns the nth best solution where solutions are ordered from best to worst based on the objective value. If the input parameter is 1, the best solution is returned, If the input parameter is 2, the second-best solution etc. If the nth best solution doesn't exist, null is returned.- Parameters:
nth
- - 1 based number of the solution to return- Returns:
- the solution that produced the Nth best objective value
-
GetIterationSolution
Returns the solution that was generated at the iteration specified by the input parameter. Returns null if the solution doesn't exist. -
GetNumberOfFeasibleSolutions
public int GetNumberOfFeasibleSolutions()Returns the number of solutions that satisfied all linear and non-linear constraints. -
GetNumberOfInfeasibleSolutions
public int GetNumberOfInfeasibleSolutions()Returns the number of solutions that violated a non-linear constraint. -
GetNumberOfRejectedSolutions
public int GetNumberOfRejectedSolutions()Returns the number of solutions that were rejected by calling COptQuestSolution.RejectSolution(); -
IsEnumerable
public boolean IsEnumerable()Returns true if all variables in the optimization problem can be enumerated. Note that if the combination of the variables results in a large solution space, OptQuest will not enumerate all possible solutions.- Returns:
- true if all the variables in the problem can be enumerated.
-
CreateSolution
Creates a new solution that can be used to create a suggested solution. The variable values are initialized to the last suggested value or the midpoint of the lower and upper bound if no solution has been suggested.- Returns:
- a new solution
- Throws:
COptQuestException
- if a problem is encountered
-
GetPatternFrontier
Provides all solutions in the current pattern frontier in no particular order.- Returns:
- An unsorted ArrayList<COptQuestSolution> of solutions on the pattern frontier.
-
GetPatternFrontier
public ArrayList<COptQuestSolution> GetPatternFrontier(COptQuestSingleObjective obj) throws COptQuestException Provides all solutions in the current pattern frontier sorted by the specified objective.- Parameters:
obj
- the objective to sort by- Returns:
- A sorted ArrayList<COptQuestSolution> of solutions on the pattern frontier.
- Throws:
COptQuestException
- if the objective is not found
-
GetTerminationReason
public int GetTerminationReason()Returns the reason the optimization terminated.- TERM_NOTSTARTED=0
- The optimization has not been started.
- TERM_RUNNING=1
- The optimization is still running.
- TERM_LP=3
- The optimization was solved using an Linear/Integer/Mixed Integer Program.
- TERM_AUTOSTOP=4
- The optimization stopped due to the Auto Stop feature
- TERM_OPTIMALFOUND=5
- The optimal solution was found.
- TERM_MAXITERATIONS=6
- The optimization stopped when the maximum number of iterations was reached.
- TERM_MAXTIME=7
- The optimization stopped when the maximum time was reached.
- TERM_USERSTOPPED=8
- The optimization was stopped by the user.
- TERM_EXCEPTION=10
- The optimization stopped due to an exception.
- TERM_INFEASIBLE=12
- There are no solutions that satisfy the constraints.
- TERM_CANNOTGENERATE=13
- New (different) solutions cannot be generated.
- Returns:
- termination reason
-