解り易いように、簡単な設定から順に機能を組み込んでいきますので、
再度、新しいファイルを
ダウンロードしてください。
勤務は文字としては計算が面倒なので、
数値に置き換えます。
0:休み 1:日勤 2:早出 3:遅出 など
単一勤務
ここでは分かり易くするために、勤務は1種類(出勤するか、しないか)から始めます。
目標値
・日々の要員数が必要人数と一致
最初から完全一致とすると難しいかもしれないので、ここでは、
要員数と
必要人数の差の絶対値合計の最小値とします。
セルK11
変化するセル
・セルC4:I8 - 1:割り当てる 0:割り当てない
制約条件
・変化するセルの値は、0か1
→ 値は1以下の
非負整数
ここで使用されている式は、足し算と絶対値を求める関数ABSのみ。
線形問題として簡単に処理できますので、「解決方法の選択」は「シンプレックス LP」
解は、ほとんど瞬間的に求まります。
シンプレックス法(simplex method、単体法
線型計画問題を解くアルゴリズムの中で最も広く使用されている方法である。
線型計画法の1つ。
実行可能解の1つから出発して目的関数の値をなるべく大きく(小さく)するようなところに移動させていく動作を繰り返して最適解を見つけ出す方法。
このアルゴリズムは、実用上は高速。ほとんど常に、変数の数・条件式の数の大きな方のオーダーの回数だけ反復を繰り返せば解ける。
単体法(simplex)という名前は、Danzig が提案した特殊な図解法においては、アルゴリズムの進行に従って単体が下に落ちていくように見えることに由来。
-wikipediaより
線形・非線形とは
線形とは、原因と結果の間に「重ね合わせ」の関係が成り立つ場合を言う。
入力が2倍になれば出力も2倍になる。単純な関係。
簡単な式で表すと、Y=ax+bのようなもの。
単純な人員割り当ては、1次の連立方程式となるので、線形の問題として解くことが可能。
非線形とは、y= ax2+bのように、「重ね合わせ」が成立しない場合。
分散の式が含まれる場合、二乗の式が含まれるため、非線形の式となる。
以下、簡単な説明(抜粋)
直訳すれば、「進化論的な」。使用している計算方法は、遺伝的アルゴリズム。
これは、生物学上の進化の原理を模倣したものであり、生物の再生における遺伝子配列をモデル化した法則を用い、複数の個体からなる母集団を繰り返し置き換えていくという形で最適化問題を解く手法。
そのランダム性から、遺伝的アルゴリズムは大域的最適解を見出す可能性を高めることができる。
遺伝的アルゴリズムを使用すると、制約のない最適化問題、上下限制約を持つ最適化問題、および一般的な最適化問題を解くことができる。
制約のない変数を非負数とする
日本語がわかりづらいが、「正負の制約条件を課していない変数は、非負数(0以上の整数)として扱う」の意味。