optimizeメソッド

モデルの最適化を実行します。

これは次の2つのステップで構成するプロセスです:
  • まず、問題の定義を使用して最適化エンジンを作成します。
  • 次に、指定したシステムを目的の精度で最適化することを最適化エンジンに指示します。

以下はFourBarクラスのoptimizeメソッドです。
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

以下の例では、simulateメソッドを最適化エンジンに渡す方法を示しています。
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