MATLAB で離散刻みの変数に対する最適化を行うにはどうすればよいですか?
12 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
MathWorks Support Team
el 21 de Ag. de 2019
Respondida: MathWorks Support Team
el 21 de Ag. de 2019
Global Optimization Toolbox の ga 関数を使うと整数最適化を扱うことができますが、例えば、x = 0:0.1:10 などの 0.1 刻みの目的変数に対して、最適化問題を解く方法を教えてください。
Respuesta aceptada
MathWorks Support Team
el 21 de Ag. de 2019
基本的には、ga 関数の整数制約を利用して実装します。
具体的な例が以下の URL にて閲覧可能です。
・Solving a Mixed Integer Engineering Design Problem Using the Genetic Algorithm
デモを実行するには、MATLAB ヘルプドキュメントにて上記ページを開き、右上にある "Open Script"を 押下するか、以下のコマンドを実行することで、デモファイルがあるフォルダに移動できます。
openExample('globaloptim/steppedCantileverExample')
処理のポイントとしては、"Add Discrete Non-Integer Variable Constraints" の項目に記載された部分で、変数の下限(lb)・上限(ub)は、lb と ub の設定は整数(1 - 4)で行っていますが、 そのインデックスに対応するベクトルに変換する関数を別途作成し、対応しています。
例えば、
>> edit cantileverVolumeWithDisc
で目的関数を開くと、内部で、変数 x を別関数 cantileverMapVariables で変換していることが分かります。 この関数の詳細は、
>> edit cantileverMapVariables
を実行することで内部をご覧いただけます。
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Genetic Algorithm en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!