# optimize Method

Performs an optimization on the model.

This is a two-step process:
• First create the optimizer with the problem definition.
• Second, instruct the optimizer to optimize the specified system to a desired accuracy.

## Example

This is the optimize method for the FourBar class.
def optimize (self):

# Define the cost functions in a list – there are 3 of these
obj = [self.a2x, self.a2y, self.a2psi]

# Define the weights for the cost functions in a list – there are 3 of these
wt  = [1,1,1]

# Define the list of responses consist of inequality constraints – there are 6 of these
ineq = [self.cons1, self.cons2, self.cons3, self.cons4, self.cons5, self.cons6]

# Create the optimizer
opt = Optimizer ( label           = "Optimize RMS2",  # Label
objective       = obj,              # Objectives
weights         = wt,               # Weights
type            = "KINEMATICS",     # Simulation Type
end             = 2,                # End Time
dtout           = 0.01,             # No. of steps
plot            = True,             # Display plots
ineqConstraints = ineq              # Inequality constraints
)

# Now perform the optimization
x = opt.optimize ()

# Return the result
return x

## Example

This example shows how the simulate method can be passed to the optimizer.
def optimize (self):

# Define the cost functions in a list – there are 3 of these
obj = [self.a2x, self.a2y, self.a2psi]

# Define the weights for the cost functions in a list – there are 3 of these
wt  = [1,1,1]

# Create the optimizer
opt = Optimizer ( label     = "Optimize RMS2",  # Label
objective = obj,              # Objectives
weights   = wt,               # Weights
simMethod = self.simulate     # The simulation method
plot      = True,             # Display plots
)

# Now perform the optimization
x = opt.optimize (accuracy=1e-3)

# Return the result
return x