2016-02-12 158 views
1

在Minizinc中,是否可以對域進行採樣?可以說我的域有很多解決方案,運行 - 所有解決方案最初都會返回非常類似的解決方案。採樣搜索域

1)有沒有辦法對域進行採樣?也許是BFS?目的是爲了跟進解決方案分析。

2)有什麼方法可以估計CP中的搜索域大小嗎?

我的域名是員工排班問題

問候, ^ h

回答

2
  1. 這是不可能選擇在BFS但MiniZinc有search annotations。通過搜索註釋,您可以選擇變量應以何種順序分支。您也可以選擇將分支的值。不幸的是,MiniZinc不支持隨機變量搜索。

    在你的情況下,我會用一個隨機值在dom_w_deg上進行分支,但是任何其他的變量選擇都可以工作,試試它們。

    solve::seq_search([int_search(some_array, dom_w_deg, indomain_random,complete)]) satisfy; 
    

    請注意,並非所有求解器都支持搜索註釋的使用。

    其他替代方法是添加刪除相似結果的約束條件。

  2. 您可以隨時計算您的解決方案中可以具有的排列數,即變量數乘以其域。這不會考慮任何約束條件,真正的搜索空間可能會更小。

可視化搜索的另一種方法是使用gist或其他程序來可視化搜索。

gist http://www.imada.sdu.dk/~marco/Teaching/AY2010-2011/DM826/gist2.png

您可以展開和收回搜索樹的部分,看看哪些變量已經支上。