Skip to content
サレジオ高専SP2LC 第25回プログラミングコンテスト競技部門[記憶のカケラ2] 主幹ソース
Python Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
A-star
cobra
.gitignore
LICENSE.txt
README.md

README.md

第25回全国高専プロコン競技部門 サレジオ高専チーム・メインプログラム

システム構成・アプローチ

cobra

問題画像を競技システムから取得し、画像処理によって原画像を推測します。

また、HTTPサーバーとして動作し、解答探索プログラムからの問題取得を待ち受け、求まった解のコストを計算し提出するか判断します。 問題画像の取得を開始したタイミングから時間の計測をはじめ、時間コストの計算を行います。

A-star

cobraから問題データを取得し、復元手順を求めてcobraに送信します。

名前に反してA*以外の方法も使用しています。 手法は次の3シリーズに分けられます。

  • A-star系
    • A*アルゴリズムを使用して探索を行います。
    • a_star.py
    • good.py
    • f-b.py
    • dynamic.py
    • dynamic-good.py
  • puzzl系
    • 探索を行わず、左上から右下まで順番に、機械的に画像を揃えます。
    • puzzl.py
    • quad-puzzl.py
    • tree_puzzl.py
    • rl-puzzl.py
    • blaster.py
  • L系
    • puzzl系と同じ方法で問題の大部分を揃え、右下に3x3か4x4の部分だけを残した状態にしてからA*でコストの小さい解を求めます。
    • L.py
    • L-good.py
    • L-dynamic.py
    • tree-L.py
    • tree-L-good.py
    • tree-L-dynamic.py

実行方法

###cobra/ 以下のソース python cobra.py [問題番号] [-p]
上記のコマンドでローカルサーバーが立ち上がります。A-star/以下の実行ファイルがアクセスすると画像復元結果を待機させます.

  • -pをつけなければsp2lc.salesio-sp.ac.jpと通信します。問題番号は http://sp2lc.salesio-sp.ac.jp に接続して確認してね.
  • -dを付けるとどこにも解答を送信しません.
  • -nを付けるとウィンドウを表示しません。SSH越しでの実行などにどうぞ.
  • -rで沖縄高専の練習場と通信します.

config.py内の情報を書き換えることで-pを利用したときの回答サーバーのipを指定できます.
  

試合が始まったらEnterキーを押して画像認識を開始してください.
また,試合が始まる直前にEnterキーを押した場合は0.2秒インターバルでリクエストを投げ続けます.
問題画像の取得が完了したら画像復元を行い,確認用のGUIを起動します.
GUI上では画像の入れ替え(範囲選択可能,全体のシフト可能)をクリックで行え,復元の確認ができたらOKをクリックすることでA-star/以下のスクリプトが起動します.
画像復元に誤りがあったのにOKを押してしまった場合,Please waitボタンを押すことでA-star/以下のスクリプトを止めれるはず・・よくわからん

###A-star/ 以下のソース pypy ***.py [cobraのip]
回答探査プログラムを実行します。cobra.pyの起動後のみ実行が可能で,画像復元が終了するまで待機します.
config.pyを書き換えることでcobra.pyが駆動してるサーバーのIPアドレスを常時指定できます。その場合オプションは必要ありません。
pypy L.py [cobraのip] [縮小先columns-縮小先rows]
L~と名前のつくソースに関しては縮小先マス数を引数で指定できます。
その場合 - で区切った一連の文字列で指定してください。 expypy L-good.py 5-5 or pypy L-good.py 192.168.10.XX 6-6

####launch.sh
./launch.shを実行することで複数スクリプトを同時起動できます.設定方法はソースを読んで察してください。
起動時に登録したスクリプトのターミナルが起動し待機状態になります.cobra.py上でOKが押された際にすべてのスクリプトが起動します.

####zero4.sh
zero4.shcobra.pyのOKボタンを待たずにさっさと登録スクリプトを実行しちゃいます.それ以外の使い方はlaunch.shと共通です.

##実行環境 OSXまたはUbuntu上のPython 2.7.5を使用しています。Python 3系列では動作しません。

  • cobra/ 以下のプログラム
    • Tkinter (Python処理系に付属)
    • matplotlib
    • PIL
    • numpy
    • requests
  • A-star/ 以下のプログラム
    • requests

pip install等を用いて自分のpython環境にインストールしてください。

A-star/ 以下のプログラムはPyPyを使用することで高速に処理できます。

TODO

  • ドキュメントの拡充、ソースファイルごとの説明
  • ディレクトリ構造の整理
You can’t perform that action at this time.