Work shift scheduling using python + pulp

Job ID: 32922381

Budget: $200 – $400 USD

Hello colleagues!

I need you to write a code to automate workforce scheduling using python and pulp (not gurobi for license reasons) ,and make up a small app.

In short, I want you to mush-up the following site (sorry, in Japanese) to create a work shift schedule.
https://zenn.dev/nnabeyang/scraps/8e3d99b93d9c4a
I attach files that I wrote for the 'one shift per day' conditions and also attach the input/output spreadsheet.

Specifically, inputs will be
1: first day of the period,
2: list of members,
3: list of shift hopes,
4: list of the needed number for each shift,
5: list of members skill levels and
6: list of pairs to avoid.
I'll be thankful if input 1 is prompted, inputs from 2 to 6 are taken from some spreadsheet.

And the outputs should be
Best available work shift in spreadsheets, with some statistics like the number of assigned shifts, members and which constraint conditions had how many points and so on.

It is helpful if I can change the following values like
1: number of shifts per day as, 1, 2, and 3,
2: constants and variables for constraint penalty
3: shift patterns to avoid

Constraints will be
1: avoid unmatched shift need,
2: avoid 4 continuous day or afternoon shifts. if any, assign 2 days off immediately after continuous shifts,
3: avoid 3 continuous night shifts. if any, assign 2 days off immediately after continuous shifts,
4: avoid work shift difference from average in the same work shift amount group,
5: avoid shift without at least one skilled member,
6: avoid long blank,
7: avoid frequent Friday shift,
8: avoid shift pattern (referred to as 'Q' and 'Q2' in the link),
9: preserve weekend (Saturday and Sunday) off duty at least one per month for each member,
10: avoid day shift immediately after night shift,
11: avoid 'orphaned shift'. orphaned means 'off duty after only one duty (off-on-off)',
12: avoid pairs of concerns.

I'll appreciate it if you have a consider.

Yours,
tonishi