問題タブ [sicstus-prolog]

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.

0 投票する
1 に答える
309 参照

prolog - SICStus Prolog で SWI-Prolog の atom_to_term(+Atom, -Term, -Bindings) をシミュレートするには?

SICStus Prolog を使用して Dali エージェントを作成しています。アトムを項に変換する必要がありますがatom_to_term、SWI-Prolog に組み込まれているものを使用できません。

0 投票する
2 に答える
326 参照

prolog - atom_to_term を使用しているコードを SWI-prolog から SICStus Prolog に変換する方法

たとえば、2つのアトムを比較してどちらが優れているかを確認するルールを作成しようとしています(memory_with_gb_2はmemory_with_gb_1よりも優れています)。SWI-prologで書いて試したことは次のとおりです。

これは SWI-Prolog では完全に機能していますが、SICStus Prolog で試してみるとうまくいかないようです。SICStus で上位コードを実装する方法はありますか。

0 投票する
1 に答える
116 参照

prolog - マトリックス列と all_different の使用の違い

リストのリスト内のある要素から別の要素への遷移に関する関係を表現しようとしています。私ができるようにしたいのは、2 つの任意の要素の間に特定の違いが存在する必要があるということです。

リストがあれば

ここで、すべての要素は長さ Y のリストです。

ここで、Xa のすべての要素が 1 を除いて等しいかそれ以下であり、Xa と Xb が X の任意の要素 (a!=b) である Xa->Xb との違いがあることを表現したいと思います。

例: Xa=[1,1,1,1] の場合、Xb は [1,1,1,2] になる可能性があります。これは、すべての要素が等しいか、1 を除いて減少するためです。最後の要素は 1->2 になります。

これを行うために、次の述語を書きました。

これは問題なく動作します。行で all_different() も使用しようとすると、問題が発生します。例:解決策は次のようになると思います:

しかし、ラベル付けは「永久に」ハングします

私のアプローチは間違っていますか?これを解決するより良い方法はありますか?

テストコード:

そして、私はそれを次のように実行します:

0 投票する
2 に答える
316 参照

prolog - プロローグ、ラベリング ヒューリスティックのテスト

Sicstus Prolog でさまざまなラベル付けヒューリスティックを比較するためのいくつかの実験に取り組んでいます。

しかし、「リソース エラー: メモリ不足」が発生し続けます。

テストコードで何か間違ったことをしていると確信しています。

次のコードは私の問題を再現します:

t1 述語を呼び出した直後に、「リソース エラー: メモリ不足」という例外が発生します。

リソースを解放するために atest を呼び出した後、何かをする必要があると思いますか?

また、これはラベル付け時間を測定する正しい方法ですか? これを行うより良い方法はありますか?

0 投票する
1 に答える
307 参照

prolog - プロローグ: global_cardinality を使用して、リストに少なくとも M に等しい N 個の要素があることを伝える方法 (M、N は整数)

例: 私はいくつかの変数を持っています: A,B,C,D と条件: [A,B,C,D] リストには、少なくとも2 倍の数値 2が必要です。global_cardinality/2組み合わせ制約のみを使用できます。 .

0 投票する
1 に答える
107 参照

prolog - 累積でのマシンの終了時間

cumulatives/3モデル化に使用したスケジューリングの問題に取り組んでいます。

元:

述語を実行すると、次のs1/3ようになります。

この例は、m1 が 12 で、m2 が 15 で、m3 が 15 で行われることを示しています。

しかし、各マシンがすべてのタスクを完了したときを表現する「最適な」または最良の方法は何ですか? マシンの終了時間にいくつかの制約を追加したいと思います。これを表現するのに適したグローバルな制約はありますか?