2023年11月30日木曜日

Zoom Meetingについて

ご希望のあるお客さまには、Zoomで操作方法等をお教えしています。(プロジェクト作成サービスのお客さまは無料です。)お客さまのビデオをオフとすることも可能です。

Q.その日までこちらで整えておく設備は何かありますでしょうか?

サブスクはそれまでに入っておきます。zoomは使用したことがありません。

Ans.



■事前準備について、

当日時刻になりましたら、上のURLをクリックすればよいのですが、参考までに、ZOOM Meetingの参考になるサイトをご案内します。ZOOMは、無料版でOKです。


https://yogashare.info/blog/zoom-macbook-2/


サイトで言っているとおり、事前にインストールして、カメラとマイクのテストを行っておくとよいでしょう。


■設備について

マイクは、必須です。カメラは、必須ではないと思いますが、なしで行ったことがないので、WEBカメラを購入されることをお勧めします。

ZOOMミーティング用途だけでしたら、高いのは必要ありません。


https://kakakumag.com/camera/?id=16484


また、NotePCでしたら、購入しなくとも備わっていると思います。



■サブスクのインストール


ダウンロードに時間がかかる場合がございます。当日までに、ZOOMミーミーティング用のPCにインストールをお願いします。

稼働PCとは違っても構わないのですが、説明する画面を共有する関係で同じPCで説明した方が都合がよいです。(同じマイクロソフトアカウントで10台まで使用できますが各々インストールが必要となります。)

以上です。


2023年11月29日水曜日

Pythonの必要性

Q.スケジュールナースはノーコードで論理式を組んで、演算させるソフトなので

それなりに複雑な条件式を仕様書から落とし込まないと実用的なシフト自動作成にはならず、

ノーコードで対応できない部分はPythonのプログラム記述で対応となっていると思います。

なので、買取や月額だけで動くソフトではなく論理式を組む必要があるのですが、その実績もありますか?

A.

恐れ入りますが同意致しかねます。

スケジュールナースは、「集合」を用いたハード制約・ソフト制約という制約で記述するスタイルが、他のソフトと明確に異なります。

雛形はありません。汎用的であり、微細な制約も記述可能な反面、プログラミングスキルに似た一定のバリアが存在し、それさえも面倒で難しいと感じる方が少なくありません。

また、過去にPythonでしか記述出来なかったコードもバージョンアップによりGUI化での記述を促進しており、看護師・介護士勤務表に関しては、GUIのみプロジェクトが大半となっております。


参考:以下のお客さまもPythonなしですが、前述の理由から、菅原システムズのプロジェクト作成サービスを利用されています。


https://www.nurse-scheduling-software.com/japanese/nurse_scheduling_problem/chapter30/

Pythonは、組み込み版(3.10)を採用しています。他の環境は使用しません(出来ません)。


以下は、制約の記述例です。ご利用されている実際のお客さまのプロジェクトの断片を切り取ったものが殆どですが、どのようなときにPythonを使わざるを得ないか?の参考にはなるかと思います。



実績という意味において、看護師・介護士勤務表については、前述の通りです。
その他のプロジェクト作成サービスでPythonを使う頻度は、2-3割程度と思います。
独自言語からPythonに移行して数年経ちますが過去のPythonコードは全て継承するというポリシーは貫いておりますので、ご安心ください。

2023年11月26日日曜日

Nov252023 Release

 1)予定縮小時の不具合改善

https://schedule-nurse.blogspot.com/2023/11/blog-post_15.html

2)UnaryCounterの実装

https://schedule-nurse.blogspot.com/2023/11/blog-post_21.html

https://schedule-nurse.blogspot.com/2023/11/blog-post_17.html

3)Python許容エラーオーバライド

https://schedule-nurse.blogspot.com/2023/11/python.html

UnaryCounter

 「半人前」を実現するために導入した制約関数であり、通常の制約関数とは異なります。

この関数は、2種類のリストの一部としか機能しません。2種類のリストとは、


■sc3.SeqError(min,max,allowable_errors,list)

■sc3.SoftLinearComp(eq_mode, CoffA, CoffB,  offset,  allowable_errors,listA,listB); 


です。この2種類しかサポートしません。

パラメータは、二つしかなく、

■sc3.UnaryCounter(bitstart,bit_interval)

です。

UnaryCounterとは、1進加算器のことであり、ビットの桁数は、入力の個数だけあります。

つまり桁上がりがないカウンタになります。


ビットスタート0、ビットインターバル1だと、そのままの出力になります。

 ビットインターバル2だと、一つ飛びに出力されます。/2されるイメージです。

ビットスタートは、mod演算に対応します。下図は、bit interval=2のときの様子ですが、

同じbit interval=2でも、bitstartによって、エンコードの様子が異なります。


余りがないときは、どちらも同じですが、一人のときを1人と数えるか0人と数えるかの違いがあります。どちらのエンコードを指定するかは、bit_startを指定すれば決まります。

この論理構造は、次で実現できます。

これは、アルゴリズム3/4でのグラフ構造になります。アルゴリズム1は、同じ1進加算を使いますが、また別の構造により実現します。

