TIM Labs

一般的な巡回セールスマン問題は、一人のセールスマンが多数の街を巡回することになっているが、これでは過重労働になり、過労死するかも知れない。

ということで、セールスマンを増員してみよう。

2人のセールスマンは、いずれもセンター(基地、本社、本部、、、、何と呼んでも良いのだが)から出発して、全ての街をいずれかのセールスマンが立ち寄り、二人とも出発点のセンターに戻ってくるとする。

2人の負荷はできるだけ差が少ないことが望ましい。それで、各人の経路長の差を少なくしたい。かつ、各人の経路長も短くしたい。

それで、平均経路長+経路長の差 をできるだけ小さく(短く)することにしてみた。

すると、こんな結果が得られた。

100-2-2-2202-s.png    100-2-2-2120-s.png

左は赤と青の巡路が分かれているが、右は巡路が交叉している。

点の位置は同じになっているのだが、どちらが 平均経路長+経路長の差 が小さくなっている、つまり望ましいプランであろうか?

通常の巡回セールスマン問題は、スタート地点まで戻る、つまり一周する最短のループを求めるのであるが、それとはちょっと違う次図の場合について考えてみよう。

100-Line-3750.png  100-Line-3745.png

全ての点を結んでいるが、元の点には戻っていない。こういう場合の最短経路が欲しい場合もあろう。

開始点、終了点を任意としているので、実行の度に異なる。

求まるのは準最適解(それなりに良い解)であり、理論上の最適解ではないので、実行毎に異なってしまう。

さて、どうプログラムを変更すれば良いだろうか?

標準的な巡回セールスマン問題は、経路長が最短のものを見つけるのであるが、これを変えてみた。

最適化の対象になる関数を適応度関数(fitness function)とか、コスト関数、評価関数とか呼ぶわけだが、このfitness関数を距離ではない次のようなものに変えてみた。

AngleExp.JPG

各頂点で曲がることになるのだが、そのときの回転角度の2乗和を最小にすることにした。

プログラムで変更したのはたったそれだけ。

すると、こんなことになった。500-Angle.pngこれは前のより点数が増えて500点であり、もっとぐるぐる回っているように見える。

つまり、fitness関数は、なにか適当なのをでっちあげて、その関数の値を最適なもの(通常は最小か最大)を指定すると、後は延々と計算して、結果を表示してくれる。

ということで、巡回セールスマン問題だからといって、最短距離に凝り固まる必要はなく、ちょっと頭を柔軟にすると、色々なことを調べるのに使えるのだ。

巡回セールスマン問題は、実はもっともっと汎用性に富んでいるのだが、その話はまた次で。

個別のVM場合、ポータル上の専用タブからシャットダウン可能ですが、スケールセットでは利用できません。

今回は、開発・検証環境を想定して、営業時間外はスケールセットのインスタンス数を0にする方法を紹介します。

巡回セールス問題というと、与えられた点の全てを通る巡回路で一番距離が短いものということであり、下図のようなものを思い浮かべるであろう。

100-Normal.png

今回は、こういう普通のまっとうな巡回セールス問題ではなく、次図のような巡回セールス問題を考えてみよう。

100-Angle2.png

この結果も、巡回セールスマン問題を解くプログラムで巡回路を最適化したものである。
正確に言うと、ほんのちょっとだけプログラムを変更した。

与えられた全ての町(点)を一度だけ通過しているので、巡回しているが、どうみても、距離が最短ではない。最短距離なら、巡回路が重なる場合には、さらに短い巡回路を簡単に作れる。

何だが、ぐるぐる回る巡回路になっているようだが、何を最適化したのだろうか?

殆どの巡回セールスマン問題を取り扱っている本では、巡回セールスマン問題を深く説明することがあっても、巡回セールスマン問題を多様に拡張する、あるいは抽象化することで、非常に多様な問題を解く基本的なアルゴリズムとして使えることの説明がほとんど皆無であり、とても残念である。

...ということで、ぐるぐる回る巡回路について、何を最適化しようとしたか、考えてみよう。

説明は、次回に行う。

(つづく)

トランザクション処理性能は、システムを構築する上で重要な指標の1つです。

一般的なデータベースと同様に、トランザクション毎秒(Transactions Per Second, tps)がブロックチェーンの処理性能の指標の計測に使われています。

今回も前回と同様にEthereum PoA, Hyperledeger, Cordaの3つの処理性能に関する情報を集めてみました。

AZUREソリューション部の土田です。

Azure Blockchain workbenchでは、現在Ethereum PoAが利用可能で、今後Hyperledger Fabric, Cordaのサポートが予定されています。

検討用資料として、基本的な情報をまとめておきます。

この情報は2018年10月現在の情報です。

AZUREソリューション部の土田です。

ブロックチェーン上にサービスを構築する場合、秘密鍵の管理は重要な要素です。

現状、ユーザーに秘密鍵を生成してもらい、各自で安全に管理してもらうといった方式は、現実的ではない場合が多いです。

何らかの手段で、秘密鍵を管理する必要があります。

今回は、Azure Key Vaultを使用した管理方法を紹介します。

どうも。AZUREソリューション部の土田です。

現在パブリックプレビュー中のAzure Blockchain Workbenchをテスト運用する上で、調査・研究した内容を随時公開していきます。

今回は、テスト環境を運用するのに必要な料金について共有します。

予算感の参考になれば幸いです。

DSCN3396-600.JPG

恵存(けいぞん、けいそん)村上雅人 と書かれてあり、恵存とは本などにサインするときに使われる言葉で、「お手元に保存していただければ幸い」(デジタル大辞泉)という謙譲語である。

実は、村上雅人著作本にサインをいただいたのだのだが、村上雅人って誰だか知っている人は少ない気がする。

今回は、この人の本について書く。

ところで、最近やたらと数学、そしてちょっと物理学が流行っている気がする。

10月初めには MATH POWER 2018 という、数学の狂った祭典が六本木の地下で夜を徹して行われ、それに付き合ったのだが、満員御礼の人気なのである。

数学、物理学というと、理工系大学ではだいたい必須の科目であり、そのための書籍も多数でている。

以前、そういう分野の本としてマセマを紹介した。

プログラミングに数学はどのくらい必要か

プログラミングに物理はどのくらい必要か

マセマは、まるで受験参考書のような書き方で説明や演習が載っていていて、これで勉強すれば単位は取れるという謳い文句の参考書である。

でも、大人になってから読むには、どうも受験や定期試験を思い出させるのでよろしくない。

最近のコメント

月別 アーカイブ