2025年2月22日土曜日

Q.プロジェクト作成のレクチャをお願いしたい

 Ans.

どのレベルのレクチャーをお望みでしょうか?

1)名人:菅原レベル: 車の教習時間位必要です。

2)上級: Pythonを除く、あらゆる状況に対処出来る:30時間位

3)中級: Pythonを除く、プロジェクト作成・メンテが一応出来る:15時間位

4)初級:予定を入れて求解操作ができ、簡単なメンテが出来る:7時間位


いずれも、ZOOM共有画面でのマンツーマントレーニンング時間(復習時間を含みません)になります。

クラウドレコーディングするので、後で見返すことが出来ます。

プロジェクトファイルを拝見したところ、

1)新人のペアリング

2)委員会

3)アドバイザ2分の1

で、Python記述がされております。(Pythonは、特殊な仕様に対する記述でして、実際、他の病院では使われておりません。)こちらまで、記述できるようにするには、相当のお時間がかかります。

大変申し訳ありません。プロジェクトを最初から作れるようにするには、中級レベルで、それにしても15時間位は、必要となります。

3月/4月は、お忙しいと思いますので、中々難しいと思いますが、お時間が取れるようでしたら、その期間に間に合うようにトレーニンングマテリアルを準備したいと思います。

ご希望のレベルが決まり、ご希望の時間スケジュールをご連絡頂ければ、それで、ZOOMの予定を組みます。

出来ましたら、毎月15日-25日は、サポートで混むので、その期間以外を希望します。


以上ご検討の程よろしくお願いいたします。

2025年2月21日金曜日

Q.連休が極端に連続する看護師がいる。連休は、最大4日までとしたい。

 Ans.

この制約は、下のように簡単に実装できます。最大4連休までということは、5連休を禁止にすれば良いです。


ただし、適用者に注意が入ります。


夜勤者でないスタッフや、長期休み者等では、年末年始や長期休みで、ハードエラーとなってしまう可能性があります。そこで、それらのスタッフは、適用しないようにしています。

2025年2月20日木曜日

Q.遅勤務1(休遅)は、月1回が上限

 Ans.

「月1回が上限」のニュアンスは、ハード制約だと思います。ただし、スタッフによっては、月2回までやってもよい、という方もおられるかもしれません。そういった要求に対する実装です。


いつものように、スタッフプロパティシートで、希望上限回数を指定します。


行制約で、制約します。ソフトレベル1に着目してください。

行制約レベル1の許容エラー数を1にします。

こうすると、スタッフプロパティシートで、0を指定しているとすると、

0+1=1回までは、ソフトエラー範囲であり、同時に1回以下がハード制約となります。

つまり、2回という解を許容しませんので題意を実現できます。

また、あるスタッフがスタッフプロパティシートに1回と記述すると

1+1=2回までは、ソフトエラー範囲であり、ハード制約でもあります。3回という解は許容しません(存在しません)

このように、題意の要求以上に、将来の変更を予想して記述しておくとメンテナンス性がよくなるでしょう


なお、行制約レベル1には、他の制約も(5連休禁止)あるのですが、不等式制約ではないので、何ら影響はありません。



2025年2月19日水曜日

Q.休日、準夜(準)の職員がいる場合は、日勤の看護師4名をA及びBチームから同数程度を割り当てる 。休日で準夜(準)の職員がいない場合は、日勤の看護師3名をA及びBチームから同数程度を割り当てる

 Ans.

居る場合と居ない場合で記述されています。この場合、

日勤看護師4+準夜1==5

日勤看護師3+準夜0==4

となっていて、同じ値にはならないので、列制約では記述できないように見えます。

ただし、この他に

■準夜(準)がいる場合、長日勤(長日)をA及びBチームに各1名、夜勤(夜)をA及びBチームに各1名割当てる

■準夜(準)がいない場合、長日勤(長日)をA及びBチームに1又は2名合計3名、夜勤(夜)をA及びBチームに1名又は2名合計3名割当てる

という制約があり、
長日2+準夜1==3 夜勤2+準夜1==3
長日3+準夜0==3 夜勤3+準夜0==3

となっています。
これを勘案すると、

準夜1:長日2+休日日勤4==6
準夜0:長日3+ 休日日勤3==6

と、見事に同じ数になっています。本質的な意図は、むしろこちらの方ではないでしょうか? これで、ペア制約ではなく、列制約で記述出来ます。

