平成10年度 委託研究ソフトウェアの提案

19.階層連立1次方程式のための制約解消系パッケージ HiRise (HiRise制約解消系)

研究代表者: 松岡 聡 助教授
東京工業大学大学院 情報理工学研究科 数理・計算科学専攻



  1. ブラッシュアップ対象ソフトウェア名称
  2. 体制/方法
  3. 想定されるブラッシュアップ成果

[ブラッシュアップ対象ソフトウェア名称]

[体制/方法]

(1) 体制

 氏名 所属
研究代表者松岡 聡東工大 情報理工学 数理・計算科学
研究協力者細部博史日本学術振興会 特別研究員(PD) 東大 理学系 情報科学

(2) ブラッシュアップの方法

  1. HiRise制約解消系をC++からJavaへ移植する.同時に,機能的な改良も行う.
  2. HiRiseを利用して,対話型ユーザーインターフェースを備えたサンプルアプリケーションをJavaで開発する.
  3. HiRiseの利用法に関するドキュメントを作成する.


[想定されるブラッシュアップ成果]

  1. ブラッシュアップ項目

  2. 上記のブラッシュアップによるユーザの立場からみた改善点

    現在のHiRise制約解消系は標準的なC++で書かれており,GNU C++やMicrosoftVisual C++で利用できることを確認している.しかし,実際にGUIアプリケーションに応用する際,C++を用いているために,特定のプラットフォーム向けにアプリケーションを作成せざるを得ない.原理的には,C++以外の異なる言語からHiRise制約解消系を利用することは可能である.しかし,これには,特別なインターフェースを用意し,面倒な手続きを踏む必要があり,利用者にとって障壁が大きい.

    一方,Javaはプラットフォーム独立な言語で,優れたGUIツールキットを提供しており,近年,注目を集めている.事実,GUI研究の分野では,C++よりJavaを好む研究者も少なくなく,Javaへの移行が観察される.このような背景を考えると,HiRise制約解消系のJava版には,高い需要が予想される.

    上で述べたように,現在のHiRise制約解消系本体は変更せず,特別なインターフェースを提案者らが用意して,JavaからHiRiseを利用できるようにするというアプローチも考えられる.このようなアプローチを採った場合,確かに,実行速度の面で有利である.しかし,制約解消系部分がプラットフォーム依存であるため,Javaを使用したことの利点が損なわれてしまう.例えば,Javaで作成したアプリケーションをWWWページ上で公開することが困難になる.

    また,Javaはアプリケーションのプロトタイピングに適していると言われることがあり,最初にアプリケーションをJavaで試作し,その後,C++へ作り直す開発者も存在する.このような開発者にとって,1つの制約解消系にJava版とC++版の2種類が存在することは,大きな魅力となる.

    一般に,Javaで制約解消系を実装した場合,C++版に比べて遅くなってしまうことが最大の問題となる.通常,HiRiseと同程度の機能を持つ制約解消系をJavaで実装した場合,インタラクティブ性はほとんど期待できない.しかし,HiRise制約解消系は,アルゴリズムの速さを最大の特徴としており,Javaに移植したとしても,一定の実行速度を期待できる.このため,Javaで書かれた他の制約解消系に対しても,HiRiseの優位性を主張できると考えられる.

  3. 上記のブラッシュアップ以外のソフトウェア機能の改良

    現在のC++版のHiRise制約解消系を利用する際に問題となっている以下の2点に対処する.

    1. 現在のHiRiseでは,同じ強さ(優先度)の制約が矛盾し合うときに,好ましくない解き方をすることがある.これは,HiRiseで採用した制約の基本モデルにおいて,制約の優先度が全順序になるようにしたために,外部的には強さが同じであっても,内部的には優先度が異なるために生じる制限である.これは,実際にアプリケーションを使っている際に,水平または垂直に近い直線上に制約されたオブジェクトのドラッグが困難になるといった問題を起こすことがある.しかし,この問題は,通常,特に意識する必要はなく,生じ得る状況も予測できることが多いので,限定的に,真に同じ強さの制約を指定できるようにすれば,十分に対処可能である.具体的な解決方法としては,真に同じ強さとして指定された制約の組に対しては,それぞれの制約の誤差の変化を考慮したり,最小2乗法を適用したりするなどの方法を検討している.

    2. 現在のHiRiseでは,複数の制約の“AND”が指定できない.2次元(3次元)のGUIアプリケーションを作成する際,2個(3個)の制約が組になっていることが多い.例えば,2次元上で2つの点の位置を一致させる場合には,それらのx座標とy座標を等しくするための2つの制約が必要になる.このような場合,できれば,組となっている制約は同時に満たされることが望ましい.しかし,現在のHiRiseでは,それらを組み合わせる“AND”のような機能を提供していないため,アプリケーションによっては好ましくない振舞いが得られる可能性がある.これは一種の組合せ問題であるため,基本的には,HiRiseのアルゴリズムにバックトラックを導入すれば解決可能である.しかし,現在,実行速度の観点から,2つか3つの制約のANDをより効率的に処理するための手法を検討中である.


www-admin@icot.or.jp