6th Asprova Programming Contest
Can Participate: All Rated Range: - Penalty: None
入賞者にはasprova.comドメインからのメールで賞金の授与に関してご案内します。スパムフォルダなどに入っていないか、ご確認ください。
Asprova プログラミングコンテストとは
- アスプローバ株式会社が開催するマラソン型のプログラミングコンテストです。
- アスプローバ株式会社は、生産スケジューラ(工場の詳細スケジュールを計算するソフトウェア)を開発・販売している日本の会社で、製品開発は日本で行っています。日本ではトップシェア、中国・韓国・東南アジア・欧米など全世界で販売・技術サポート活動を展開し、世界ナンバーワンの生産スケジューラを目指して研究開発を行っています。
問題
-
あなたは、パン工場のスケジューリング担当者です。 この工場にはパン焼き機が M 台あり、 I 種類のパンを生産できます。 それぞれのパン焼き機は、 1 回で焼けるパンの数が決まっており、同時に 1 種類のパンしか焼けません。 またパンの種類とパン焼き機毎に焼き時間が決まっています。 パンの種類を変更するとき、直前に製造したパンの種類との組合せに応じた段取り時間が発生します。 また、パン焼き機ごとに休日が決められており、休日はパンを焼くことはできません。
今、 R 個のオーダ(注文)を受け付けました。 オーダ r はパンの種類 i 、数量 q 、最早開始時刻 e 、 納期 d 、粗利金額 pr などが指定されます。 オーダ r は分割して、空いている時間帯や別のパン焼き機で焼くことができます。 オーダ毎に粗利金額 pr を受け取れますが、納期から遅れてしまうと納期遅れペナルティ金額 pe1 が発生します。また、パンを焼く際に発生する電力コスト金額 ec 、段取り時間が発生する毎に段取り時間コスト金額 cc が発生します。 この制約のもとに、利益 P が最大になるスケジュールを作成してください。
ルール
- 参加資格:所属・年齢・居住地を問いません。(アスプローバ株式会社と同業関係者はご遠慮ください)
- 参加登録:参加希望の方はこのページの参加登録ボタンから参加登録を行ってください。
- 参加登録期間:2020年3月30日~2020年5月7日
- コンテスト開催期間:2020年4月30日 AM 10:00 ~ 2020年5月7日 AM 10:00
- 提出間隔:プログラム提出後10分間は再提出できません。
- 順位:システムテストの結果で決定します。システムテストで用いるデータは、コンテスト期間中のジャッジ用データとは異なるデータです。
- システムテスト実行日:2020年5月8日。遅くとも5月11日までには終了する見込み。
- システムテスト対象のコード:CEを除く最新の提出
- 使用可能言語:C++, C#, Python 3, Java8, Rust
- 問題文は日本語と英語で提供します。
- その他、AtCoder社の利用規約、チュートリアル、ルール、用語集、よくある質問 をお読みください。
賞金
- 成績上位者には、以下の賞金を授与いたします。
- 1位 160,000円
- 2位 80,000円
- 3位 40,000円
- 4位 20,000円
- 5~10位 10,000円
- 賞金は銀行振込でお渡しします。
懇親会
- zoomでのオンライン開催となります。
- 日時:2020年5月15日(金) 17:00から
- 定員:15名
- 予定:
- 17:00 主催者挨拶
- 17:10 入賞者によるプログラム解説
- 17:40 コンテスト講評 (東京工業大学 工学院 経営工学系 水野教授)
- 18:00 表彰式
- 18:10 テーマディスカッション
- 19:00頃 閉会
- 申し込み:
- コンテストに参加しなかった方でも参加できます。
- 定員をオーバする場合は以下の順番で参加の可否を決めさせていただきます。
- 1.入賞者10名
- 2.コンテスト参加者(上位優先)
- 参加ご希望の方はこちらから、お申し込みください。
特典
- 成績優秀者は正社員またはアルバイト(時給2,500円)採用を優遇します。
当コンテストの問題と、実社会の問題との関係
-
実際の工場のスケジューリングに、どう役に立つのか
工場には、炉などの熱処理などを行なうことがあります。 炉は一度に複数の中間品を入れて熱処理などの工程を行ないますが、一度に多くの中間品を熱処理すると生産性が向上しやすくなり、また炉の使用回数も減らせれば電気代を安くできるなど、効率が良くなります。 さらに、異なる温度で熱処理する場合には温度調整のための段取り時間が必要になることがありますが、段取り時間をできるだけ少なくすることも生産効率を良くするために重要です。 一方で、炉には、同じ温度で処理するものしか一緒に入れられないという制約や、途中に中断を許さないなどの制約が伴うことが多くあります。 このような制約の下で、最適なスケジュールを作ることは工場にとって重要な問題です。
リンク
Asprova Programming Contest
- This is a marathon programming contest hosted by Asprova Corporation.
- Asprova Corporation is a company in Japan that develops and sells production scheduling software to factories for planning detailed workflows. Software development and headquarters are in Japan. Asprova Corporation conducts sales and provides technical support both in Japan and all over the world, including China, South Korea, South East Asia, Europe, and the United States. The company performs R&D intending to become the world's number one production scheduler.
Problem
- You are a person, that responsible for production scheduling for a bread factory. The factory has M bread baking machines and can produce I types of bread. Each bread machine has a fixed number of breads to bake at a time, and only one type of bread can be baked at a time. In addition, baking time is decided every type of bread and bread baking machine. When changing the type of bread, setup time will occur depending on the combination with the type of bread that was just baked. Holidays are determined for each bread baking machine, and bread cannot be baked on holidays. The factory received R orders. For each order r there are bread type i, quantity q, earliest start time e, delivery due date d, gross profit pr, and so on. The order r can be split and baked in the spare time or on another bread baking machine. At most, you can receive the total profit pr for every order, but if you are late from the due date, you will receive a penalty amount pe1. In addition, the electricity cost amount ec that occurs when baking bread and the setup time cost amount cc occur each time the setup time occurs. Create a schedule that maximizes profit P under these constraints.
Rules
- Participation requirement: Anyone can participate regardless of age, organization, or location. (Please refrain from joining if you are working in Asprova or from the same industry)
- Participation registration: Click on the Register button to register.
- Registration period: 30th Mar 2020, 10:00 AM (JST) - 7th May 2020, 10:00 AM (JST)
- Contest period: 30th Apr 2020, 10:00 AM (JST) - 7th May 2020, 10:00 AM (JST)
- Submit Interval: You cannot submit a solution for 10 min after submitting the last one.
- Available languages: C ++, C #, Python 3, Java8, Rust
- Final tests execution date: 8th May 2020. Final tests will finish by 11th May 2020 at the latest
- The code used for final tests : The latest submitted code except CE.
- The problem statement is provided in both Japanese and English.
- Please also read AtCoder's Terms of Service, tutorial, rules, glossary, FAQ for other information.
Prizes
- The following money prizes will be awarded to the top performers:
- 1st: 160,000 yen
- 2nd: 80,000 yen
- 3rd: 40,000 yen
- 4th: 20,000 yen
- 5th~10th: 10,000 yen
- The award would be sent to the winners' bank account.
Other privileges
- The top performers will be prioritized for consideration for a full time or part-time (2,500 yen per hour) job opportunity.
How does the contest question relate to real-world problems?
-
How is this useful for an actual factory scheduling?
In a factory, heat treatment of furnaces may be performed. Furnaces process heat treatment, etc., with multiple intermediate products at once. However, heat treatment of many intermediate products at once can improve productivity, and if the number of furnace uses can be reduced, electricity costs can be reduced. It can be more efficient. Furthermore, when heat treatment is performed at different temperatures, setup time for temperature adjustment may be required. It is also important to minimize the setup time to improve production efficiency. On the other hand, furnaces often have restrictions such that only those that are processed at the same temperature can be put together, and that no interruption is allowed on the way. Given these constraints, creating an optimal schedule is an essential task for factories.