number-place
When submitting a solution to a match, please make sure to meet the following conditions.
この問題で送信する解は、各要素が0から9の整数の81次元配列である。配列の各要素はナンプレの各マスに対応しており、左上がインデックスが0、右上のインデックスが8、左下のインデックスが71、右下のインデックスが80になるように対応しています。すなわち、左上から右側にインデックスが上昇して、一番右端に到達した場合は1つ下の段に移動する形でインデックスが振られています。配列の要素の数字は、0は空マス、1から9はそれぞれの数字がマスが入っていることを意味する。
また、実際のナンプレの制作現場では、数字を入れるマスを先に決めたいケースが多い。今回の問題設定も、現場の運用に合わせて数字を格納できる場所が限られている。具体的には、環境変数HINT_PATTERNに基づいてコントロールされる。HINT_PATTERNの要素が0の場合、それに対応するマスには数字は格納できず、要素が1の場合、それに対応するマスには数字を必ず格納する必要がある。
以下に、HINT_PATTERNと送信する送信する解の具体例を示す。要素に0が格納されている場所がHINT_PATTERNと送信する解で一致している点に注意されたい。
# HINT_PATTERN
[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1]
# 送信する解
[8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 6, 8, 0, 7, 4, 0, 0, 0, 4, 0, 0, 6, 0, 0, 2, 0, 0, 5, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 8, 0, 0, 9, 0, 0, 8, 0, 0, 6, 0, 0, 0, 1, 7, 0, 2, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 3]
本問題の評価結果は、目的関数の値objective、実行可能性feasible、エラーerrorが返却される。目的関数objectiveの値はfeasibleがTureの場合のみ返却される。サーバーでエラーが発生した場合は、目的関数の値objective、実行可能性feasible返却されず、評価回数としてはカウントされない。
目的関数の値objectiveは、多目的問題の場合(環境変数MULTI_OBJECTIVEがTrueの場合)は2次元のベクトルである。1次元目は緊張感を表すfloat型の値、2次元目は連鎖長を表すfloat型の値である。単目的問題の場合(環境変数MULTI_OBJECTIVEがTrueの場合)は、緊張感と連鎖長を環境変数OBJECTIVE_WEIGHTに基づいて加重和をとった値(float型)を目的関数の値として利用する。
ユーザが送信した解は、以下の観点で実行可能性が判定される。実行可能性feasibleは、以下の条件を1つでも満たす場合はfalse、全て満たさない場合はtrueとなる。
HINT_PATTERNの指定と異なる場合期待しない形式で解を送信した場合やサーバー内部で予期せぬエラーが発生した場合には、エラーerrorが返却される。自分が送信した解が指定の形式になっているかどうかを確認し、送信した解に問題がない場合はコンペの管理者に問い合わせをしてください。
例1:多目的問題で実行可能解を送信した場合
{ objective: [0.3154, 0.3619], feasible: true }
例2:単目的問題で実行可能解を送信した場合
{ objective: 0.5672, feasible: true }
例3:多目的問題で実行不可能解を送信した場合
{ feasible: false }
例4:多目的問題で実行不可能解を送信した場合
{ feasible: false }