私は、油圧回路をモデル化するための Python-3 パッケージを作成することを目標とするプロジェクトを開始しました。これまでのところ、結果は有望ですが、もう少し難しいと思われる問題に直面しました:未知の複雑さのネットワークですべての並列経路をマッピングし、それを効率的に行うにはどうすればよいでしょうか? これはネットワーク分析における既知の問題であり、サードパーティの高度なソリューションが利用可能であると確信していますが、私はプログラマーとしての経験があまりないため、それほど複雑ではないソリューションを探しています。
そのため、パッケージには、コンポーネントとシステムの 2 つのモジュールが含まれています。system-module では、Circuit クラスと Crawler クラスを使用しています。後者には、Circuit オブジェクトを分析するためのメソッドが必要です。
Circuit クラスには、指定されたデータからコンポーネント オブジェクトのインスタンスのリストを作成するメソッドと、接続属性を操作してオブジェクトをリンクするメソッドがあります。したがって、Circuit.comp_list 内のすべてのコンポーネントには、それ自体の「内」および「外」へのポインターがあります。ノードには、回路が分岐または再結合する場所で、それ自体の "in" および/または "out" の 2 つ以上のポインターがあります。ポインターは、回路内の他の名前付きコンポーネントへのリンクを提供する短い名前 (文字列値) です。例: 名前付き Pipe オブジェクトへの 2 つのポインター「アウト」を持つ Node.connections 属性:
Node.connections = {"in": {"0": "R#1"}, "out": {"0": "R#2", "1": "R#3"}}
これまでのところ、回路をランダムにクロールし、分岐が見つかったときに新しいレベルを辞書に追加することを考えてきました。しかし、これをプログラムで解決する方法がよくわかりません。1 つのランダムなコンポーネントから始めて、ルートと並行経路のマップを作成しながらリンクをたどることができるはずだと思います。このマップは、後で回路をポンプと一致させるときに、回路内の総抵抗を計算するために使用されます。リクエストに応じて、より多くのコードを提供します。