TKGは暇を持て余す

高時給バイトのフリーターしながらゆるゆると生きている頑張らない系趣味日記

小規模事業所の勤務シフト作成自動化アプリ(遺伝的アルゴリズムを用いた最適化問題の解決)

おひさしぶりです。たかぎです。

久しぶりに更新したかと思ったら調子に乗って2記事も書きました。

 

先日いつも行っている美容院にいったところオーナーさんが「今日は野郎しか居ねえなあ」と言ってました。聞くとアシスタントさんは大体男女同じくらい出勤するようにシフトを組んでもらってるみたいですが、その日はたまたま男ばっかりになってたそうな。

シフトはスタッフさんが作ってオーナーがチェックするようですが毎月かなりの労力がかかって困っているとのこと。以前遺伝的アルゴリズムを用いた最適化の手法がシフト作成に使えると何かで見て知っていたことと、最近ポケモン自動化のためにPython触っていて頑張ればできそうだし勉強になるかなと思ったのでちょっと作ってみることにしました。

 

とりあえず遺伝的アルゴリズムの手法についてゆーちゅーぶ先生に教えてもらい、システムの要件をまとめてChatGPTに投げました。勉強になるとか言ってコード書いてないやん。

とはいえ、いきなりコード全体を作ってもらうのは無理なので、開発に必要なステップを(ChatGPTに聞いて)決めて、必要な機能を(これも聞いて)細かく分けて、それぞれのクラス、メソッドを1個ずつ作ってもらいました。そしてさいごにそーれがっちゃんこ。整合性が取れてなくてエラーの出る部分を再度ChatGPTに該当部分のコードを投げて直させて出来上がり。約900行のコード、40~50時間くらいでできたと思います。素人にしては早く出来たと思います。今月apex始めてプレイ時間が既に100時間余裕で突破したのを考えると安いもんですね。ちなみに作業時間のうち9割以上は仕事中に作ってました(?)自宅での作業時間はほぼゼロです。

 

で、出来上がったのがこちら

従業員管理から従業員情報を入力して、年・月を選んでシフト作成開始。

店の休みの日、希望の休日、従業員ごとの休日日数をセットしてシフト作成ボタンをポチッと。

 

動作はこんな感じ(確認用に動作回数を減らして試行回数1回で終わるようにしてます)

数回の試行後最も評価の高いバイトのシフト表が出力されるので、あとは人の目で確認して変えたい部分をちょっと変えればOKです。1から考えるよりははるかに楽になるはずです。

評価関数や社員属性は美容院用につくってあるのでこのまま他の事業所には使えませんが、設定をちょっといじるだけなので変更自体は簡単です。

 

という感じでシフト表自動作成プログラムを作ってみました。月数千円出せば専門家が作った高機能なアプリがあるっぽいんですけどね。

 

試作段階なのと事業所ごとに条件の設定が必要なので一般公開の予定はありませんが、必要としている方がいればTwitterでご相談ください。お安くしておきます。