OptHub

機械加工スケジューリング問題(単目的)

2023年 進化計算コンペ 単目的部門の問題
機械加工スケジューリング問題(単目的)

Input / Output

When submitting a solution to a match, please make sure to meet the following conditions.

入力フォーマット

以下のJSONオブジェクトを入力して下さい.

キー 説明
schedule list[int] 各作業(取り付け・取り外し)の日付割り当て([ワーク1取り付け日, ワーク1取り外し日, ワーク2取り付け日, ワーク2取り外し日, ...])
timeout int サーバーの計算時間(s)
"schedule"に関する注意点

一部のワークは複数回加工が必要なものがあります.この場合の実際の作業は取り付け,加工,取り外しを繰り返します.
送信する解は,
[ワーク1の1回目の取り付け日, ワーク1の1回目の取り外し日, ワーク1の2回目の取り付け日, ワーク1の2回目の取り外し日, ワーク2の1回目の取り付け日, ワーク2の1回目の取り外し日, ...]
のように,各ワークの作業の日付割り当てを全て設定した後に,次のワークの作業の日付割り当てを設定してください.

正しい例
{
    "schedule": [1, 1, 2, 3, 2, 2,...],
    "timeout": 600
}

scheduleの配列長は問題ごとに異なります.全てのワークの取り付け・取り外し作業の日付割り当てを入力してください.範囲は1〜9の整数です.

timeoutはサーバーのSCIPによる計算時間の上限値の設定です.秒数を整数で入力してください.分や時間では入力できません.

誤った例
{
    "schedule": [1.3, 1.0, 2.9, 3.5, 2.1, 2.4,...],
    "timeout": 600.7
}

数値に小数を入力してはいけません.

{
    "schedule": 1, 1, 2, 3, 2, 2,...,
    "timeout": 600
}

scheduleの配列は[]で囲ってください.

{
    'schedule': [1, 1, 2, 3, 2, 2,...],
    'timeout': 600
}

シングルクォーテーションは使えません.ダブルクォーテーションで囲ってください.

{
    "schedule": [1, 1, 2, 3, 2, 2,...],
    "timeout": "600"
}

timeoutの値をクォテーションで囲わないでください.

{
    "schedule": [1, 1, 2, 3, 2, 2,...],
    "timeout": 600,
}

末尾にコンマを付けてはいけません.

出力フォーマット

解を受け取ると,評価値の計算を行い,以下のJSONオブジェクトを返します.

キー 説明
object float 評価値(目的関数値)
constraint null 未使用
error str エラーが発生した場合のエラー文.入力された解のフォーマットに問題がある場合などに表示される.
info dict[str, union[float, list[float]]]
  • exe_time: float
    評価値の計算にかかった時間(サーバーのSCIPでの計算時間)
  • delays: list[float]
    各ワークの納期違反量のリスト( ψjP\psi^{\text{P}}_j の値).納期までに作業が終わったワークは0.0となる.
{
    "objective": 1550.5,
    "constraint": null,
    "error": "エラー文",
    "info": {
        "exe_time": 503.223,
        "delays": [0.0, 0.0, 30.5, 14.5,...]
    }
}

練習問題SOP-Practice

スケジュールの開始前の時点でパレットにはワークが取り付けられていません.一方,治具はあらかじめ取り付けられています.パレットは12個あり,取り付けられている治具は以下の表のとおりです.

パレットID 治具ID
1 3000
2 3000
3 4000
4 4000
5 4000
6 5000
7 5000
8 6000
9 6000
10 6000
11 8000
12 8000

加工するワークは以下の表のとおりです.

ワークID ワークの品番 取付作業時間[m] 加工作業時間[m] 取外作業時間[m] 使用治具ID 着手可能日[日目] 納期[日目]
1 1 15 65 15 4000 1 5
2 1 15 65 15 4000 1 5
3 2 15 90 15 8000 1 5
4 2 15 90 15 8000 1 5
5 3 37 72 8 9000 1 5
6 3 37 72 8 9000 1 5
7 4 15 14 15 3000 1 5
8 4 15 14 15 3000 1 5

取り付けと取り外し作業の合計は16なので,送信するscheduleの配列長は16となります.

