feedback, step プロセスを行う構成

world_sample_00.gh MAS(マルチエージェントシステム)やひとつの生成結果をフィードバックする現象のモデル化、設計システムを考える場合、コンポーネントを実行するたびに各変数が初期化されるのは困りますし、システム全体であるいは個々のエージェント等が変数の値を保つ必要があります。 まずはクラスなどでプロトタイプを記述し、そのインスタンスを別のコンポーネントに送り、送った側でインスタンスの関数をコールする、という構成で実現することができます。 WorldPlan コンポーネント側 (プロトタイプ宣言とインスタンス生成、インスタンスのポート’a’への送信) クラスの記述方法を説明すべきですが、クラス内部で保つ変数(メンバー変数)は、self. で定義・アクセスします。proc という関数の中に、各設計ステップの処理を書いていきます。siteという入力ポートが暫定でありますが、ここが敷地情報、境界情報、何らかの初期座標、点、などを入力する想定です。 Process コンポーネント側 (インスタンスの受け取り、インスタンス関数の実行) こちらのエディタを開いて、”test”ボタンを押下する度に1ステップ実行されます。 ↓このあたりのサンプルはすべてこの構成です。 MAS基本形 define functions, define prototypes(class) シミュレーション Werner’s Model シミュレーション Reaction-diffusion system 反応拡散系モデル Category Archives: MAS (Multi-Agent System) Category Archives: CA (Cellular Automaton) Percolation

  • Comments Off on feedback, step プロセスを行う構成

Class 定義 データストラクチャ

world_sample_01.gh まずデータストラクチャ、今後扱っていく情報の構造を設計する必要があります。データをひとまとまりにしておくと便利なものをprototype、クラスというもので定義していきます。おそらくこのサンプルは、シェアハウス、学校のプロジェクトにフィットする形です。後にポストしますが、クラスタリングなどもこのデータストラクチャを基に行います。 Unit というクラスを定義しています。これシェアハウスの場合は住居ユニット、学校の場合は教室、として定義できると思います。このクラス(プロトタイプ)からインスタンス(実体)を作るときに、def __init__(self,xxxxxx) という関数がコールされます。これをよくコンストラクタと呼びますが、ここでこのUnit というデータ構造(まとまり)がどのような情報を格納すべきか self.変数名 として定義しておきます。これをメンバー変数と呼びます。 上のコードではメンバー変数を、コンストラクタの引数 で初期化しています。サンプルの WorldPlanコンポーネントのコード 35 行あたりで、このUnitクラスからインスタンスを作っていますが、 このインスタンス化の際に,id, pos, type = 0, name = “single” といった情報を与えています。 unit_B に関しても実装してみてください。 それから敷地のサーフェース(建設可能範囲)、シェアハウスは3mグリッドのsplit済みのエッジ、このあたりライノでモデリングしてください。可能であればdropboxに置いてくれるとサンプル作りに役立ちます。

  • Comments Off on Class 定義 データストラクチャ

studio_utility_1_0.py ユーティリティモジュール

studio_utility_1_0.py graph_1_0.py と同じようにセットアップしてください。今後機能を追加していきますが、配置干渉チェック、エリア内外チェックを簡素化するための関数を作りました。 utility_test.zip 住居ユニット配置、樹木配置に使えると思います。取り急ぎアップします。詳しくは次回スタジオか補講で。          

  • Comments Off on studio_utility_1_0.py ユーティリティモジュール

評価の詳細順位、上位100 (hclab. StreetView)

hclab. StreetView アカデミック版 visualize パネルにおいて high rank スライダーを動かすと、上位1から順番に100位までを示します。スライダーを右いっぱいにすると、上位100位までの評価のノードがすべて表示されます。

  • Comments Off on 評価の詳細順位、上位100 (hclab. StreetView)

複数指定ノードからのminisum評価、複数指定ノードへのminimax評価(hclab. StreetView)

hclab. StreetView アカディミック版の追加機能です。すべて有向グラフを想定した関数です。 複数指定ノードからのminisum評価 evaluation experimental パネル “pick up origins to estimate Minisum” ボタンを押下。 Minisumを求めるノードをマウスで選択する。選択されたノードを出発点として、それらのノードから平均的に近い場所、近さ(minisum)が評価されます。 evaluation experimental パネル “Estimate Minisum from origins” ボタンを押下。この評価は比較的早く結果が出ます。その理由は、選択したノードから他のノードまでのネットワーク距離が算出できればよいのでDijkstra関数をコールするのが選択したノード数だけで十分である、ということが理由です。   複数指定ノードへのminimax評価 evaluation experimental パネル “pick up destinations to estimate Minimax” ボタンを押下。 Minimaxを求めるノードをマウスで選択する。選択されたノードを目的点として、すべてのノードから遠すぎない場所(最遠ノードまでのネットワーク距離がもっとも小さい)場所、一部の人に不便すぎない、もっともアクセスに不利な人を考慮した場所(minimax)が評価されます。 evaluation experimental パネル “Estimate Minimax to destinations” ボタンを押下。

  • Comments Off on 複数指定ノードからのminisum評価、複数指定ノードへのminimax評価(hclab. StreetView)

StreetView機能追加

StreetViewベータ版ですが、機能追加しました。複数指定ノードからのminisum評価、複数指定ノードへのminimax評価。マニュアルは追って書きます。 ↑.dllファイルが2つ足りず、起動できなかったようです。スミマセン。不足ファイルを追加したダウンロードパッケージに更新しました。  

  • Comments Off on StreetView機能追加

複数の特定場所から複数の特定場所への媒介度(passcount)計算

出発場所、目的場所をそれぞれ複数指定して、各出発場所から各目的場所まで(マルチ)最短経路で移動した場合の、通過回数(passcount)を各ノードに対して加算します。 graph_module_betweenness1 このサンプルは、出発ポイント群、と目的ポイント群を分けて入力しています。各ポイントそれぞれ最寄のノードを距離計測の出発ノード・目的ノードにしています。計算が終わった後の結果ソート、今回のケースではノードのリストをpasscountおn多い順、つまり降順に行うほうが、直感に即しているでしょう。これも同様、pythonではラムダ式ソートが可能ですので、非常に簡潔です。降順では reverseというキーのフラグをTrueにします。 こうすると、g.nodes というノードのインスタンスの入ったリストを、Nodeクラスの passcountというプロパティメンバーに対して降順ソートが行われ、ソート済みのリストが passscountrank に返ってきます。

  • Comments Off on 複数の特定場所から複数の特定場所への媒介度(passcount)計算

複数の特定場所からのminisum計算

場所を複数指定して、そこからの距離の合計(sumdist)を各ノードに対して行います。 graph_module_minisum1 今回は、ポイントを複数入力して各ポイントそれぞれ最寄のノードを距離計測の出発点にしています。計算が終わった後、結果をソートする場合、今回のケースではノードのリスト Graph.nodes コード中では g.nodes をソートすることにあります。つまりクラスのインスタンスのリストをソートすることになりますが、pythonではラムダ式ソートが可能ですので、非常に簡潔です。 こうすると、g.nodes というノードのインスタンスの入ったリストを、Nodeクラスの sumdist というプロパティメンバーに対してソートが行われ、ソート済みのリストが minisumrank に返ってきます。

  • Comments Off on 複数の特定場所からのminisum計算