最適化計算してみた

最適化計算をしてみてパソコンを検討してみた

Global Optimazation Toolboxを使った最適化計算を試す

ソルバーと呼ばれる、 最適化問題を解くためのツールとして、 MATLABのGlobal Optimazation Toolboxが使われることがよくあります。

私たちが開発しているソフトウェアでも この「最適化」を行う工程が含まれていまして、 MATLABを今後使っていけるかどうかを評価するために、 ちょっと試してみました。

実際には私は数学苦手なので、部下に試してもらいました・・・。 最適化難しい…。

具体的には、 今、C++で組まれている最適化をするプログラムを、 MATLABで組みなおしてもらって、 今後MATLABが私たちの開発で使えるかどうかを試してもらいました。

MATLAB購入前の検討段階だったので、 評価版を使って、Global Optimazation Toolboxを評価させてもらいました。

ちなみに、使ったパソコンのスペックはこんな感じです。

CPU:Corei5 1.6GHz
メモリ:8GB
グラフィックス:Intel UHD Graphics620
ストレージ:SSD 500GB

どんなプログラムか?

えーっと、詳しく書いちゃうと 身バレしちゃうので、 概要だけにさせてください。ごめんなさい。

概要としては、 力のつり合い式を最適化して解くプログラムを作りました。(部下が。)

下の図は、ロボットの関節だと思ってください。

τ

ロボットの関節にかかっているトルクがわかっているとします。

実際には、 その関節をまたいでいる、無数の繊維が力を発したり受けたりしてトルクが生じます。

この繊維の力は、最小の力でトルクを生じさせています。

「関節のトルク = n本の繊維が発するトルク」

このn本の繊維の力を最小にするような 最適化問題を解いていきます。

この力っていうのは、 マイナスにならない、破断するほどの力を受けないという 制約条件があります。

これをMATLABの二次計画法で最適化していきます。 (色々省いて一気に飛んですみません。)

繊維の数は約300本くらいなので、 300個の連立方程式を解いていく感じです。

静止状態だったらいいのですが、 これを時系列で動かしていくので、 1秒に100サンプルくらいで10秒計算すると・・・1000回計算するわけです。

つまり、300個の連立方程式を1000回解くわけです。 いろんな制約条件を考慮して。

ごめんなさい、 実際のプログラムは、ここには書けませんが…。

パソコンは問題なく動いたか?

MATLAB速っ!

私たちのプログラムでは、5分くらいかかったのですが、 3分強くらいで解けました。

ちなみに、最適化については、ここを参考にしました。(部下がね。)

二次計画法・MathWorks

MATLABでは、 二次計画法といっても色々な方法が実装されています。

現状のC++での実装とは、 ちょっと違う方法を試したから速くなったのかもしれません。(・・・と部下が。)

MATLABはコード量が少なくて 色々試せるので、ソフトの改良を効率的にできるかもしれません。

GPUは必要か?

Global Optimazation Toolboxでは、 GPUを使った並列計算はサポートしていません。(2021年1月現在)

なので、NVIDIAのグラフィックボードが載っている必要はなく、 どちらかというと、CPUのクロック数を上げてやるのが 速度を上げる要因になるかと思います。

まとめ

Global Optimazation Toolboxは、 MATLABが一般的に動くようなパソコンでも 十分に速く計算できます。

計算はCPUを使うので、 CPUのクロック数が速いパソコンほど計算速度が上がります。

関連記事

MATLABの基本的な機能を使ってみてパソコンを検討した

MATLABのディープラーニングをやってみてパソコンを検討した

動画ファイルから顔検出してみてパソコンを検討した

WEBカメラから顔検出してみてパソコンを検討した

医療系の3次元画像を扱ってみてパソコンを検討した

Copyright (C) MATLABパソコンのおすすめスペック. All Rights Reserved.