最適化セミナーのご案内

12.4 制約充足問題ソルバ(wcsp)における出力

 制約充足問題ソルバ(wcsp)を用いた場合には,[Progress]で始まるセクションに「最良解におけるハード制約」,「ソフト制約のペナルティ値」が逐次表示されます.

<preprocess begin>..........<preprocess end>
preprocessing time= 1.581(s) 
<iteration begin>
--- TryCount = 1 ---
# random seed = 1
(hard/soft) penalty= 4034/46144686, time= 0.15(s)
<greedyupdate begin>..........<greedyupdate end>
greedyupdate time= 0.52(s)
(hard/soft) penalty= 852/39782402, time= 0.67(s), iteration= 1
(hard/soft) penalty= 844/39782402, time= 0.67(s), iteration= 2
(hard/soft) penalty= 836/39782402, time= 0.67(s), iteration= 3
(hard/soft) penalty= 829/39782402, time= 0.67(s), iteration= 4
            ...
(hard/soft) penalty= 0/51583, time= 33.36(s), iteration= 61908
(hard/soft) penalty= 0/49199, time= 34.78(s), iteration= 65436
(hard/soft) penalty= 0/48313, time= 35.29(s), iteration= 66590
(hard/soft) penalty= 0/45423, time= 43.54(s), iteration= 81708
# (hard/soft) penalty= 0/45423
# cpu time = 43.54/100.00(s)
# iteration = 81708/191770
<iteration end>

 項目の意味は次の通りです.

表示 意味
(hard/soft)
penalty=値1/値2
time=値3,iteration=値4
発見された解に関する
値1:ハード制約違反量,値2:ソフト制約違反量
値3:経過時間,値4:反復回数
--- TryCount = ... --- 現在の計算回数の値
# random seed = ... 乱数の種の値
# penalty=... 最良解のペナルティ値
# cpu time = ... 最良解発見時の経過時間
# itereation = ... 最良解発見時の反復回数
#status=... 反復停止の理由

 

 最初の項目で説明されている表示は最良解が更新される度に現れます.解が更新されないと表示は停止しますが,計算は行われています.メタ・ヒューリスティクスによる探索の一般的な性質として,計算の後半には解の更新は鈍くなります.

 「現在の計算回数の値」と「乱数の種の値」に関しては15.3.3を参照してください.

 

 制約にセミハード制約が付随している場合は,次のような出力になります.

<preprocess begin>..........<preprocess end>
preprocessing time= 1.545(s) 
<iteration begin>
--- TryCount = 1 ---
# random seed = 1
(hard/semihard/soft) penalty= 3087/947/46144686, time= 0.18(s)
<greedyupdate begin>..........<greedyupdate end>
greedyupdate time= 0.47(s)
(hard/semihard/soft) penalty= 816/47/39782402, time= 0.65(s), iteration= 1
(hard/semihard/soft) penalty= 809/47/39782402, time= 0.65(s), iteration= 2
(hard/semihard/soft) penalty= 802/47/39782402, time= 0.65(s), iteration= 3
(hard/semihard/soft) penalty= 795/47/39783312, time= 0.65(s), iteration= 4
              ...
(hard/semihard/soft) penalty= 0/0/39197, time= 57.64(s), iteration= 112969
(hard/semihard/soft) penalty= 0/0/38668, time= 57.77(s), iteration= 113413
(hard/semihard/soft) penalty= 0/0/37520, time= 57.90(s), iteration= 113820
(hard/semihard/soft) penalty= 0/0/36700, time= 66.90(s), iteration= 133811
# (hard/semihard/soft) penalty= 0/0/36700
# cpu time = 66.90/100.00(s)
# iteration = 133811/207515
<iteration end>

 penalty値に,セミハード制約の違反量も出力されます.

表示 意味
(hard/semihard/soft)
penalty=値1/値2/値3
発見された解に関する
値1:ハード制約違反量,値2:セミハード制約違反量
値3:ソフト制約違反量

 

 

上に戻る