Oracle SQL XEでロボットをスタックするためのグループAI

画像 自宅のコンピューターとコーヒーを片手に数時間後にロボットと人工知能について考えるのは良いことです。 また、ロボットウェアハウス向けの高レベルなソフトウェアを短時間で開発する必要に直面したときも問題になります。 そして同時に、この主題分野での実際の経験は完全に欠けていますが、 理論的なものは豊富です。 あなたは賢い人が同じような状況にあるべきではないと言う。 まあ、あなたは正しいかもしれませんが、人生は非常に複雑で非線形なものです。 したがって、ロボット倉庫用の鉄を製造している会社のディレクターである友人が、以前に高レベルソフトウェアの開発者が投げた(前払いをして、朝食を長時間与えた後、未知の方向に完全に姿を消した)という苦情で私に近づいたとき、ここでできます。



ロボット倉庫



鉄に関するいくつかの言葉(ASK-自動倉庫複合体)。そのためには、高レベルのソフトウェアを開発する必要がありました。 おそらく、読者の中には、上の写真のデバイスがロボットであるという声明に同意しない人もいるでしょう。 それは一種の機械のように見えます。2本のレールが上下に設置されており、スライドプラットフォームを備えたロボットがその上を移動します。 左右は、いくつかのレベル(最大12メートル)のセルがあるラックです。 商品は、さまざまなサイズの標準的な安価なコンテナに保管されます。 スタッカーロボットは、レールに乗って、特定のセルからコンテナをロードし、特定のセルにコンテナをアンロードできます。 詳細については、製造元のWebサイトwww.vind.ruをご覧ください。



瞑想



私が言ったように、私は人工知能やロボット制御のいずれの実務経験もありませんでした。 ただし、DBMSおよびさまざまな視覚化システムでは多くの経験がありました。 ロボット自体の低レベルソフトウェアはC#で記述されています。 私のチームには、C#で多くの経験を持つ人々がいました。 したがって、C#を使用してロボットと通信するモジュールを開発することは論理的でした。

以前の不幸な開発者は、DBMSとしてOracle SQLサーバーを使用していました。 このサーバーでの作業には素晴らしい経験があったため、この特定のサーバーをDBMS用に残すことにしました。

しかし、私は疑問に打ち勝ちました-私のチームは対処しますか? そのため、最初に小さなピースを作成することにしまし 。これをスタッカーサーバーと呼びます 。 このサーバーには実際には1つのコマンドしかありませんでした-コンテナーをあるセルから別のセルに移動するためです。 問題は、セルを異なるサブストアに配置したり、2台のロボットを備えたリングサブストアに配置したりできることでした。 前の開発者の障害は、ロボットの絶え間ない衝突と選択したオプションの非効率性でした。



スタッカーサーバー



ロボットと対話するためのモジュールは非常に簡単に作成されました。 過去に腺を扱った経験を念頭に置いてロボットウェアハウスのエミュレーターとスマートビジュアライザーを主に実装することにしました。 さて、アルゴリズムをデバッグするのは生きているロボットではありません-彼らが耐えることができる衝突の数は厳密に制限されています。 ロボット製造業者はすでに1つのロボット用のエミュレータを所有しており、C#のソースコードを親切に提供してくれました。 ビジュアライザーについては、ロボット用の低レベルソフトウェアの開発者たちは、理論的にも実装できるかどうかに強い疑念を抱いていました。 しかし、数日間の瞑想の後、以下に示すフォームが何らかの形で現れました。

画像

つまり、ビジュアライザーは上からのようにASKを表示しますが、ロボットの忙しさはWPFのさまざまなアニメーション効果によって区別されます。 誰もが目に見える形の視覚化を非常に気に入ったため、商業的なオファーを設計する際に、マーケティングレベルまでのすべてのレベルでそれを使用することにしました。



Oracleのお気に入りのトリガー



ASK操作の主なロジックは、有限状態マシンの管理です(大学での講義でこれを教えられたようです)。 倉庫条件のセットがあり、特定の条件セットに応じて異なる状態間でシステムを切り替える必要があります。 これらの目的のために、Oracle SQL Serverは理想的な開発ツールであることが判明しました。 Oracleのトリガーにより、ウェアハウスのロジック全体を迅速かつ便利にプログラミングできました。 デバッグは非常に便利でした。 ドメインモデルが開発モデルと十分に相関している場合、作業が非常に快適であることがわかります。

Oracleの速度にはまだ疑問があります。データベースのサイズは小さかったのですが、テーブル変更操作の数が1秒あたり20に達することがありました。 ただし、Oracleはここで失敗せず、無料のOracle SQL XEでも失敗しませんでした。



