製品のさまざまな機能、機能のオプション、および機能間の互換性ルールを考慮して、実現可能なすべての製品構成のリストを生成したいと考えています。
たとえば、私の現在の使用例は、ラップトップの構成に似ています。画面サイズ、RAM、CPU、マザーボードなどの多くの変数と、それぞれに複数の有効な値があります。また、このマザーボードがこの CPU と互換性があるなどの制約を設定することもできます。必要な出力は、ラップトップのすべての有効な構成のリストです。
このシナリオは、典型的な制約充足問題 (CSP) のように見えます。Minion、Choco などの CSP ライブラリを試してみました。残念ながら、それらは数値変数しか使用せず、互換性ルールも数学関数です。
また、機能的制約を使用したhttp://labix.org/python-constraintを試し、互換性ルールを If ステートメントとして提供しました。これは小さなシナリオで機能しました。しかし、私の要件では、10 個の機能があり、それぞれに 4 ~ 5 個のオプションがあり、何百万もの構成が必要になります。
誰かが私の要件に最適なアプローチを提案できますか?