アルゴリズム2と3/4の数理表現では、次のような記述になっています。
上のような回路構造の記述と異なり、数理的な表現になります。

ip.add_constraint(num_working <= (bit_interval) * x+bit_start, x);
ip.add_constraint(num_working >= (bit_interval) * x-(bit_interval-1-bit_start), x);

つまり、同じUnaryCouter機能を実現するのに、アルゴリズム毎に記述を変える必要があります。どれも、同じ機能には違いないのですが、テクノロジーが違うと全く違う表現になる様子を紹介しました。
組み合わせ最適化は、一つのテクノロジだけでは、網羅できません。広範囲のテクノロジーを組み合わせて、スケジュールナース最適化は成っているのです。




2023年11月25日土曜日

python許容エラーオーバライド

 Nov.End.2023リリースの新機能です。

次のPython制約関数において、allowable errorsは、言語で固定されていて変更することは出来ませんでした。

■sc3.SeqError(min,max,allowable_errors,list)

■sc3.SoftSeqComp(offset,allowable_errors,listA,listB)

■sc3.SoftLinearComp(eq_mode, CoffA, CoffB,  offset,  allowable_errors,listA,listB); 

しかし、Python許容エラーオーバライドをオンすると、求解パラメータの許容エラーの値が

オーバライドされます。これにより、Pythonソースをいじらなくても、許容エラーを可変することのが可能になります。


例えば、次の例では、解がないエラーが生じています。
このとき、許容エラーは、言語により3となっています。

しかし、Python許容エラーオーバライドをオンすると、求解パラメータの方が優先され、許容値を5することができます。(0としてハード制約にすることも出来ます。)
その結果として、解が存在できるようになりました。




2023年11月24日金曜日

旧版のストア版への移行について

 Q.2020年にスケジュールナースを購入し、利用させていただいております。

当時、買い切り版で購入しました。

今回、他のPCにソフトのインストールを試みたのですが、サブスク版に導かれます。

ホームページ上では「紐づいたマイクロソフトアカウント上でPC10台まで同時使用可能です。」となっておりますが、インストール方法がわかりませんでした。


サブスク版ではないインストール方法を、教えていただきたいです。

A.

ストア版に移行の際、不通か何かでご案内できませんでした。恐れ入ります。下記の買い切り版対応とさせて頂きます。

https://www.nurse-scheduling-software.com/japanese/service2/onetime_purchase/

勿論、無料にて発行しますが、唯一、手続きとして、マイクロソフトアカウント名を、スケジュールナースストア版と紐づける必要がございます。

アカウント名をお送り頂くと、マイクロソフトのサーバに登録します。登録には、1週間程度見ていただきます。登録完了後は、永続的に使えるようになります。

2023年11月21日火曜日

数を数えるということ

 各テクノロジーのバックグランドが異なるので、実は、数え方は一つではありません。

正確には、アルゴリズム1,2,3毎に違う数え方をしています。数を数えるということは、組み合わせ最適化において、本質的なことではありますが、数理的な数え方と、論理的な数え方の違いということがあります。本質的には、数理的な数え方と論理的な数え方は、同じはずですが、算法的には、違います。汎用問題を考えたとき、有利なのは、数理的解法になります。一方、数が少ないときの組み合わせ最適化を考えたときは、論理的解法の方が有利なような気がします。従い、数が少ない場合の組み合わせ最適化問題、ナーススケジューリング問題では、論理的解法であるアルゴリズム1が一般的には優勢になるのだ、という理解をしています。しかし、問題規模が大きくなってくると、論理的に扱うには、複雑になりすぎ、その場合は、数理解法が有利になってくる、ということではないでしょうか?

それでは、一体、数理解法と論理解法では何が違うか?ということについて考えてみましょう。一番の違いは、論理解法の場合は、何進法を使うか?ということが効いてきます。ところが、数理解法の場合は、それが明示されずに意識されることはほぼありません。論理解法の場合、コンピュータ上のハードウェア資源である乗算器を使うことはほぼないのですが、数理解法の場合は、無しでは考えられません。つまり、ハードウェア資源である乗算器の使用の有無が、大いに関係しています。

乗算器をブール代数でグラフ化したものを見たことがあるでしょうか?16x16bitでさえ、トンでもない規模のグラフとなります。乗算器というのは、組わせ回路の塊であり、AND/OR/INVの回路からのみ成りますが、大きな数を表すといることは、それだけ多くの組み合わせがある、ということの裏返しということでしょう。そういう場合には、直接にPC資源を利用した方がよい、ということではないかと思います。(昨今の人口知能における機械学習において、この乗算器の存在は必須です。)

論理的解法と数理解法について言及しましたが、もう少し正確に言うと、論理解法は、アルゴリズム1、数理解法は、アルゴリズム2、両者のハイブリッド解法が、アルゴリズム3/4ということになります。最初に説明した通り、各々、数の数え方が違うので、「半人前」の実装において違いを見ていきたいと思います。

https://schedule-nurse.blogspot.com/2023/11/unarycounter.html