問題タブ [constraint-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
constraints - CHOCO 制約ソルバーの機能
CHOCO が以下をサポートしているかどうかは誰にもわかりません。
と
c# - 自動パラメータ調整
入力オーディオ ファイルを取得して処理し、変更された出力オーディオ ファイルを吐き出すオーディオ処理アプリがあります。このオーディオ処理アプリには、オーディオの処理方法に影響を与える 10 ~ 15 のパラメーターがあり、出力オーディオ ファイルの内容に影響を与えます (たとえば、異なる周波数応答を持つ、音量を大きくする、小さくするなど)。これらすべてのパラメータには、制限された範囲があります (たとえば、x0 は < 1 かつ > -1 である必要があります)。
出力オーディオ ファイルは、スコアを与えるツールによって評価されます。このツールは、「理想的な」出力がどのように聞こえるかを認識しており、それに応じて出力ファイルにスコアを付けます。スコア 1.0 は、出力が理想的であることを意味します。つまり、入力ファイルが可能な限り最良のパラメーター セットで処理されたことを意味します。スコア 0 は、出力が完全に間違っていることを意味します。
したがって、有効な範囲を持つ 10 ~ 15 個のパラメーターを使用すると、組み合わせは無限大になります。最良の解決策が得られるまで、ここに座ってこれらのパラメーターを手動で微調整していました。いくつかの LP/MIP ソルバー (CBC、MS Solver Foundation、GKLP) を調べましたが、これらは目的関数として数式を使用しています... 私が見る限り、外部評価関数を「プラグイン」していません。 .
LP/MIP ソルバーは、パラメーターの調整を支援する適切なツールですか? 何か案は?
ありがとう、
アケバン
lambda - プロローグ:反復
こんばんは、私は単純な問題を抱えています、そして私はプロローグで非常に新しいことをあなたに警告します。同じサイズの3つのリストがあり、それぞれに1、0、または-1のみが含まれているとします。3つのリストのi番目の要素のすべてのiについて、1つだけが非ゼロであることを確認したいと思います。
このコードは、固定されたiに対してそれを行います。
「すべてのIについて、compat1(V1、V2、V3、I)」とはどうすればわかりますか?私は定義しようとしました
興味のあるK=maximum valueで呼び出すことができるようにします。しかし、compat2は機能しません。「;」の後にtrueを返します。無期限に実行されます。
ありがとう!
logic - 一次論理を CNF に変換する
MiniSatを使用して制約充足問題を解決しようとしています。一次論理では、問題はいくつかの離散ドメイン変数といくつかの述語によって簡単に表されます。
しかし、MiniSat は、これまで見てきた他の CSP ソルバーと同様に、すべて CNF 形式での入力を必要とします。そこで、一次論理式を CNF に変換する一種の「プリプロセッサ」を探しています。
何かご意見は?
c++ - Gecodeで「ネストされた」コスト関数を実装する方法は?
私は一般的にgecodeと制約プログラミングに不慣れです。
これまでのところ、gecode を取得するのにそれほど問題はありませんでした。しかし、「ネストされた」コスト関数を実行する最良の方法は何だろうと思っていました。具体的には、X を最小化しようとしていますが、X が等しいソリューションの範囲内で、Y を最小化するソリューションを優先しますか? おそらく、X*large_number+Y のようなコスト関数を定義することでハッキングできますが、適切な解決策があれば、これを適切に行うことをお勧めします。
これを Gecode で実装する方法を誰かが説明してくれれば、それは本当に役に立ちます。ありがとう!
optimization - シンプレックスを解くためのswi prologs clpqライブラリの代替
質問する場所が間違っていたらすみません。
SWI Prolog の clpq ライブラリを使用してシンプレックスを解いています。構文は非常にシンプルで表現力豊かです。次のようになります。
特別な形式に変換する必要はありません。制約とオブジェクト関数を入力するだけです。素晴らしいですが、clpq にはバグがあり、メンテナンスされていないことに気付きました。そのため、自信がありません。
それで、誰かがバグのないオープンソースで同じくらいシンプルなものを知っているかどうか疑問に思っていましたか? 私がこれまでに見つけた最高のものは、GNU 線形プログラミング キットです。シンプレックスを実験するために他の人は何を使用していますか?
prolog - CLPFD から最小化できない
私と友人は、CLP 問題を解決するプログラムを書いています。解決策を最適化するために最小化を使用したいのですが、sum(P,#=,S) から取得した数値が 2 つの数値の間 (たとえば 5..7) であると言い続けるため、うまくいきません。ここから数値を抽出したり、何らかの方法で操作したりする良い方法を見つけることができなかったため、あなたの助けを求めています.
この問題は、リストの各要素が 0 から 1 の間でなければならないという gen_var メソッドから発生しているようです。そのため、適切に設定されずに「0..1」として出力される数値があります。
「5..7」のような数値を取得しても最小化を使用する方法や、その数値を操作して 5 のみを取得する方法はありますか? S (リスト内の要素の合計) は、最小化しようとしているものです。
constraints - 境界点を保証する二次計画ソルバー?
線形制約のある凸二次計画法の最小化として表現した問題があります。問題は、厳密に内部にあるポイントを許可しないことです (つまり、答えが実行可能領域の頂点にある場合にのみ役立つと思います。
目的関数を変更せずにこれを行いたいと思います。私はすでにこれを問題にしないいくつかの変更を検討しましたが、それらはすべて、プログラムを非凸にするという不幸な結果をもたらしました。
私の推定によると、効率的なソリューションの唯一のオプションは、ペナルティ法を使用して実行可能領域の外側からソリューションにアプローチするソルバーです。誰かがこれのためのまともなソルバーを知っていますか?
私の現在の目的関数は、放物線シリンダーの合計です。
java - 2次元配列制約:数独
宿題の制約充足問題として数独を解こうとしています。特定の行のすべての要素と列の制約をすでに作成しました。サブリージョン内の要素の制約を明確に構築しようとしていますが、問題が発生しています。
現在のアルゴリズムの背後にある一般的な考え方は、サブ領域(9x9グリッドの場合は3x3ボックスなど)にあるすべての変数をリストに追加し、そのリスト内のすべての値を並べ替えて、各変数間にNotEqualConstraintsを作成することです。 。以下のコードは、NxNグリッドの最初のサブリージョンで正しく機能しますが、グリッド全体の残りの部分を反復処理するためにこれをどのように変更すればよいかわかりません。
左上のサブリージョンだけでなく、各サブリージョンにヒットするようにコードを変更する方法について、誰かが正しい方向に私を導くことができますか?
編集:私はまた、機能するアルゴリズムを試すこともできます。各サブ領域のArrayListにすべての値を追加する必要はありません。より良い方法を見つけたら、洞察を共有してください
prolog - プロローグで制限のあるジグソーパズルを解く
現在、SICStus Prolog を使用して、prolog の制限を学習し始めています。これを使って簡単な問題を解く方法は知っていますが、ジグソー パズルを解かなければならない練習問題が 1 つあります。ただし、これを解決する方法がわかりません。さまざまなプロパティ (ピース) を持ついくつかの異なる要素があるためです。プロローグでピースのリストを表す方法と、どのような制限を使用する必要があるかの例を教えてください。