MATLAB で離散刻みの変数に対する最適化を行うにはどうすればよいですか?
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
MathWorks Support Team
am 21 Aug. 2019
Beantwortet: MathWorks Support Team
am 21 Aug. 2019
Global Optimization Toolbox の ga 関数を使うと整数最適化を扱うことができますが、例えば、x = 0:0.1:10 などの 0.1 刻みの目的変数に対して、最適化問題を解く方法を教えてください。
Akzeptierte Antwort
MathWorks Support Team
am 21 Aug. 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Genetic Algorithm finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!