これを実装すると、以下のようになります。
シフト集合は、



次に、A/Bチームの割り当てです。常に成立するのは、A/Bチームから1名以上という制約です。

一方、
準夜1:日勤4名:Aチーム2名、Bチーム2名以上
準夜0:日勤3名:Aチーム1名以上、Bチーム1名以上

となっています。これより、

    Aチーム人数日勤者数==準夜+1

となっている関係であることが分かります。こういう等式がある場合は、リニアペア制約が使えますが、今回は、列制約とペア制約を用いて記述しました。

■休日A/Bチームから1名以上 :列制約
■休日準夜が居るならば、Aチームは、2名 :ペア制約

Aチーム2名とすることで、自動的にBチームも2名になりますから、上の記述だけで十分です。必ず出来るかは、分かりませんのでペア制約は、ソフト制約としています。1名以上は、mustでしょうからハード制約としています。










2025年2月18日火曜日

Q.準夜(準)がいる場合、長日勤(長日)をA及びBチームに各1名、夜勤(夜)をA及びBチームに各1名割当てる 。準夜(準)がいない場合、長日勤(長日)をA及びBチームに1又は2名合計3名、夜勤(夜)をA及びBチームに1名又は2名合計3名割当てる

 Q.

■準夜(3交代準)がいる場合、長日勤(長日)をA及びBチームに各1名、夜勤(夜)をA及びBチームに各1名割当てる

■準夜(3交代準)がいない場合、長日勤(長日)をA及びBチームに1又は2名合計3名、夜勤(夜)をA及びBチームに1名又は2名合計3名割当てる


Ans.

上の仕様を式で表現すると、以下の関係になっています。

長日2+準夜1==3 、夜勤2+準夜1==3
長日3+準夜0==3 、夜勤3+準夜0==3

つまり、足すと常に3です。こういう関係は、ペア制約ではなく列制約で記述した方がベターです。

シフト集合は、以下で合成します。


2025年2月17日月曜日

Q平日の日勤は9名以上が望ましく、A及びBチームから同数程度を割り当てたい

Ans.

「日勤9名以上」は、そのまま列制約で記述すれば良いのですが、「望ましい」とあることから、ソフト制約とします。

「A及びBチームから同数程度」は、9/2=4. 5 ですので、Aチームから4名以上、Bチームから4名以上とすればよいでしょう。

 






2025年2月15日土曜日

AI技術サーベイ

 目標としているのは、モデリングの代行をAIに行わせることはできないか?ということです。似たようなこととして、プログラミング言語または、独自言語を生成AIで生成させること、または、学習すること、その視点でサーベイしてみました。

https://qiita.com/jovyan/items/6767c9fd944a636fdf88

https://note.com/k_ishi_ai/n/n2897a12f917c

https://note.com/k_ishi_ai/n/n475c804f3195

https://zenn.dev/knowledgesense/articles/110a81646806e6

最終目標は、

日本語 ⇒ 構造化JSON ⇒ プロジェクトファイル 

とすることです。AIが日本語から、構造化JSONを出力させることが出来れば、自動的にプロジェクトファイルには、出来ると思います。そしてそれが正しいかどうか?チェックもまた可能だろうと思います。

問題は、如何にして、それを学習させるかがポイントになると考えられます。
ローカルでDeepSeekをファインチューニングさせることが出来れば、遊べるようになると思います。

下記論文に着目しています。Native Language(英語)とCHAT GPTを用いて、Gurobi等のソルバを呼び出すようです。


NL4Optは、ORとAIの合同チームによるモデリングCompetitionです。ここでもファーウェイが主導しているようです。


こちらは、今後も注目していきたいと思います。現在は、全てChatGPTによるものですが、今後は、DeepSeekを使った報告も出てくるだろうと思います。



現時点で言えるのは、当面モデリングエキスパートの需要はなくならない、ということだろうと思います。言語から簡単にモデリングというのは、現時点においては幻想です。暗黙知の他に、ときに、本人も言葉に出来ない制約があります。その職場に固有の事情や知識も必要となります。加えて言葉の外にある制約や、意図、心理等、を全て学習しない限り、100%の精度で制約には変換できないと思います。エラーが存在する⇒そこにエキスパートが必要だと思います。

ローカルLLM