各治具の数は以下のとおりです.パレットに最初から取り付けられている分を含みます.

治具ID 個数
1000 -
2000 -
3000 2
4000 3
5000 2
6000 5
7000 -
8000 2
9000 1
10000 -

問題SOP1

スケジュールの開始前の時点でパレットにはワークが取り付けられていません.一方,治具はあらかじめ取り付けられています.パレットは12個あり,取り付けられている治具は以下の表のとおりです.

パレットID 治具ID
1 3000
2 3000
3 4000
4 4000
5 4000
6 5000
7 5000
8 6000
9 6000
10 6000
11 8000
12 8000

加工するワークは以下の表のとおりです.

ワークID ワークの品番 取付作業時間[m] 加工作業時間[m] 取外作業時間[m] 使用治具ID 着手可能日[日目] 納期[日目]
1 1 13 18 25 1000 1 5
2 1 13 18 25 1000 1 5
3 2 14 25 14 7000 1 5
4 2 14 25 14 7000 1 5
5 3 15 65 15 4000 1 5
6 3 15 65 15 4000 1 5
7 4 15 72 15 9000 1 5
8 5 15 90 15 8000 1 5
9 5 15 90 15 8000 1 5
10 6 37 72 8 9000 1 5
11 6 37 72 8 9000 1 5
12 7 15 36 15 6000 1 5
13 7 15 36 15 6000 1 5
14 8 15 14 15 3000 1 5
15 8 15 14 15 3000 1 5
16 9 15 114 15 2000 1 5
17 10 15 36 15 5000 1 5
18 10 15 36 15 5000 1 5
19 11 22 117 22 10000 1 5
20 11 22 117 22 10000 1 5

取り付けと取り外し作業の合計は40なので,送信するscheduleの配列長は40となります.

各治具の数は以下のとおりです.パレットに最初から取り付けられている分を含みます.

治具ID 個数
1000 1
2000 1
3000 3
4000 3
5000 2
6000 3
7000 1
8000 2
9000 2
10000 1

問題SOP2

スケジュールの開始前の時点でパレットにはワークが取り付けられていません.一方,治具はあらかじめ取り付けられています.パレットは12個あり,取り付けられている治具は以下の表のとおりです.

パレットID 治具ID
1 1000
2 3000
3 3000
4 4000
5 4000
6 5000
7 5000
8 6000
9 6000
10 6000
11 8000
12 8000

加工するワークは以下の表のとおりです.

ワークID ワークの品番 取付作業時間1[m] 加工作業時間1[m] 取外作業時間1[m] 使用治具1ID 取付作業時間2[m] 加工作業時間2[m] 取外作業時間2[m] 使用治具2ID 取付作業時間3[m] 加工作業時間3[m] 取外作業時間3[m] 使用治具3ID 着手可能日[日目] 納期[日目]
1 1 12 78 2 9000 - - - - - - - - 1 5
2 2 14 150 13 2000 - - - - - - - - 1 5
3 3 15 72 15 9000 - - - - - - - - 1 3
4 4 15 90 15 8000 - - - - - - - - 1 5
5 4 15 90 15 8000 - - - - - - - - 1 5
6 5 15 36 15 5000 - - - - - - - - 1 2
7 5 15 36 15 5000 - - - - - - - - 1 2
8 6 22 117 22 10000 - - - - - - - - 1 4
9 6 22 117 22 10000 - - - - - - - - 1 4
10 7 15 60 15 3000 15 60 15 5000 - - - - 1 5
11 8 15 144 15 4000 14 48 14 6000 - - - - 1 5
12 9 10 34 10 3000 12 40 12 6000 - - - - 2 5
13 9 10 34 10 3000 12 40 12 6000 - - - - 2 5
14 10 14 108 14 8000 15 96 15 7000 15 114 15 2000 2 6
15 11 12 108 12 8000 7 96 7 6000 10 144 10 2000 1 5

取り付けと取り外し作業の合計は46なので,送信するscheduleの配列長は46となります.

各治具の数は以下のとおりです.パレットに最初から取り付けられている分を含みます.

治具ID 個数
1000 1
2000 2
3000 3
4000 3
5000 2
6000 4
7000 1
8000 3
9000 2
10000 1