Excelでホーキンス・リンクをシミュレーションする (後編) [ロボット]
前編では、「ゴール・シーク」という仕組みを使って方程式を解きました。 後編では別の仕組みを使って解きます。
ゴール・シークの問題点
ゴール・シークは、調整するパラメータが一つの場合にのみ適用出来るので、クランク角度を変えながら軌跡を求める今回のようなシミュレーションの場合には、マクロを使って処理をするなどの工夫が必要です。 加えて、ゴール・シークでは、制約条件を与える事ができません。
前編の例では、実は別の解が存在します。 これは、φが180度を越えて、リンクCDが下向きになってしまった場合の別解です。 実際の機構では、このリンクが下向きになることはないため、この解は除外しなくてはなりません。 そのため、希望する解だけを求めるには、「φは0から180の範囲に存在する。」という制約条件をつける必要があります。
さらに、ゴール・シークでは、残留誤差の制御ができません。 前編の例では、最大0.1%の誤差が残っています。 この誤差をさらに小さくしたいと思ってもゴールシークには、それを制御するすべがありません。 そこで登場するのが、「ソルバー」と呼ばれるアドインです。
ソルバーのココが凄い
ソルバーは、複数のパラメータを調整することが出来ます。 パラメータは、ソルバーのダイアログでは、「変化させるセル」で指定します。 この例では、B19からB55までの37のセルの値を調整します。
一方、「目的セル」で指定される調整のゴールは、ひとつのセルだけを指定しなくてはなりません。 この例では、「B11の値が最小になる」ようにパラメータが調整されます。 B11セルには、クランクの角度にごとに計算された"BC error"の平方和が与えられています。
B11 =SUMSQ(K19:K55)
B11セルが最小になるということは、最大誤差が最小になることを意味しています。
さらに、ソルバーでは、制約条件を与えることが出来ます。 この例では、セルB19:B55のパラメータの各要素が、C19:C55の値とD19:D55の値の間に制限されます。 C19:C55のそれぞれのセルには"0"が、D19:D55のそれぞれのセルには"180"が入っているので、リンクCDが上向きの解だけが求まります。
ソルバーには、さらにオプションが用意されています。 オプションには、いろんなパラメータがあります。 精度、公差、収束の各値を小さくすると解の誤差が小さくなります。
その他にも解を求める手法に関するオプションが用意されているので、試してみましょう。
ソルバー実行
ソルバーの実行ボタンをクリックすると、結果が出てきます。 結果自体は、マクロを使った場合と同じなのですが、マクロを書くのでもなく、ボタンひとつで、しかも制約条件を満たした解が得られるところが、ソルバーの強みです。
付録:Excelブック
このリンク先を"Linkage1.xls"という名前で保存すると、この記事で作成したExcelブックが再現できます。 多くのアドインが必要になるので、適宜インストールしてご使用ください。
参考文献
そこが知りたい!Excel VBAプロの技 Excel97/2000/2002/2003対応!
- 作者: 井川 はるき
- 出版社/メーカー: ナツメ社
- 発売日: 2003/11
- メディア: 単行本
コメント 0