2017-06-05 1 views
0

私は反復深化検索を実行し、一定時間が経過した後に最も深い検索から値を返す機能を持っています。コードのスケルトンは次のようになります一定の時間が経過した後に戻る検索を実行するにはどうすればよいですか?

このコードの問題は、制限時間が経過してから返されます。これを解決する最善の方法は何ですか? IDS関数でタイムチェックを追加するだけであれば、最後に見つかった値を返すことはできますか?どんな助けでも大歓迎です。

+0

検索の問題では、私はグローバルな "ベスト"回答を得て、検索ブランチはより良いものを見つけて更新しました。あなたがシングルスレッドで検索を行っている場合は、スレッドの安全性の問題に遭遇することはありません。そうでなければ、最も重要なセクションをロックする必要があります。 –

答えて

0

IDSがブロックされていて、非常に時間がかかる場合を除き、コードは機能します。その後、IDSが完了するまで待つ必要があり、期限はそれほど正確ではないかもしれません。私はあなたが

の意味を正確にわからないんだけど

は一定の時間が経過した後で最も深い検索から値を返すようにしたいと思います。

このコードの問題は、それが制限時間が経過した後まで戻りませんです。

時間制限があり、更新時間がある場合は、このコードをジェネレータとして使用できます。

import time 

answers = [] 
START = time.clock() 
current_depth = 1 

def get_ids(update_time, limit_time): 
    last_update = time.clock() 
    while time.clock() - START < DESIRED_RUN_TIME: 
     answers.append(IDS(depth=current_depth)) 
     current_depth += 1 
     if time.clock() - last_update < update_time: 
      last_update = time.clock() 
      yield answers[-1] 

    yield answers[-1] 

for i in get_ids(1, 10): # get an ids every second and stop after 10 seconds 
    print(i) 
関連する問題