概要

階層グラフの書換えに基づく並行言語モデルLMNtalの可視化ツールUNYO-UNYOを紹介するページです.

LMNtalとは

LMNtalは階層グラフの書換えに基づく並行言語モデルです.
表現力が高く、プログラムが簡潔であることが魅力です.
プログラムの構成要素は,アトム,リンク,膜,ルールです.

  • アトム:グラフにおけるノード
  • リンク:グラフにおけるエッジ.アトムを1対1かつ無方向で接続し,グラフを形成する.
  • 膜:プロセスをグループ化し階層構造をなす.膜により局所計算が可能である.
  • ルール:階層グラフの書き換え規則.ルールにより階層グラフが書き換わることで,プログラムが進行する.
     

 

LMNtalプログラム

{
 h2(5), o2(3).
 h2($x),o2($y) :- $x >= 2, $y >= 1 |h2o,h2o,h2($x-2),o2($y-1)
}.
h2(2),o2(1).
 

lmntal.jpg

 

UNYO-UNYO

概要

UNYO-UNYOはLMNtalの実行過程(階層グラフの書き換わり)をリアルタイムにアニメーションで描画します.
プログラムを可視化することで,プログラムのデバッグや直感的理解に役立ちます.

  • バブルソート
    • ソースプログラム
      L=[$x,$y|L2] :- $x > $y | L=[$y,$x|L2].
      res=[3,1,7,0,5,4,2].
    • スクリーンショット
      u1.jpg
       
  • 二分木
     
    • スクリーンショット
      u2.jpg
       

使い方

UNYO-UNYOはJava言語により開発されています.
Javaがインストールされていない場合,こちらからインストールして下さい.

  1. unyo.jarをダブルクリックもしくはコマンドを打ってUNYO-UNYOを起動(ダウンロードの項目を参照)
  2. File > Open (or Ctrl + O)で実行したいLMNtal プログラムのファイルを選ぶ.
  3. 右下の"Go Ahead"ボタンを押すことでプログラムが1ステップ(任意のステップ)ずつ進行
     

機能一覧

機能名説明操作方法ショートカットキー
Go aheadプログラムの実行を指定回数進める右下のspinnerに回数をセットし"Go ahead"ボタンを押すEnter
Auto Centeringグラフ全体を中央に表示右下の"Auto Centering"ボタンを押す
OptionUNYO-UNYO のグラフ描画オプションを変更下部のOptionタブ
Open File実行するプログラムを開く上部メニュー File > Open FileCtrl+O
Save Graph Image画面に表示されているグラフをpng画像形式で保存上部メニュー File > Save Graph Image
Restart前回開いたプログラムと同じプログラムを最初から実行しなおす上部メニュー File > RestartF11
Node List画面に描画されているアトム名と膜名の一覧を表示する.check boxのチェックを外し,UPDATEボタンを押すと指定したアトムor膜が非アクティブとなり,不可視となる.上部メニュー Edit > Node List
Edit Node画面で選択した膜内にアトムor膜を追加できる.リンクの追加も行えるが,仮実装上部メニュー Edit > Edit Node
Zoom画面の縮小を行う(まだ拡大はできない)上部メニュー Zoomマウスホイール
Show Map画面全体のMapを表示する.上部メニュー View > Show MapCtrl+M
Accent Modified Pointグラフの反応があった部分に色がつく(…微妙)上部メニュー View > Accent Modified Point
Hold (Release)選択したアトム(複数選択可)をピン止め(ピン止め解除)する右クリック > Hold (Release)
Heat選択したアトムor膜(複数選択不可)と繋がるグラフをほぐす.右クリック > Heat
Inactivate Nodes選択したアトム(複数選択可)を非アクティブ(不可視)化する.右クリック > Inactivate Nodes
Activate Neighbors選択したアトム(複数選択可)と繋がる非アクティブアトムor膜をアクティブ(可視)化する.右クリック > Activate Neighbors
Reallocation選択したアトム(複数選択不可)を基準に選択したカスタム再配置を適用する.右クリック > Reallocation (現在,バグがあるためOptionタブにあるReallocationをチェックしないと表示されない)
 

その他操作

アトム,膜の選択・選択解除左クリック(Shift+ドラッグ でドラッグ範囲内が複数選択,Ctrl+クリックで複数選択,Ctrl+A ですべてのアトム,膜を選択)
アトム,膜の名称変更アトムor膜を単体選択し,画面上部に現れるテキストボックスに名前を入力→Updateボタンを押す
実行時オプションOpen File 時に表示されるオプションを選択.(CtrlやShiftキーで複数選択可)
実行時オプションの編集UNYO-UNYO実行ファイルと同じディレクトリにある lib 内のoptions.iniを書き換える.(変更はOpen File 時に表示されるオプション画面に反映される)
カスタム再配置プログラムの追加・編集UNYO-UNYO実行ファイルと同じディレクトリにある plugins ディレクトリ直下にカスタム再配置プログラムを置く.(この場所に置いたカスタム再配置プログラムはすべて読み込まれるため,必要ないものは別の場所に移したほうが良い)
膜の開閉膜をダブルクリックまたは Option タブにある Hide All / Show All ボタンを押す.(バグあり)
 
 

ダウンロード

UNYO-UNYO ver 1.1.1

(現在開発中のため、バグが含まれます)
1.上記からzipファイルをダウンロード
2.unyo のディレクトリにあるunyo.jarファイルをダブルクリック,もしくは

java -jar unyo.jar

または

./unyo.bat

というコマンドを打って実行してください.
UNYO-UNYO 起動後,Fileメニューから実行したいファイルを選択で実行できます.