難しさ



このすべての設計は、同じリングパス上の2台のロボットを効率的に制御するためのモジュールを記述する番になるまで続きました。 それはもっと簡単なように見えました-共通のリソース(レール)があり、その割り当てのルールがあります。 しかし、どのロボットにどのチームを、どの方向に実行させるかを決定する方法は? 一週間その場で踏みつけた後、私は突然、戦略の選択、意思決定、最適な経路などのようなものが私たちの日常生活にしっかりと入っていることを発見しました。 そして、私たちは真剣に人工知能の沼にさまよい、そこからできるだけ早く出なければならないという理解が生まれました。 時間は限られていた。 時間に関する問題が発生した場合、人工知能の問題の開発者はシミュレーションモデルと徹底的な検索の方法に頼るというインスティテュートコース(教師の親切な言葉を覚えている)を思い出して、同じことをすることにしました。 あまり美しくないかもしれませんが、間違いなく機能します。



意思決定ビジュアライザー



ただし、同じレール上に2台のロボットを配置したこのような単純なシステムのシミュレーションでさえ、非常に困難な作業であることが判明しました。 システムのさまざまな動作の数はほぼ指数関数的に増加し、ある時点から、開発者はシミュレーションの経過を理解できなくなりました。 私は1つのことに気づかなければなりませんでしたが、その言及はV. Pelevinの<Al-Efsbiからの対空コード>でのみ出会ったものです。 つまり、シミュレーションの結果として、システムはしばしば次善の決定を下したため、エラーの場所を理解する必要があり、リアルタイムでのデバッグはオプションではありませんでした-すべてが1秒ごとに変更され、その後、意思決定プロセス(1秒以内)でシステムが生成されました読みやすいテキストファイル。 その中のグラフィックスはテキストシンボルで描かれました-これもクールですが、開発者はビジュアライザー自体をすばやく変更し、エラーを非常にすばやく追跡して修正することができました。



成功



チーム全体の力の信じられないほどのストレスの結果、指定された時間内にロボットを制御するための高度なソフトウェアを実装することができました。 少し考えてから、「 スタッカーロボットのグループ人工知能 」と呼びました。これは、与えられた目標の実現を目指して、ロボットの動作を擬似的に意識させるからです。 意思決定ビジュアライザーの開発は、プロジェクト全体の分岐点でした。 そのようなシステムを実行できることに気付き、それらは機能します。 この後、多くの問題がありましたが(たとえば、ASKと顧客の特定の情報システムとの統合を目的とした相互作用の概念化)、これらの問題は通常の作業順序ですでに解決されていました。 興味深い場合は、これらの点について次のトピックで詳しく説明します。

そして、他の興味深いことが判明しました-私のプログラマー全員がシステムの人工知能モジュールに正確に取り組むことができたわけではありません。 10年以上のプログラミング経験にもかかわらず。 どうやら、自分自身をロボットとしてではなく、ロボットのグループとして想像するタスクは、特定の考え方を持つプログラマーによってのみ解決されます。 確かに、人工知能モジュールに特に集中的に取り組んでいた専門家は、まるで彼らが最適な経路を見つけることができないスタッカーロボットであるかのように悪夢に悩まされていました。



短所



システムが実装され、6か月以上にわたって正常に機能しているという事実にもかかわらず、作成された製品のいくつかの欠点がはっきりと見えます。 まず、数学者を雇い、スタッカーロボットの作業プロセスの古典的な数学モデルを作成してみたいと思います。 しかし、私が研究所のコースから思い出すように、シミュレーションからのすべてのタスクが数式の形で解決策を持っているわけではありません。

本格的なオブジェクト指向のアプローチですべてを行うことも考えられています。 時間の制限のため、時々私は古典的な手続きと関数を書くことに侵入しなければなりませんでした。

そのようなシステムを作成する際の世界的な実務経験に精通するという考えはまだあります。 しかし、すぐには何も見つかりませんでした。 これは開発者の最も厳しいノウハウでしょうか、それとも必要なキーワードがわかりませんか?



おわりに



国民経済全体のロボット化の必然性についてささいな言葉を言うつもりはありません。 簡単に言います。 私の意見では、さらに10年が経過し、世界中の既存の倉庫の少なくとも30%がロボット化されます。 経済的な実現可能性(ストレージ密度の増加と人員削減)だけでなく、いくつかの理由があります。 そして、私はこのプロセスへの私の小さな貢献が日常労働者をなくす方向にあることを知ってうれしいです。



All Articles