2019年12月3日火曜日

予定入力の再掲を禁止の実装

125A Algorithm1で実装しました。この機能は、スタッフの予定を変更せざるを得ないときの別解を提供します。
どうしても看護品質・ケア品質は落としたくない場合は、スタッフの予定を変更せざるえません。そんなとき、スタッフと調整するときに別解を持っておけば、調整し易いでしょう。
上の例では、4つの予定変更が余儀なくされていて、その別解を求めています。
赤枠部がそれになりますが、微妙に、しかし確実に異なる組み合わせの解のみが掲示されています。この例では、設定を100解にして、62解まで求まりました。実用的には、GUIの速度的に、数解まででしょう。



同じ、パラメータで、Algorithm0(旧SC2)でやってみると、21個のエラーに対する別解を求めていました。
同じ、パラメータで、Algorihtm4でやってみると、厳密解が3であることが5秒足らずで判明しました。


コンパイルの準備中ソルバを呼び出し中です。
 Algorithm 4 Solving Process Started.
 Compling nurse 1
 Combination Space on Nurse 1 =5.32257e+11
 Compling nurse 2
 Combination Space on Nurse 2 =4.19788e+11
 Compling nurse 3
 Combination Space on Nurse 3 =4.7214e+11
 Compling nurse 4
 Combination Space on Nurse 4 =1.26248e+11
 Compling nurse 5
 Combination Space on Nurse 5 =6.41217e+11
 Compling nurse 7
 Combination Space on Nurse 7 =1.20307e+11
 Compling nurse 9
 Combination Space on Nurse 9 =5.13837e+11
 Compling nurse 11
 Combination Space on Nurse 11 =4.30146e+11
 Compling nurse 14
 Combination Space on Nurse 14 =4.6134e+11
 Compling nurse 15
 Combination Space on Nurse 15 =5.11604e+11
 Compling nurse 16
 Combination Space on Nurse 16 =5.12742e+11
 Compling nurse 17
 Combination Space on Nurse 17 =6.49804e+11
 Compling nurse 0
 Combination Space on Nurse 0 =3.39036e+11
 Compling nurse 6
 Combination Space on Nurse 6 =2.57e+11
 Compling nurse 8
 Combination Space on Nurse 8 =4.14028e+11
 Compling nurse 10
 Combination Space on Nurse 10 =3.80578e+11
 Compling nurse 12
 Combination Space on Nurse 12 =4.14248e+11
 Compling nurse 13
 Combination Space on Nurse 13 =7.09886e+11
 充足解を書き込みました。C:\Users\sugaw\Documents\Visual Studio 2017\Projects\schedule_nurse_ver3\WindowsFormsApplication1\test\sim_engine32\solution1.txt 3.697(CPU秒)
 *********UB=249000(0)  3.697(cpu秒)
 充足解を書き込みました。C:\Users\sugaw\Documents\Visual Studio 2017\Projects\schedule_nurse_ver3\WindowsFormsApplication1\test\sim_engine32\solution1.txt 3.785(CPU秒)
 *********UB=130138(0)  3.785(cpu秒)
  ov=130138 ext=18 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=63943.3 ext=36 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=39247 ext=54 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=23382.6 ext=72 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=11637 ext=90 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=7072.13 ext=108 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=5912.01 ext=126 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=2403.56 ext=144 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=306.022 ext=162 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=281.892 ext=180 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=270.299 ext=198 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=235.73 ext=216 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=200.077 ext=234 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=166.915 ext=252 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=145.496 ext=270 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=116.713 ext=288 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=97.3505 ext=306 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=84.9907 ext=324 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=75.5003 ext=342 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=67.7986 ext=360 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=58.5907 ext=378 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=53.0225 ext=396 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=48.538 ext=414 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=37.0741 ext=432 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=28.4404 ext=450 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=20.165 ext=468 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=16.3962 ext=486 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=13.6106 ext=504 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=10.8996 ext=522 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=9.56909 ext=540 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=7.82315 ext=558 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=6.40981 ext=576 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=5.66453 ext=594 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=5.08227 ext=612 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=4.2991 ext=630 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=3.78261 ext=648 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=3.49199 ext=666 del=0 depth=0 LB=1.79769e+308 UB=130138
  ov=3.3186 ext=684 del=0 depth=0 LB=1.79769e+308 UB=130138
 充足解を書き込みました。C:\Users\sugaw\Documents\Visual Studio 2017\Projects\schedule_nurse_ver3\WindowsFormsApplication1\test\sim_engine32\solution1.txt 5.358(CPU秒)
 *********UB=3(0)  5.358(cpu秒)
  ov=3 ext=702 del=0 depth=0 LB=1.79769e+308 UB=3
 *********LB=3(0)  5.381(cpu秒)
 Algorithm 1 Solving Process Started.
  c output terms=0 weight=1000
  c output terms=0 weight=10
   o        3   0.104(sec) 
c    Bloop 1
  c output terms=3 weight=1
 Status  Optimum.
 充足解を書き込みました。C:\Users\sugaw\Documents\Visual Studio 2017\Projects\schedule_nurse_ver3\WindowsFormsApplication1\test\sim_engine32\solution1.txt 5.586(CPU秒)
 branch_node_map.size()=0
 Algorithm 1 Solving Process Started.
  c output terms=0 weight=1000
  c output terms=0 weight=10
   o        3   0.112(sec) 
c    Bloop 1
  c output terms=3 weight=1
 Status  Optimum.
 充足解を書き込みました。C:\Users\sugaw\Documents\Visual Studio 2017\Projects\schedule_nurse_ver3\WindowsFormsApplication1\test\sim_engine32\solution1.txt 5.727(CPU秒)
 _____________________________________
|           |           |             |
|   Weight  |   Errors  |    Cost     |
|___________|___________|_____________|
|           |           |             |
|      1000 |      0    |        0    |
|        10 |      0    |        0    |
|         1 |      3    |        3    |
|___________|___________|_____________|
|                       |             |
|         Total         |        3    |
|_______________________|_____________|
 *********Final UB=3
 充足解を書き込みました。C:\Users\sugaw\Documents\Visual Studio 2017\Projects\schedule_nurse_ver3\WindowsFormsApplication1\test\sim_engine32\solution1.txt 5.730(CPU秒)
解探索が終了しました。 5 (秒)
解が得られました。

(これより、Algorithm1の解は近似解であることが分かります。)
歩みは遅いですが、確実に性能向上しています。

0 件のコメント:

コメントを投稿