ダウンロードファイルには以下のものを含みます:
-[unyo.jar] The executable jar file of UNYO-UNYO
-[unyo.bat] The bat file of UNYO-UNYO
-[plugins] The directory for the Custom Reallocator function(*)
 -[sample] This directory contains the sample programs (written in Java) for
  the Custom Reallocator function. If you want to use these programs, move
  java files (and class files) to "plugins" directory below.
 -[autoreallo] This directory contains the programs (written in Java) for
  the Custom Reallocator function. The programs in this, are applied to
  a specific graph automatically. Never change the name of the program files
  in this directory, but you can edit programs.
-[lib] The library directory
-[README] 
(*) If you want to use the Custom Reallocator function, you must let through the
PATH to Java, and be able to use java compiler. 
 

UNYO-UNYO の階層グラフ描画

力学モデルによる描画

  • UNYO-UNYOの描画は,ばね力・角度調整力・斥力・引力といった力学モデルを使用し座標計算を行い,各力学モデルによる座標計算の平均座標に再配置を繰り返すことで成されます.
    • ばね力:リンクで繋がれた アトム or 膜 同士にかかるばねのような力
      spring_long.jpg spring_short.jpg
       
    • 角度調整力:リンクで繋がれた アトム or 膜 の角度が等しくなるように調整する力
      angle.jpg
       
    • 引力:グラフ同士引き合う力
      attraction.jpg
       
    • 斥力:空間分割により重なり判定を行い,重なった アトム or 膜 に遠ざけるような力をかける
       

カスタム再配置

  • 力学モデルを利用した再配置でなく,ユーザ独自の再配置に切り替えることができます.
    reallolist.jpg
     

カスタム再配置プログラムの作成

  • 記述言語はJavaです.
  • fileTemplate.javaを参考にして下さい.(ダウンロードファイルのplugins>sampleディレクトリにも含まれています)
    • ファイル名,クラス名,は適当なものに変更して下さい.
  • 用意されている使用可能なメソッドを利用しながら定義すべき処理(メソッド)を記述していきます.

reallo.jpg

 
定義するメソッド記述内容
1String typeName()このカスタム再配置の固有の名前を指定する
2HashSet?<Object> groupNode(Object node, Object observer)グラフにおけるカスタム再配置の適用範囲となるアトム群を指定する.(仕様見直しで削除される可能性あり)node は基準アトム.(observer は他メソッドに使用する引数)
3void reallocate(Object baseNode, Object observer)baseNode を基準アトムとし,カスタム再配置の計算を記述する.moveメソッド(使用可能なメソッド一覧参照)により,アトムを指定座標に移動させる処理を書く.

他の定義すべきメソッドは,Templateのままでも問題ないのでコメントを参照して下さい.

 
使用可能なメソッド説明
1HashSet? getConnectedNodes?(node, observer)node(アトム or 膜)とリンクで繋がったアトム群を取得する
2Object getNthNode?(node, i, observer)node(アトム or 膜) の i 番目のリンク先のアトムを取得する
3Rectangle getBounds(node)node(アトム or 膜)の幅,高さ,位置情報を取得する
4int getLinkNum?(node)node(アトム or 膜) のリンク数を取得する
5String getName(node)node(アトム or 膜) の名前を取得する
6boolean isAtom(node)node(アトム or 膜)がアトムかどうか
7move(node, dx, dy)node をdx,dy分だけ移動させる(reallocateメソッド定義時のみ使用)

引数のnode はアトムか膜が入りますが,膜の再配置は現在未対応です.

 

使用方法

  • UNYO-UNYO 実行ファイルと同じディレクトリ内にある"plugins"ディレクトリ直下にカスタム再配置プログラムを置きます.
    • カスタム再配置プログラムはJavaで記述するため,コンパイル可能な環境にして下さい.
    • pluginsディレクトリにあるsampleディレクトリ内には既にコンパイルがされたサンプルプログラムが入っているので,使用したいカスタム再配置のjavaファイルとclassファイルをpluginsディレクトリ直下に移動させることで,使用可能になります.
  • UNYO-UNYOを起動し,カスタム再配置を行いたいグラフの基準アトムを選択."右クリック > Reallocator > 任意のカスタム再配置"で適用可能なカスタム再配置プログラムを選択できます.
    • 開発中のため,下部にあるOptionパネルのReallocationにチェックを入れないと使用できません.
    • 現在,膜に対応していないため,膜を挟むようなグラフは適用できない or バグが発生する場合があります.

自動適用されるカスタム再配置

  • "plugins"ディレクトリ内にある"autoreallo"ディレクトリに含まれるカスタム再配置プログラムは,特定のグラフにおいて,グラフを選択しなくても,自動で適用されます.
    • ただし,適用されるグラフの種類はシステム側による判別となるため,自由に定義できません.
    • プログラムの中身は改変自由ですが,ファイル名・クラス名は変更しないで下さい.
    • 現在はリスト(1次元,循環なし,要素が要素を持たない単純なもの)のみ対応

添付ファイル: filearea.jpg 782件 [詳細] filespring_short.jpg 1166件 [詳細] fileu2.jpg 1121件 [詳細] fileTemplate.java 1263件 [詳細] filespring_long.jpg 1129件 [詳細] filereallolist.jpg 1138件 [詳細] fileangle.jpg 1183件 [詳細] filerepulsive.jpg 744件 [詳細] fileflat.jpg 797件 [詳細] filelmntal.jpg 1174件 [詳細] fileu1.jpg 1153件 [詳細] fileattraction.jpg 1206件 [詳細] filereallo.jpg 1173件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-06-30 (金) 17:38:30 (146d)