47
クラス割 題に対する 案  () (105T203T) 24 2 8 大学大学院

修 士 論 文 - Kobe Universityky/S4ronbun/2012/2012m-ariyama.pdf修 士 論 文 題 目 複数の制約条件を持つ クラス割当問題に対する近似解法の提案 指導教員

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • 修 士 論 文

    題 目

     複数の制約条件を持つ

    クラス割当問題に対する近似解法の提案 

    指 導 教 員

    山口一章 准教授

    提 出 者 (学籍番号)

     有山 貴士 (105T203T) 

    平成 24 年 2 月 8 日

    神戸大学大学院工学研究科

    博士前期課程電気電子工学専攻

  • 内容梗概

    クラス割当問題とは,制約条件を満たしかつ学生ができるだけ満足できるように,学生

    を講師に割り当てる問題である.例えば学校での研究室分けや企業での部署配属等はクラ

    ス割当問題として定式化される.クラス割当問題は制約条件によっては NP困難な問題で

    あり,そのためいくつかの近似解法が提案されている.

    本論文では複数の制約条件が存在するクラス割当問題を扱う.複数の制約条件とは一人

    の講師に割り当てることができる人数の上限や下限,学生と講師に都合の良い日程,悪い

    日程があり,互いの都合が合わないと割り当てることができない等である.制約条件が異

    なるため従来の近似解法を本論文で扱う問題には適用できない.また本論文で扱う問題は

    講師の開催日程の組み合わせを総当たりすることで最適解を求めることができるが,組み

    合わせが多い場合非常に時間がかかる.

    そこで本論文で扱うクラス割当問題に対する近似解法を提案する.本論文ではまず複数

    の制約条件を持つクラス割当問題を整数計画問題による定式化を行う.提案する近似解法

    では,クラス割当問題をグラフとして捉え,最小費用フロー問題の解法,主にプライマル

    法を用いてそのグラフの解を求め,それにより割り当てを決定する.この際に人数下限,

    上限の制約条件を満たすためにダミー学生を用いる.また近似解法では講師 1人の開催日

    程を変更し,グラフを部分的に変更してプライマル法を用いて解く,この一連の動作を繰

    り返すことで近傍を探索し,希望を考慮した良質な近似解を高速に求める.この際に流す

    べきフローの量を一定に保つためダミー講師を用いる.そこで 5 種類の近似解法を提案

    する.

    最後に計算機実験により提案手法の有効性を確認した.実際の講義に使用されたデータ

    (学生数 49,講師数 11,日程数 9)では講師の開催日程の組み合わせ総当たりには 7分程

    度かかったが,提案手法では数秒で最適解を求めることができた.またランダムな入力

    データを複数作成し計算機実験を行ったが,多くの入力では提案手法により最適解を高速

    に求めることができた.多くの入力において,提案手法の中では広い近傍を探索する手法

    が有効であることがわかった.

  • Abstract

    The class assignment problem is problem that decides assignment which students is

    satisfied with in case the constraints are fulfilled. There are a lot of class assignment

    problems, for example posting in a school or in a company. This problem is very

    difficult in case of a lot of constraints and NP-hard, so some approximate algorithms

    are proposed for this problem.

    In this paper, we describe the problem which has a lot of constraints. For example

    they are the capacities of the lecture, available and unavailable days of students and

    teachers. The proposed algorithms can not solve this problem for them. And the

    brute-force algorithm can solve this problem, but it takes a long time.

    We propose the approximate algorithm to this problem. First we formulate this

    problem in terms of integer programming problem. The approximate algorithm con-

    siders the class assignment problem as the graph, and use solution of minimum cost

    flow problem, in large part primal method. We set a dummy student for the ca-

    pacities of the lecture. And the approximate algorithm changes days of lecture, and

    changes a part of graph, and uses primal method, and get better approximate solu-

    tion quickly by repeating this local search which students is satisfied with. We set a

    dummy teacher at this time in order to keep the amount of flow. We propose various

    approximate algorithms because we think small or large neighborhood local search

    techniques.

    We confirmed the effectiveness of proposed algorithms by computer experiments.

    The brute-force algorithm took about seven seconds to find an optimum solution,

    but our algorithms took just a few seconds to do. And our algorithms could find an

    optimum solution quickly in many random data. We confirmed the method, which

    is applied to large neighborhood local search techniques, are the most efficient in our

    proposed algorithms.

  • 目次

    第 1章 まえがき 1

    第 2章 定式化 2

    第 3章 準備 4

    3.1 最小費用フロー問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    3.2 プライマル法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    3.2.1 ベルマンフォード法 . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3.3 プライマルデュアル法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    第 4章 提案手法 13

    4.1 割当問題をグラフへ変換 . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    4.1.1 ダミー学生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    4.2 講師の開催日程変更に伴う部分的なグラフの変更方法 . . . . . . . . . . 16

    4.2.1 ダミー講師 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    4.3 日程を変更する講師の選び方 . . . . . . . . . . . . . . . . . . . . . . . 17

    4.4 講師の開催日程の選び方 . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    4.4.1 手法 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    4.4.2 手法 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    4.4.3 手法 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    4.4.4 手法 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    4.4.5 手法 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    第 5章 計算機実験 26

    5.1 実験方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    5.2 予備実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    5.2.1 日程の組み合わせ総当たりによる最適解の求め方 . . . . . . . . . 27

    5.2.2 配点による最適解の違い . . . . . . . . . . . . . . . . . . . . . . 27

  • 5.2.3 プライマル法の時間計算量の実測値 . . . . . . . . . . . . . . . . 28

    5.3 結果及び考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    第 6章 あとがき 38

  • 1

    第 1章

    まえがき

    学校での研究室分け,テーマ割り当て,企業での部署配属の際など,各人の希望を調査

    し出来るだけ志望通りのグループに配属させるという状況については古くから研究が行わ

    れている [1][2][3].本研究では具体例として筆者らが所属する研究科で実際に存在する講

    義をモデルに考える.筆者らが所属する研究科では,以下のような条件で学生を割り当て

    る講義が開講されている.

    1. 学生が s人おり,各学生は t人の講師の講義のいずれか一つを受講する.

    2. 各講義の開催候補日は全部で d日あるが,その中から講師にとって都合の良い 1日が

    選ばれる.

    3. 学会への参加などにより,各学生には候補日の中には受講できない日がある.

    4. 各講義の受入人数は amin 人から amax 人である.

    5. 各学生は講義に対する希望順位を提示しており,できるだけ希望通りに割り当てたい.

    複数の制約条件を持つ割当問題として,時間割編成問題 [4][5]やナーススケジューリン

    グ問題 [6][7]等が挙げられる.また文献 [8]では様々な安定マッチング問題について述べ

    られている.文献 [9][10]ではマッチングを利用した上限,下限付き研究室配属のための

    アルゴリズムが提案され,文献 [11][12]では遺伝的アルゴリズムを用いた解法が提案され

    ている.しかしいずれも本研究で扱う割当問題とは制約条件が異なり,アルゴリズムをそ

    のまま適用することはできない.本論文ではこの状況を割当問題として定式化し,近似解

    法を提案し良好な近似解を目指す.

    本論文の構成は次の通りである.2章で本論文で扱う割当問題の整数計画問題による定

    式化を示し,3章ではその割当問題を解くために用いる最小費用フロー問題の解法につい

    て述べ,4章では 3章で述べた解法を利用した近似解法を提案し,5章では提案手法を実

    装し計算機実験を行った結果を示す.最後に 6章では結論を述べる.

  • 2

    第 2章

    定式化

    1 章に示した条件 1 から条件 5 を考慮し,定式化を行う.まず変数として xij を生徒

    i が講師 j に割り当てられるとき 1,そうでないとき 0 と定め,yjk を講師 j が候補日

    k = 1, 2,…, d に開講するならば 1,そうでないとき 0 でと定める.ただし,1 ≤ i ≤ s,1 ≤ j ≤ tとする.条件 1を表すために学生が受講する講義は一つなので,

    ∑tj=1 xij = 1である.

    次に条件 2 について考える.開講可能か否かを表す定数 cjk を用い,yjk ≤ cjk,∑dk=1 yjk = 1と表すことができる.

    次に条件 3 について考える.学生 i にとって日程 k の都合が良い場合 bik = 1,

    そうでない場合 0 とする.条件 3 は,学生 i が講師 j の講義を受講するならば日程

    k がその学生にとって都合が悪い日であってはならないという条件となる.つまり,

    xij + yjk + (1− bik) ≤ 2となる.次に条件 4について考える.この条件を満たすためには各 jに対し,amin ≤

    ∑si=1 xij−

    1 ≤ amax を満たす必要がある.以上,条件 1から条件 3を数式で示した.目的関数 (最大化問題)は

    ∑si=1

    ∑tj=1 hijxij

    とする.hij は各講義に割り当てられたときの学生の効用を表す数値であり,満足度と考

    えられる.この値を調整することで条件 5を実現する.学生は希望順位のみ示しているの

    で,より優先順位が高い割当に対し高い値を与えるものとする.以上をまとめて以下に

    示す.

    maxs∑

    i=1

    t∑j=1

    hijxij (2.1)

    s.t.

    t∑j=1

    xij = 1 (2.2)

  • 3

    amin ≤s∑

    i=1

    xij − 1 ≤ amax (2.3)

    yjk ≤ cjk,d∑

    k=1

    yjk = 1 (2.4)

    xij + yjk + (1− bik) ≤ 2 (2.5)

    ただし,xij ∈ {0, 1},yjk ∈ {0.1} (2.6)

    1 ≤ i ≤ s,1 ≤ j ≤ t,1 ≤ k ≤ d (2.7)

    とする.

    本研究で扱う割当問題は各講師の開催日を 1日に決め,amin = 0,amax = sとすると

    集合被服問題 (SCP)とみなすことができる.

    SCPとは集合 U とその部分集合 T1, T2, · · · , Ti が与えられたとき,自然数 k として部分集合を k 個選んで,集合 U の要素を全て含むような選び方ができるかという問題であ

    る.[13]では SCPに対する近似可能性が述べられているが,厳密解を求めるのは NP困

    難な問題であると知られている.

    本研究で扱う割当問題においては,集合 U は学生全員であり,各講師の開催日を 1日

    に決め,amin = 0,amax = sとすると,部分集合は各講師の開催日に参加可能な生徒の

    群となる.そして講師の中から k 人選んで全学生を参加できるようにすることができる

    か,つまり SCPと同じ問題となり,これは NP困難な問題であると言える.さらに本研

    究で扱う割当問題は講師の開催日は複数の組み合わせが考えられるため,NP困難な問題

    であることは明らかである.

  • 4

    第 3章

    準備

    3.1 最小費用フロー問題

    最小費用フロー問題では入力として各辺にコスト,容量がある有向グラフ,始点と終

    点,始点から終点へ流すべきフローの量が与えられる.フローとは始点終点以外の頂点に

    おいて入出量が同じで辺に流れるものであり,容量とはその辺に流すことができる最大の

    フロー量であり,コストは実数,フローと容量は非負実数である.この入力に対して,各

    辺の容量を超えないように始点から終点へ流すべきフローの量を流し,コストの総和が最

    小になる各辺のフローを求める問題である.コストの総和とは,辺のコストとその辺に流

    れているフローの積を全ての辺に対して足し合わせたものである.

    例を図 3.1(a)(b)(c) に示す.図 3.1(a) では始点が頂点 1,終点が頂点 4,流すべきフ

    ローが 7であり,各辺のコストと容量は図 3.1(a)に示した入力グラフである.図 3.1(b)

    はあるフロー F1 の流れであり,このときの総コストは 32 である.また図 3.1(c) は図

    3.1(a)の入力グラフが与えられたときの最小費用フロー F2 であり,このときの総コスト

    は 25である.

    最小費用フロー問題の解法として,プライマル法やプライマルデュアル法が知られてい

    る [14].3.2節ではプライマル法,3.3節ではプライマルデュアル法の詳細を述べる.

    プライマル法では補助ネットワークを作成し,負閉路に沿ってフローを増減させ

    ることで最適な負閉路を求める.そのためまず補助ネットワークと負閉路について

    述べる.補助ネットワークとは,辺 i の容量を capi,コストを costi,現在流れてい

    るフローを flowi(1 ≤ i ≤ m) として,元のグラフの辺に対しては costi = costi,capi = capi − flowi とし,さらにそれぞれの辺に対して逆向きの辺 costj = −costi,capj = flowi,(m + 1 ≤ j ≤ 2m)を追加したグラフのことである.この補助ネットワークにおいて費用の合計が負になる閉路を負閉路と呼ぶ.負閉路の発見方法としてベルマン

    フォード法が知られている [15].詳細は 3.2.1節で述べる.

  • 5

    図 3.1: 補助ネットワークと負閉路の例

    補助ネットワークと負閉路の例を図 3.1(d)(e)に示す.図 3.1(a)を入力グラフとして与

    えられ,図 3.1(b) のフロー F1 に対して補助ネットワークを作成したグラフが図 3.1(d)

    である.例えば頂点 1 から頂点 2 への辺に関して,この辺に流れるフローの量は 1 であ

    り,元の辺のコスト 1,容量 3であるので頂点 1から頂点 2へ向かう辺は,コストはその

    ままなので 1,容量は 2(=3-1)となり,一方逆向きの頂点 2から頂点 1へ向かう辺は,コ

    ストが-1,容量は辺を流れているフローの量なので 1となる.このような操作を全ての辺

    に対して行うと図 3.1(d)のようになる.また図 3.1(d)の補助ネットワークには,例えば

    図 3.1(e)のような負閉路が存在する.この閉路のコストを合計すると-3となる.

    3.2 プライマル法

    プライマル法とは,あらかじめ決められたフローの量が流れているグラフに対して用い

    る最小費用フロー問題の解法である.グラフに対して補助ネットワークを作成し,その補

    助ネットワークに対して負閉路を探索し,その負閉路に対してフローを増減させるという

    動作を繰り返すことで最適なフローを求める手法である.プライマル法のアルゴリズムを

    図 3.2に示す.図 3.1(c)のような最小費用フロー F2 に対して補助ネットワークを作成す

    ると,負閉路は存在せず,またプライマル法の終了条件は負閉路が存在しないことであ

    る.つまりプライマル法では最小費用フローが求まれば終了である.また頂点数 n,辺数

    mとすると,負閉路に含まれる頂点数は最大でも nであるので図 3.2の 3,4,5,6の最悪時

  • 6

    間計算量が O(mn)であり,負閉路が存在する数を K とするとプライマル法の最悪時間

    計算量は O(mnK)となる.

    1. まず何らかの方法で一定量のフローが流れたグラフを求める.

    2. while 負閉路が存在する限り

    3. 補助ネットワークを作成する.

    4. グラフに対して 3.4節のベルマンフォード法を適用し,負閉路を発見する.

    5. 発見した負閉路の辺の中で最も容量が小さい辺の容量mincapを求める.

    6. 負閉路に含まれるコストが正の辺はフローをmincap増やす

    コストが負の辺はフローをmincap減らす.

    7. end while

    図 3.2: プライマル法のアルゴリズム

    プライマル法の動作例を図 3.3 に示す.図 3.3(a) は入力グラフとあるフロー F1 を表

    し,現在 F1 が流れているとする.頂点 1から頂点 4へ 7のフローを流すときの最小費用

    フローを考える.まずフロー F1 に対する補助ネットワークを作成する.補助ネットワー

    クは図 3.3(b)のようになる.ただし容量 0の辺は省略してある.次にベルマンフォード

    法によりこのグラフの負閉路を探す.すると 1 → 2 → 4 → 1という負閉路が求まる (図3.3(c)).この負閉路の中で最も小さい容量の辺を探す.この場合 2 → 4の辺の容量 1が最小容量である.図 3.2 の 6 に従いフローを増減させる.1 → 2 および 2 → 4 の辺のフローを 1 増加させ,4 → 1 の辺のフローを 1 減少させる.フローを増減させた後は図3.3(d)のようなフロー F2 となる.次にフロー F2 に対して補助ネットワークを作成する

    (図 3.3(e)).このグラフに対して負閉路を探すと,1 → 3 → 4 → 1 という負閉路が求まる (図 3.3(f)).この負閉路の最小容量は 2であるので,1→ 3および 3→ 4の辺のフローを 2 増加させ,4 → 1 の辺のフローを 2 減少させる.フローを増減させた後は図 3.3(g)のようなフロー f3 となる.最後にフロー F3 に対する補助ネットワークを作成する (図

    3.3(h)).この補助ネットワークには負閉路が存在しないのでここでプライマル法終了と

    なる.よって図 3.3(g) のグラフが,このグラフに対する最小費用フローであることがわ

    かる.

  • 7

    図 3.3: プライマル法の例

  • 8

    3.2.1 ベルマンフォード法

    ベルマンフォード法は最短路を発見する方法として知られており,有向グラフの負閉路

    を発見することもできる [15].ベルマンフォード法ではまず始点を決め,始点の重みを 0

    とし,その他の頂点の重みは無限大と設定する.その後任意の順序で全ての辺に対して頂

    点の重みを更新していく.辺のコストと頂点の重みの和が現在の頂点の重みよりも小さい

    場合,後者を前者に変更する.この動作を全ての辺に対して行い,それを (頂点数-1)回行

    えば終了となり,始点から各頂点への最短路が求まる.始点を start,頂点数を n,辺数

    を m,各頂点の重みを表す配列を v[i](0 ≤ i < n),どの頂点から更新されたかを示す配列を previous[i],辺の集合をM,辺 j のコストを costj,始点を fj,終点を gj(j ∈ M)として図 3.4にアルゴリズムを示す.

    1. begin

    2. v[start]← 03. v[i]←∞(0 ≤i

  • 9

    1. 図 3.4の動作後,頂点の重みが更新された辺の始点を fj,終点を gj とする.

    2. もし previous[fj ]が以前出現した頂点ならば 4へ.そうでなければ 3へ.

    3. fj = privious[fj ]として 2へ.

    4. 以前に出現した頂点から最後に出てきた頂点までが負閉路である.

    図 3.5: ベルマンフォード法終了後負閉路を求めるアルゴリズム

    の重みを∞とし,始点である頂点 1は 0とする (図 3.6.1(c)).次に頂点 1から頂点 2への辺に対して頂点の重みの更新を図 3.4の動作 6,7に従い行う.すると図 3.6.1(d)のよう

    になる.この動作を各辺に対して行う (図 3.6.1(e)から (h)).図 3.6.1(h)で全ての辺に対

    して頂点の重みの更新が終了した.この一連の動作を (n − 1)回,つまり 3回繰り返す.2回目終了後と 3回目終了後は図 3.6.2(i),(j)のようになる.

    次に図 3.5のアルゴリズムに従い負閉路の探索を行う.図 3.6.2(k)で頂点 1から頂点 2

    への辺が更新されたので,図 3.5の動作 1において始点 fj を頂点 1,終点 gj を頂点 2と

    する (図 3.6.2(l)).そして動作 3 で previous[1] = 4 であるので fj を頂点 4 に変更する

    (図 3.6.2(o)).さらに動作 2へ戻り,動作 3を行い,previous[4] = 2であるので fj を頂

    点 2 とする (図 3.6.2(p)).最後に動作 2 へ戻り,頂点 2 は始めに出てきた頂点なのでこ

    こでアルゴリズム終了となる.よって負閉路を形成している頂点は頂点 2,頂点 1,頂点

    4であることが分かる.

    3.3 プライマルデュアル法

    プライマルデュアル法とは容量とコストを持つ有向辺のグラフにおいて始点から終点ま

    での最小費用フローを求めることができる手法である [14].辺の容量とはその辺に流すこ

    とができる最大のフローの量を表す.図 3.7にプライマルデュアル法のアルゴリズムを示

    す.ただし始点を S,終点を Gとする.最短路を求める際には上記のベルマンフォード

    法を用いるが容量が 0の辺は無視する.

    図 3.7の 2,3,4の最悪時間計算量は O(mn)であり,路の数は高々mなので,プライマ

    ルデュアル法の最悪時間計算量は O(m2n)である.

    図 3.8 にプライマルデュアル法の動作例を示す.頂点 1 を始点,頂点 5 を終点とす

    る.図 3.8(a) が初期状態で,まずベルマンフォード法により最短路を探す.最短路は

    1 → 4 → 5 であることが分かるので,その最小容量 2 の分だけフローをその路に流す.

  • 10

    図 3.6.1

    フローのグラフは図 3.8(c)のようになるので,このフローに対して補助ネットワークを作

    成すると図 3.8(b)のグラフになる.ただし容量 0となった辺は省略している.同様の操

    作を行い,次の最短路は 1→ 3→ 4→ 5であり,またその最小容量は 1であるので,この路にフロー 1 を流す.するとフローのグラフは図 3.8(e) となるので,補助ネットワー

    クを作成すると図 3.8(d)のグラフになる.次の最短路は 1→ 3→ 5であり,最小容量 1であるのでこの路にフロー 1を流す.フローのグラフは図 3.8(g)となるので,補助ネッ

    トワークを作成すると図 3.8(f)のグラフになる.図 3.8(f)を見ると頂点 1から頂点 5へ

    の路が存在しないのでここで終了となり,最終的に図 3.8(g) がこのグラフの最小費用フ

    ローであることがわかる.

  • 11

    図 3.6.2

    図 3.6: ベルマンフォード法の例

    1. while S から Gまでの路がなくなるまで

    2. 3.4節のベルマンフォード法を用いて S から Gへのコストが最も低い路を求める.

    3. 今求めた路の中でも最も小さい容量の辺を探し,その容量をmincapとする.

    4. 路の各辺に対してmincapのフローを流し,補助ネットワークを作成する.

    5. end while

    図 3.7: プライマルデュアル法のアルゴリズム

  • 12

    図 3.8: プライマルデュアル法の例

  • 13

    第 4章

    提案手法

    本章では,最小費用フロー問題の解法を利用した提案手法について述べる.本論文で扱

    うクラス割当問題は入力として生徒数,講師数,各生徒の日程,各生徒の希望,各講師の

    開催候補日が与えられるが,講師の開催日程さえ決めれば,最小費用フロー問題として扱

    うことができ,その講師の開催日程の組み合わせにおける最適解が求まる.最小費用フ

    ロー問題として定式化する際に,割当問題をグラフに変換しなければならないので,その

    方法を 4.1節で述べる.

    提案手法では,まず講師の開催日程をランダムに決めプライマルデュアル法を用いてそ

    の日程の組み合わせにおける最小費用フローを求める.次にある講師一人の開催日程を変

    更し,それに伴い部分的にグラフを変更し,そのグラフにおける最適解をプライマル法に

    より求める.具体的には日程変更前のグラフ,フローを保ったまま日程変更後の新日程の

    講師の頂点をグラフに加え,旧日程の講師の頂点から終点への辺のコストを大きな値にす

    る.プライマル法はコストが小さい辺にフローを流し変えようする方法なので,旧日程の

    講師の頂点へはフローが流れなくなり,新日程の講師の頂点を含めた最適なフローが求ま

    る.日程変更前のフローを保ったまま日程変更を行うことで,部分的なフローの変更のみ

    で最小費用フローを求めることができ,高速に解くことができると考えられる.詳細は

    4.2節に示す.

    以上の講師の開催日程の変更を繰り返し行うことで解を探索し,高速に良質な近似解を

    求める.これは近傍探索であるといえる [16].提案手法の概略を図 4.1に示す.

    4.1 割当問題をグラフへ変換

    3章で述べた手法はいずれも各辺にコスト,容量を持つ有向辺のグラフに対して用いる

    手法である.そのため本研究で扱う割当問題を制約条件を満たし,各辺にコスト,容量を

    持つ有向グラフに変換することを考える.

  • 14

    1. 各講師の候補日の中から乱数を用いてランダムに日程を選ぶ

    2. その日程の組み合わせにおけるグラフを 4.1節のように作成する.

    3. プライマルデュアル法を用いて最小費用フローを求める.

    4. 一定時間以下の 5(a),5(b)の処理を繰り返す.

    5(a). 講師一人の日程を変更,部分的にグラフを再構築する.4.2節に詳細を示す.

    5(b). プライマル法を用いてそのグラフにおける最小費用フローを求める.

    6. 満足度が最大となる割当を出力する.

    図 4.1: 提案手法の概略

    まず頂点として始点と終点を与え,学生と講師はそれぞれ一つの頂点として与え,さら

    にダミー学生を与える.つまり頂点数は (s + t + 3)個となる.ダミー学生の詳細は 4.1.1

    節で述べる.次に辺として始点から学生への辺,学生から講師への辺,講師から終点への

    辺を作成する.1 章の条件 1 から条件 5 を満たすように,順に辺のコストや容量を考え

    ていく.ただしダミー学生については 4.1.1節で述べるので,ダミー学生に接続する辺は

    除く.

    条件 1を満たすためには始点から学生への辺の容量を 1とし,学生から講師への辺の容

    量を 1 にすれば良い.これにより各学生はいずれか 1 つの講義にしか割り当てることが

    できなくなる.

    条件 2,条件 3を満たすためにはあらかじめ講師の開催日程を決め,講師の開催日程が

    学生の都合の良い日程の場合は辺を繋ぎ,都合が悪い場合は辺を繋がなければ良い.なぜ

    なら辺が存在しなければ割り当てることができないからである.

    条件 4を満たすためには講師から終点への辺の容量を amax とし,さらにダミー学生を

    用いることで解決する.詳細は 4.1.1節に示す.

    条件 5 を満たすためには学生から講師への辺のコストを希望順位に応じて与えれば良

    い.希望順位が高い講師への辺ほどコストを低くする.これはプライマル法やプライマル

    デュアル法は最小費用フローを求める手法であるからである.これにより希望順位が高い

    講師へ割り当てられやすくなる.ただし始点から学生への辺と講師から終点への辺のコス

    トは 0とする.

    また始点から終点へ (amax ∗ t)のフローを流すとする.学生から講師への辺にフローが1流れていれば割り当てられており,フローが流れていなければ割り当てられていないこ

    とを示す.

  • 15

    4.1.1 ダミー学生

    条件 4 を満たすためにダミー学生を用いる.始点からダミー学生への辺はコスト

    0,容量を max = amax ∗ t − s とし,ダミー学生から各講師への辺はコスト 0,容量(amax − amin)とする.この maxは講師から終点への辺の容量を amax とした際の足りない学生の分をダミー学生が補うことを意味する.このようにすることで最小費用フロー

    を求めることに影響を与えることなく,割当人数の上限,下限の条件を満たすことがで

    きる.

    ここまでの例を以下に示す.入力として学生数 3,講師数 2,日程数 3,生徒の日程は表

    4.1,生徒の希望による生徒講師間の辺のコストは表 4.2,講師の開催日程は表 4.3が与え

    られ,amax = 2,amin = 1,講師 1は 1日に開催,講師 2は 2日に開催するとしてグラ

    フに変換したものを図 4.2に示す.ただし表 4.1,4.3は○なら参加または開催可能,×な

    ら参加または開催不可能を示す.

    講師 1は 1日に開催するので表 4.1より 1日に参加可能な生徒 1と生徒 2からの辺が

    存在し,講師 2は 2日に開催するので 2日に参加可能な生徒 3からのみ辺が存在する.こ

    の辺の容量は 1,コストは各学生の希望に依存する.例えば学生 1から講師 1への辺は表

    4.2よりコストが 100である.

    始点からダミー学生への辺の容量は (amax ∗ t− s) = 2 ∗ 2− 3 = 1となる.またダミー学生から各講師への辺の容量は (amax − amin) = 2− 1 = 1である.このように各講師の開催日程を決めるとグラフに変換することができ,最小費用フロー問題として解くことが

    できる.

    学生/日程 1 2 3

    1 ○ × ×

    2 ○ × ○

    3 × ○ ○

    表 4.1: 学生の日程

    学生/講師 1 2

    1 100 50

    2 50 100

    3 50 100

    表 4.2: 学生の希望による辺のコスト

    講師/日程 1 2 3

    1 ○ × ○

    2 × ○ ○

    表 4.3: 講師の開催日程

  • 16

    図 4.2: 割当問題をグラフに変換した例

    4.2 講師の開催日程変更に伴う部分的なグラフの変更方法

    講師一人の日程を変更する際に,単純に日程変更前の講師に接続する辺を削除すると消

    失するフローがあり,プライマル法が使用できない.そこで旧日程の講師の頂点を残した

    まま,日程変更後の講師の新日程の頂点を加える.その際に旧日程の講師から終点への辺

    のコストを極めて大きな値 L1 に,新日程の講師に関する辺は通常通りのコスト,つまり

    新日程の講師の頂点から終点への辺はコストを 0とする.プライマル法はフローをコスト

    が大きい辺から小さい辺へと流し変えようとするので,プライマル法を使用すると旧日程

    の講師に関する辺にフローが流れなくなる.また旧日程の講師から終点への辺にフローが

    流れなければ,学生から旧日程の講師への辺にもフローが流れないことは明らかである.

    このようにするのはプライマル法使用後,旧日程の講師の頂点を削除するためである.

    4.2.1 ダミー講師

    講師の開催日程の組み合わせによっては割当人数の上限下限のため,いずれの講師にも

    割り当てることができない学生が存在する場合もある.その際にフローをどこかへ流して

    おかなければ流すべきフローの量が減少してしまい,プライマル法を使用できない.これ

    を回避するため以下のようなダミー講師を用いる.全ての学生からダミー講師への辺を

    作成しコスト 0,容量 1とし,またダミー講師から終点への辺も作成しコストは L2,容

    量は学生数とする.ただし L2 は極めて大きな値とする.このようなダミー講師の頂点を

    作成することで流すべきフローの量を一定に保つことができる.なぜならいずれの講師

  • 17

    にも割り当てられない学生は一時的にダミー講師に割り当てられるからである.ただし

    L1 > L2 とする.これはいずれの講師にも割り当てられない学生は,旧日程の講師ではな

    くダミー講師へ割り当てられるようにするためである.ダミー講師を加えたグラフにプラ

    イマル法を適用すると,旧日程の講師の頂点へは一切のフローが流れなくなるので,旧日

    程の講師の頂点と接続する辺を削除する.

    以上より最悪時間計算量を評価する.上記のようなグラフに変換した場合,頂点数 nは

    n = s + t + 5,辺数 m は最大で m = 3s + 2t + st + 3 である.よって 3 章よりプライ

    マル法の最悪時間計算量は O(s2tK)であり,プライマルデュアル法の最悪時間計算量は

    O(s3t2)である.

    日程変更の例を図 4.3(a)から図 4.3(c)に示す.入力は 4.1節と同じく表 4.1,4.2,4.3と

    し,amax = 2,amin = 1,講師の開催日程は講師 1 が 1 日,講師 2 が 2 日とする.図

    4.3(a)は入力からグラフを作成し,ダミー学生とダミー講師を追加した段階である.最適

    なフローが流れているとすると,学生 1と学生 2は講師 1に,学生 3は講師 2に割り当

    てられており,ダミー学生は講師 2に割り当てられており,ダミー講師には誰も割り当て

    られていない.

    次に図 4.3(b)は講師 1の開催日程を 1日から 3日に変更する過程を示す.旧日程の講

    師 1は 1日に開催なので学生 1と学生 2から辺が存在するが,新日程の講師 1は 3日に

    開催なので学生 2 と学生 3 から辺が存在する.旧日程の講師 1から終点への辺はコスト

    を L2 としている.このグラフに対してプライマル法を適用すると学生の割り当てが変化

    する.学生 2と学生 3は新日程の講師 1に割り当てられ,学生 1はダミー講師に割り当

    てられる.これは L1 < L2 であるので旧日程の講師 1よりダミー講師の方に優先的に割

    り当てられるからである.これで旧日程の講師 1 へ流れるフローはなくなるので,旧日

    程の講師 1の頂点とそれに関する辺を削除することができる.削除したグラフが図 4.3(c)

    である.

    4.3 日程を変更する講師の選び方

    各講師の開催日程を定めれば 4.1節のようにグラフを作成することで最小費用フロー問

    題として解くことができる.またプライマルデュアル法およびプライマル法は最適性の保

    証があるのでそのグラフ,つまりその日程の組み合わせにおける最適解が求まる.そのた

    め全ての日程の組み合わせを計算することで最適解は求まる.しかし問題が大規模の場合

    計算時間が非常に大きくなってしまう.そこで本研究では高速に良質な近似解を求めるこ

    とを考える.その方法として以下のような手法を提案する.

    まずランダムな日程に対してグラフを作成し,そのグラフをプライマルデュアル法で解

    く.これはフローが流れていない状態ではプライマル法を用いることができないためであ

  • 18

  • 19

    図 4.3: 講師の開催日程の変更の例

    る.次に講師の開催日程を変更しそれに伴いグラフも部分的に変更してプライマル法で解

    く,という動作を繰り返す.グラフの部分的な変更に関しては 4.2節,提案手法の概略は

    図 4.1に示した通りである.

    図 4.1の 3でプライマルデュアル法を用い,4で部分的にグラフを再構築するのはグラ

    フを再構築した後もある程度最適に近いフローを流しておけば,高速にプライマル法で解

    くことができると考えられるからである.またアルゴリズムの終了条件はあらかじめ決め

    られた時間とする.

    高速に良い近似解を求めようとすると,日程を変更する講師を上手く選ぶ必要がある.

    日程を変更すべき講師は図 4.4に示す 3つの条件に該当する講師だと考えた.

    A 日程を変更している回数が少ない講師

    B 日程の候補が多い講師

    C 割当人数が少ない講師

    図 4.4: 日程を変更すべき講師

  • 20

    A は多様な解を探索するためであり,B は日程が多い講師ほど変更する必要があり,

    C は割当人数が少ない講師ほど変更すると満足度が上がる可能性が高いからである.こ

    れを近似解法で用いるため,式 (4.1) を提案する.A を実現するため各講師にペナル

    ティ penalty[j] を与え,一度選ばれるごとにペナルティを 1 増やすこととする.また

    wj = amax −講師 j の割当人数,zj = 講師 j の日程数,α1,α2 は定数とする.

    Xj = penalty[j]− wj ∗ α1 + zj ∗ α2(j ∈ T ) (4.1)

    式 (4.1)において Xj の値が小さい講師程日程を変更すべきだと考えられる.また近傍の

    設定方法は複数考えられるので,以下 5種類の近似解法を提案する.

    計算済みリスト

    何度も講師の開催日程を変更していると以前と同じ日程の組み合わせが出現する場合が

    ある.しかしそれを何度も計算するのは非効率的なので計算済みリストとして,既に計算

    済みの日程の組み合わせは全て保存しておく.日程を変更した際は計算済みリストと照合

    して以前計算していなければ計算を行い,以前計算したことがある日程ならば計算を行わ

    ず日程を元に戻し,再び日程を変更する.これは全ての手法に適用する.

    4.4 講師の開催日程の選び方

    様々な講師の日程候補の選び方が考えられるので,以下の 5つの手法を提案する.

    4.4.1 手法 1

    手法 1では,初めはランダムな日程の組み合わせを作成し,その後一人の講師の開催日

    程を変更する動作を繰り返し,その近傍を探索する.日程を変更する講師は式 (4.1)に基

    づき,Xj が最も小さい講師とする.手法 1のアルゴリズムを図 4.5に示す.

    4.4.2 手法 2

    手法 2では r人の講師に対して手法 1を行い満足度を比較し,満足度が最も高い講師の

    開催日程に変更する方法である.これにより広い近傍を探索することができ,より良い解

    を探索できると考えられる.アルゴリズムを図 4.6に示す.

  • 21

    1. ランダムに日程を作成.

    2. プライマルデュアル法を用いてその日程における解を求める.

    3. while 一定時間経過するまで

    4. 式 (4.1)により各講師の Xj を求め,Xj が最も低い講師を t′ とする.

    5. 講師 t′ の候補日程の中でランダムに日程を変更.

    6. if 計算済みリストに存在しない日程の組み合わせの場合.

    7. グラフを再構築する.4.2節参照.

    8. プライマル法を用いて解を求める.

    9. 計算済みリストに現在の日程の組み合わせを追加する.

    10. else (計算済みリストに存在する日程の組み合わせの場合.)

    11. ランダムに日程を作成.その後プライマルデュアル法で解を求める.

    12. end if

    13. end while

    14. 満足度が最大となる割当を出力する.

    図 4.5: 手法 1の手順

    4.4.3 手法 3

    手法 1では式 (4.1)に基づき日程を変更する講師を選んだ後,その講師の開催日程をラ

    ンダムに変更しているが,手法 3では各講師ごとに開催日程にもペナルティを与え,日程

    ペナルティが最も低い日程に変更する.日程変更をした後の満足度と日程変更をする前の

    満足度を比べ,日程変更をした後の満足度の方が大きい場合,つまり満足度が増加した場

    合は日程ペナルティを 1増やし,そうでない場合は 3増やす.このようにすることで何度

    も同じ日程が選ばれにくくなり,かつ価値のある日程が選ばれやすくなると考えられる.

    図 4.7にアルゴリズムを示す.

    4.4.4 手法 4

    手法 4では r人の講師を q日の日程に変更し,最も満足度が高い日程の組み合わせを採

    用する.変更する日程はその講師の候補日程の中から現在の日程を省いた q 日をランダム

    に選ぶ.ただし講師の開催日程候補が (q − 1)日以下の場合は q=(その講師の開催日程候補数-1)とする.このようにすることで手法 2よりもさらに広い近傍を探索することがで

  • 22

    1. ランダムに日程を作成

    2. プライマルデュアル法を用いてその日程における解を求める.

    3. while 一定時間経過するまで

    4. 式 (4.1)により各講師の Xj を求め j 番目に小さい講師を t′j とする.

    5. for j = 1 to r

    6. 講師 t′j の候補日程の中でランダムに日程を変更する.

    7. if 計算済みリストに存在しない日程の組み合わせの場合.

    8. グラフを再構築し,プライマル法を用いて満足度を求め,それを ej とする.

    9. 計算済みリストに現在の日程の組み合わせを追加する.

    10. 講師 t′j の日程を元に戻す.

    11. end if

    12. end for

    13. if 全ての講師が計算済みリストに存在する日程の組み合わせの場合

    14. 日程をランダムに作成し,プライマルデュアル法で解く.

    15. else

    16. ej(1 ≤ j ≤ r)の中で最高の満足度を e′j とする.17. 講師 t′j の日程とグラフを e

    ′j の状態にする.

    18. end if

    19. end while

    20. 満足度が最大となる割当を出力する.

    図 4.6: 手法 2の手順

    きる.図 4.8にアルゴリズムを示す.

    4.4.5 手法 5

    手法 5 は手法 3 と手法 4 を組み合わせた手法である.r 人の講師を q 日の日程に変更

    し,最も満足度が高い日程の組み合わせを採用する.変更する日程はその講師の候補日程

    の中から現在の日程を省いた q 日を日程ペナルティが小さい順に選ぶ.ただし講師の開

    催日程候補が (q − 1)日以下の場合は q=(その講師の開催日程候補数-1)とする.また日程ペナルティは手法 3と同様に現在の満足度よりも日程変更後の満足度が大きくなれば 1

    増やし,小さくなれば 3増やす.これにより効用が高い日程が選ばれやすくなり,日程を

  • 23

    1. ランダムに日程を作成

    2. プライマルデュアル法を用いてその日程における解を求める.

    3. while 一定時間経過するまで

    4. 式 (4.1)により各講師の Xj を求め,Xj が最も低い講師を t′ とする.

    5. 講師 t′ の候補日程の中で日程ペナルティが最も低い日程 d′ に変更する.

    6. if 計算済みリストに存在しない日程の組み合わせの場合.

    7. グラフを部分的に変更し,プライマル法を用いて満足度を求める.

    8. 計算済みリストに現在の日程の組み合わせを追加する.

    9. if日程変更前の満足度より現在の満足度が大きい場合.

    10. 講師 t′,日程 d′ の日程ペナルティを 1増やす.

    11. else

    12. 講師 t′,日程 d′ の日程ペナルティを 3増やす.

    13. end if

    15. else(計算済みリストに存在する日程の組み合わせの場合.)

    16. 日程をランダムに作成し,プライマルデュアル法で解く.

    17. end if

    18. end while

    19. 満足度が最大となる割当を出力する.

    図 4.7: 手法 3の手順

    ランダムに選ぶより良い解を探索できると考えられる.図 4.9にアルゴリズムを示す.

  • 24

    1. ランダムに日程を作成

    2. プライマルデュアル法を用いてその日程における解を求める.

    3. while 一定時間経過するまで

    4. 式 (4.1)により各講師の Xj を求め,j 番目に Xj が小さい講師を t′j とする.

    5. 現在のグラフを保存しておく.emax ← 0とする.6. for j = 1 to r

    7. 講師 t′j の候補日程から q 日ランダムに日程を選び,d′1,d

    ′2,. . .,d

    ′q とする.

    ただし講師 t′j の候補日程が (q − 1)日以下の場合,q ← (候補日程数− 1)8. for k = 1 to q

    9. 講師 t′j の日程を d′k 日に変更する.

    10. if 計算済みリストに存在しない日程の組み合わせの場合.

    11. グラフを再構築し,プライマル法を用いて満足度を求め,それを eとする.

    12. emax < eならば emax ← e,t′ ← t′j,d′ ← d′k とする.13. 計算済みリストに現在の日程の組み合わせを追加する.

    14. 講師 t′j の日程を元に戻す.

    15. end if

    16. end for

    17. end for

    18. if 全ての講師の全ての日程が計算済みリストに存在する日程の組み合わせの場合

    19. 日程をランダムに作成し,プライマルデュアル法で解く.

    20. else

    21. 講師 t′ の日程を d′ 日に変更し,グラフもその日程を解いたグラフにする.

    22. end if

    23. end while

    24. 満足度が最大となる割当を出力する.

    図 4.8: 手法 4の手順

  • 25

    1. ランダムに日程を作成,プライマルデュアル法を用いてその日程における解を求める.

    2. ep ←現在の満足度とする.3. while 一定時間経過するまで

    4. 式 (4.1)により各講師の Xj を求め,j 番目に Xj が小さい講師を t′j とする.

    5. 現在のグラフを保存しておく.emax ← 0とする.6. for j = 1 to r

    7. 講師 t′j の候補日程から q 日,日程ペナルティが低い順に日程を選び,

    d′1,d′2,. . .,d

    ′q とする.

    ただし講師 t′j の候補日程が (q − 1)日以下の場合,q ← (候補日程数− 1)8. for k = 1 to q

    9. 講師 t′j の日程を d′k 日に変更する.

    10. if 計算済みリストに存在しない日程の組み合わせの場合.

    11. グラフを再構築し,プライマル法を用いて満足度を求め,それを eとする.

    12. emax < eならば emax ← e,t′ ← t′j,d′ ← d′k とする.13. 計算済みリストに現在の日程の組み合わせを追加する.

    14. if ep < e

    15. 講師 j,日程 d′k の日程ペナルティを 1増やす.

    16. else

    17. 講師 j,日程 d′k の日程ペナルティを 3増やす.

    18. end if

    19. end if

    20. end for

    21. 講師 t′j の日程を元に戻す.

    22. end for

    23. if 全ての講師の全ての日程が計算済みリストに存在する日程の組み合わせの場合

    24. 日程をランダムに作成し,プライマルデュアル法で解く.

    25. else

    26. 講師 t′ の日程を d′ 日に変更し,ep = emax とする.

    27. end if

    28. end while

    29. 満足度が最大となる割当を出力する.

    図 4.9: 手法 5の手順

  • 26

    第 5章

    計算機実験

    まず 5.1節で入力データの作成方法を述べ,次に 5.2節で予備実験として,日程の組み

    合わせ総当たりによる最適解の求め方と結果,配点に関して,計算量に関する実測値につ

    いて述べ,最後に 5.3節で 4章の提案手法を実装し,計算機実験を行った結果と考察を述

    べる.

    5.1 実験方法

    提案手法の有効性を確認するため入力を 8種類作成する.入力 Iは実際の講義のデータ

    とする.実際のデータは学生数 49,講師数 9,日程数 11,amax = 6,amin = 4である.

    また提案手法の有効性を確認するためこれを基にランダムなデータを作成し,それらの入

    力に対しても計算機実験を行う.ランダムデータの作成方法は以下の通りである.入力と

    して学生の日程,講師の日程,学生の希望を作成しなければならないので,順に述べる.

    学生の日程は p1%が参加可能,(100− p1)%参加不可能とし,また講師の日程に関しては p2%が開催可能,(100− p2)%が開催不可能とする.ただしいずれの学生,講師も少なくとも 1 日は参加可能,開催可能とする.入力 I の p1 および p2 を計算により求めると

    p1 = 58,p2 = 37であった.学生の希望に関してだが,実際のデータではかなり偏りが

    あったので,以下のような方法で偏りを再現する.学生 s人の内 p3 人の第 1希望から第

    4希望までを特定の p4 人の講師にする.残りの (s− p3)人の学生は完全にランダムで希望を決める.実際のデータに近づけるためには p3 = s ∗ 0.4,p4 = t ∗ 0.4 程度にすると良い.

    表 5.1に作成した入力一覧を示す.入力 IIから入力 IVは入力 Iに似せ,学生数や講師

    数を増加させたデータ,入力 V から入力 VIII は入力 I と学生数や講師数は似ているが,

    p1 の大小や学生の希望の偏りを変更したデータを作成した.これは提案手法がどのよう

    な入力の場合に有効か確認するためである.

  • 27

    表 5.1: 入力一覧

    学生数 講師数 日程数 amin amax p1 p2 p3 p4

    入力 I 49 9 11 4 6 58 37 - -

    入力 II 70 10 10 6 8 60 40 25 4

    入力 III 90 12 10 6 8 60 40 30 5

    入力 IV 80 14 11 4 6 60 40 35 6

    入力 V 40 9 10 4 6 50 40 0 -

    入力 VI 50 9 10 4 6 40 40 20 5

    入力 VII 50 9 10 4 6 80 40 20 5

    入力 VIII 50 9 10 4 6 80 40 35 5

    実験では以下の環境を用いた.プログラミング言語は Java6.0,OSは Linux,CPUは

    AMD Phenom(tm) 2 x4 945 Processor,メモリ 2.0GBである.

    5.2 予備実験

    5.2.1 日程の組み合わせ総当たりによる最適解の求め方

    ある日程の組み合わせに対してプライマル法もしくはプライマルデュアル法を使用すれ

    ば,その日程の組み合わせの場合の最適解が求まることは 4章で述べた.そのため全ての

    日程の組み合わせを計算すればその入力に対する最適解が求まる.全ての日程の組み合わ

    せを総当たりする方法を以下に示す.

    t′ は候補日程数が最も多い講師とする.まず全ての講師の日程を一番最初の日程にし,

    プライマルデュアル法により解を求める.そして t′ の講師の日程を候補日程の中から順

    に変更し,プライマル法で解を求める.次に一人の講師の日程を次の候補日程にし,同様

    の動作を繰り返す.その講師の候補日程が最後の日程になればそれを最初の日程に戻し,

    次の講師の日程を次の候補日程に変更する.これを繰り返すことで日程の組み合わせを総

    当たりすることができる.

    5.2.2 配点による最適解の違い

    配点とは学生から講師への辺のコストをいくらにするかを指す.本稿では割当問題を最

    小費用フロー問題として解くので,辺のコストが小さい程,割り当てられやすくなる.

    配点 Aは生徒から講師への辺のコストを第 1希望ならば 0,第 2希望ならば 30,第 3

    希望ならば 60,第 4希望ならば 80,それ以降は 10000とする.

  • 28

    このとき満足度は (100 − 各希望のコスト)として求めた.また配点 B は辺のコストを第 1 希望ならば 0,第 2 希望ならば 10,第 3 希望ならば

    100,第 4希望ならば 1000,それ以降は 100000とした.このとき満足度は (1000 − 各希望のコスト)として求めた.入力 Iに対して配点 A,配点 Bにおける最適解を求め,その

    ときの学生の希望別人数を求めた結果を表 5.2に示す.

    表 5.2: 配点の違いによる各希望の割当人数の比較

    第 1希望 第 2希望 第 3希望 第 4希望

    A 21 11 9 8

    B 17 14 12 6

    表 5.2を見ると配点 Aでは第 1希望に割り当てられる人数が多く,配点 Bでは第 4希

    望に割り当てられる人数が少ないことがわかる.これは,最小費用フロー問題ではコスト

    が小さい辺ほどフローが流れやすい,つまり割り当てられやすいからだと考えられる.ど

    ちらの配点が優れているかはその時の状況に依存するので一概には言えない.本稿では配

    点 Aを中心に扱う.

    表 5.3に配点 Aにおける,各入力に対する日程の組み合わせ総当たりの結果を示す.

    表 5.3: 各入力に対する総当たりの結果

    全日程の組み合わせ 時間 (分) 最適解

    入力 I 60000 7 3390

    入力 II 259200 106 6110

    入力 III 2419200 2527 7550

    入力 IV 19353600 9276 6580

    入力 V 80000 11 4110

    入力 VI 160000 18 3350

    入力 VII 150000 21 4790

    入力 VIII 180000 26 4460

    5.2.3 プライマル法の時間計算量の実測値

    3.2節で述べたようにプライマル法の時間計算量は,負閉路の数を K として O(mnK)

    であった.プライマル法を実装し,K を測定した結果を表 5.4 に示す.各入力に対して

    ランダムに一人の講師を選び,その講師の候補日程の中でランダムに日程変更を行いプラ

  • 29

    イマル法を使用するという動作を 1000回行い,K を測定しその平均を求めた.さらに表

    5.4の K の値はこの一連の動作を 10回ずつ行った平均値である.表 5.4を見ると,入力

    I,IVではK が小さく,入力 II,IIIではK が大きいことがわかる.この原因は一人の講

    師に割り当てられる上限人数 amin の影響が考えられる.なぜなら講師一人の日程を変更

    すると最低でも amin 個は負閉路ができるからである.また入力 Vでは学生の希望の偏り

    が少ないため割り当ての変更が起きにくく,K の値が入力 Iよりも小さいと考えられる.

    入力 VI では p1 の値が極端に小さく,参加可能な学生が少なく割当変更が起きにくいた

    め,K の値が入力 Iよりも小さいと考えられる.また入力 VIIと入力 VIIIの場合 K が小

    さいのは p1 が極端に大きいため,講師の日程を変更しても多くの学生は変更前に割り当

    てられていた講師にそのまま割り当てることができるためであると考えられる.

    表 5.4: 各入力に対する Kの実測値

    K 学生数 講師数 日程数 amax amin

    入力 I 14.74 49 9 11 6 4

    入力 II 17.49 70 10 10 8 6

    入力 III 18.42 90 12 10 8 6

    入力 IV 14.64 80 14 11 6 4

    入力 V 10.92 50 9 10 4 6

    入力 VI 11.78 50 9 10 4 6

    入力 VII 8.75 50 9 10 4 6

    入力 VIII 9.01 50 9 10 4 6

    5.3 結果及び考察

    入力は入力 Iとする.この入力は学生数 49,講師数 9,日程数 11の日程である.配点

    は配点 Aであり,満足度は (100 −各希望のコスト)として求めた.表 5.5,表 5.6に手法 1,手法 2,手法 3,手法 4,手法 5 をそれぞれ 1 分,20 回ずつ実行した結果を示す.

    表 5.5 の手法 2 で r = 2 となっているのは考慮する講師の数を 2,つまり 2 人の講師の

    日程を変更して良い方を採用した結果である.4,6,9も同様である.また手法 4で r = 2,

    q = 2となっているのは考慮する講師の数を 2,考慮する日程の数を 2とした場合の結果

    である.表 5.6の手法 5も同様である.

    表 5.5を見ると 20回中 20回最適解に達したのは,手法 2で考慮する講師の数が 6,9

    と手法 4と手法 5の大半である.これにより手法 2と手法 4と手法 5が良いことが分か

    る.この入力の場合,数多くランダムに解を探索するよりも,広い近傍を探索する方法が

  • 30

    表 5.5: 入力 Iに対する手法 1から手法 4の実行結果

    1分後の満足度平均 最適解に達した回数

    手法 1 3363 8

    手法 2

    r

    2 3381 14

    4 3389 14

    6 3390 20

    9 3390 20

    手法 3 3360 5

    手法 4

    r q

    2 2 3383 15

    2 4 3389 19

    2 6 3387 18

    2 8 3390 20

    2 11 3390 20

    4 2 3390 20

    4 4 3390 20

    4 6 3390 20

    4 8 3390 20

    4 11 3390 20

    6 2 3390 20

    6 4 3390 20

    6 6 3390 20

    6 8 3390 20

    6 11 3390 20

    9 2 3390 20

    9 4 3390 20

    9 6 3390 20

    9 8 3390 20

    9 11 3390 20

  • 31

    表 5.6: 入力 Iに対する手法 5の実行結果

    1分後の平均満足度 最適解に達した回数

    手法 5

    r q

    2 2 3388 17

    2 4 3390 20

    2 6 3390 20

    2 8 3390 20

    2 11 3390 20

    4 2 3390 20

    4 4 3390 20

    4 6 3390 20

    4 8 3390 20

    4 11 3390 20

    6 2 3390 20

    6 4 3390 20

    6 6 3390 20

    6 8 3390 20

    6 11 3390 20

    9 2 3390 20

    9 4 3390 20

    9 6 3390 20

    9 8 3390 20

    9 11 3390 20

    有効であるためであると考えられる.

    次に表 5.7 を見る.表 5.7 は表 5.5 で 20 回中 20 回最適解に達した手法に対してのみ

    100回ずつ計算機実験を行い,最適解に達した平均時間を示した表である.表 5.7を見る

    と手法 4と手法 5では大差はなく,パラメータは共に r = 9,つまり rが講師数の場合に,

    結果が良いことが分かる.一方 q による大きな違いは見られない.これは入力 Iでは候補

    日程が少ない講師が多く,q を大きくしてもあまり変化がないことが原因と考えられる.

    次は入力は入力 Iのままで配点を配点 Bに変更し,各手法 100回ずつ実験を行い最適

    解に達した平均時間を表 5.8に示す.配点 Bでも配点 Aと同じく手法 4,手法 5の r が

    大きい方が良く,q による顕著な違いは見られない.また表 5.7 と表 5.8 を比較すると,

  • 32

    表 5.7: 入力 Iに対する配点 Aにおいて最適解に達した時間比較

    手法 2 平均時間 [s]

    r

    6 9.73

    9 2.92

    手法 4

    r q

    2 8 11.05

    2 11 9.37

    4 2 -

    4 4 3.81

    4 6 3.35

    4 8 3.92

    4 11 4.18

    6 2 2.2

    6 4 2.75

    6 6 2.05

    6 8 3.01

    6 11 2.94

    9 2 1.14

    9 4 1.38

    9 6 1.29

    9 8 1.37

    9 11 1.43

    手法 5 平均時間 [s]

    r q

    2 4 14.35

    2 6 13.21

    2 8 12.75

    2 11 7.78

    4 2 4.96

    4 4 4.42

    4 6 2.94

    4 8 5.16

    4 11 3.85

    6 2 3.60

    6 4 2.56

    6 6 2.63

    6 8 2.57

    6 11 3.78

    9 2 1.23

    9 4 1.14

    9 6 1.48

    9 8 1.24

    9 11 1.22

    100回中 100回最適解に達したので試した手法は配点を変更しても有効であることが確認

    でき,最適解に達した平均時間も大差がない.提案手法では配点により違いはないことが

    わかった.以降,有効であった手法 2,手法 4,手法 5を中心に各入力に対する計算機実

    験の結果を示す.

    続いて入力 II に対する結果を表 5.9 に示す.表 5.9 は手法 2,手法 4,手法 5 のパラ

    メータを変えながら 5 分 100 回ずつ実行し,最適解に達した時間を計測し,その平均を

    取った結果である.配点は配点 Aとする.手法 2,手法 4,手法 5のいずれのパラメータ

    においても 100回中 100 回とも最適解に達した.また最適解に達する平均時間を比較す

    ると,入力 Iと同じように r = 10,つまり r が講師数と同じ場合の結果が良いことがわ

  • 33

    表 5.8: 入力 Iに対する配点 Bの場合の各手法の結果

    平均時間 [s] 手法 4 平均時間 [s] 手法 5 平均時間 [s]

    手法 1 - r q r q

    手法 2 2 2 - 2 2 -

    r 2 4 - 2 4 -

    2 - 2 6 11.36 2 6 6.54

    4 - 2 8 10.74 2 8 5.91

    6 1.51 2 11 6.06 2 11 6.06

    9 0.82 4 2 3.22 4 2 3.13

    手法 3 - 4 4 2.63 4 4 2.76

    4 6 2.95 4 6 2.83

    4 8 2.99 4 8 2.87

    4 11 2.78 4 11 2.94

    6 2 1.34 6 2 1.26

    6 4 1.45 6 4 1.52

    6 6 1.55 6 6 1.71

    6 8 1.85 6 8 1.73

    6 11 1.88 6 11 1.74

    9 2 0.84 9 2 0.82

    9 4 1.06 9 4 0.96

    9 6 1.18 9 6 1.06

    9 8 1.17 9 8 1.15

    9 11 1.23 9 11 1.25

    かる.ここでも q の値による大きな違いは見られなかった.入力 Iと同様に各講師の候補

    日程が少ないことが原因であると考えられる.

    続いて入力 IIIに対する結果を表 5.10に示す.表 5.10は手法 2,手法 3,手法 4,手法

    5 を 5 分 100 回ずつ実行し,最適解に達した時間を計測し,その平均を取った結果であ

    る.配点は配点 Aとする.平均時間が −になっている手法 2の r = 6と手法 3は,100回中 100回最適解に達しなかったことを表す.表 5.10を見ると,手法 2では r = 9が,

    手法 4と手法 5では r = 6, 9辺りが平均時間が短いことが分かる.手法 4や手法 5にお

    いて r = 12とした場合は近傍が広すぎて 1回の探索に時間がかかりすぎたため平均時関

    が長くなってしまったと考えられる.これらによりある程度の大きさの近傍を探索するこ

    とが最も良いと考えられる.

  • 34

    表 5.9: 入力 IIに対する各手法の実行結果

    手法 2 平均時間 [s] 手法 4 平均時間 [s] 手法 5 平均時間 [s]

    r r q r q

    4 19.09 4 4 5.27 4 4 5.23

    7 4.49 4 7 5.65 4 7 5.58

    10 4.35 4 10 5.94 4 10 5.48

    7 4 4.15 7 4 4.72

    7 7 4.55 7 7 5.05

    7 10 4.43 7 10 4.39

    10 4 2.92 10 4 2.79

    10 7 2.96 10 7 3.03

    10 10 3.02 10 10 2.82

    次に入力 IVに対する結果について述べる.手法 4,手法 5をパラメータ r = 2, 4, 8, 12,

    q = 3, 6, 9の全ての組み合わせで,各手法を 1時間 3回ずつ計算機実験を行ったが,この

    入力に対しては最適解を求めることができなかった.表 5.1,5.3からわかるように入力 IV

    は問題の規模が最も大きい.今回試した提案手法では入力 IVのような規模の問題におい

    て最適解を高速に求めることはできないとわかる.

    次に入力 Vから入力 VIIIの結果を述べる.これらの入力は入力 Iと比べて,学生の希

    望の偏りや学生の参加可能率を変更した入力である.これらの違いがあっても提案手法が

    有効であるかどうか確かめる.

    入力 Vに対して手法 2,手法 4,手法 5を様々なパラメータで計算機実験を行った結果

    を表 5.11に示す.表 5.11の平均時間は各手法を 1分 100回ずつ行い,最適解に達した時

    間の平均を取った値である.また配点は配点 Aとする.入力 Vは p1 = 40と入力 Iより

    も学生が参加可能な日程が少なく,p2 = 0と学生の希望の偏りがないデータである.

    表 5.11を見ると手法 4 と手法 5 のいずれも r = 3 の場合が最も良いことが分かり,q

    に依存する顕著な違いは見られない.学生の希望の偏りがない場合は近傍があまり大きす

    ぎない方が良いことが分かる.また表 5.7と比べると有効であるパラメータが異なるが,

    原因は現段階では不明である.

    続いて入力 VIに対して手法 2,手法 4,手法 5を様々なパラメータで計算機実験を行っ

    た結果を表 5.12に示す.表 5.12の平均時間は各手法を 1分 100回ずつ行い,最適解に達

    した時間の平均を取った値である.配点は配点 Aとする.入力 VIは入力 Iよりも学生の

    参加可能な日程を少なくしたデータである.表 5.12を見ると手法 4と手法 5のいずれの

    パラメータでも大差がないことが分かる.また表 5.7と比べるといずれのパラメータにお

  • 35

    表 5.10: 入力 IIIに対する各手法の実験結果

    手法 2 平均時間 [s] 手法 4 平均時間 [s] 手法 5 平均時間 [s]

    r r q r q

    6 - 3 2 - 3 2 -

    9 25.66 3 4 - 3 4 -

    3 6 - 3 6 -

    3 8 41.04 3 8 68.82

    3 10 49.99 3 10 39.66

    6 2 36.13 6 2 40.17

    6 4 31.69 6 4 32.82

    6 6 29.29 6 6 29.23

    6 8 26.80 6 8 30.55

    6 10 29.37 6 10 29.01

    9 2 30.06 9 2 24.72

    9 4 29.40 9 4 26.22

    9 6 33.94 9 6 38.96

    9 8 30.62 9 8 35.15

    9 10 31.89 9 10 31.09

    12 2 25.21 12 2 29.31

    12 4 33.35 12 4 34.63

    12 6 37.56 12 6 44.02

    12 8 38.07 12 8 39.12

    12 10 41.38 12 10 38.46

    いても平均時間が短いことがわかる.これは学生の参加可能な日程が少ないため学生から

    講師への辺が少なく,入力 VIは入力 Iよりも解くことが容易な入力であるためと考えら

    れる.

    次に入力 VIIに対して手法 2,手法 4,手法 5を様々なパラメータで計算機実験を行っ

    た結果を表 5.13に示す.表 5.13の平均時間は各手法を 1分 100回ずつ行い,最適解に達

    した時間の平均を取った値である.入力 VIIは入力 I,入力 VIと比べて学生の参加可能率

    p1 を極端に大きくしたデータである.表 5.13を見ると,いずれの手法でも入力 I,入力

    VIのときよりも高速に最適解が求まることが分かる.これは学生参加可能率が高すぎる

    と容易に解くことができる問題であるためと考えられる.なぜなら学生の都合の良い日程

    が多い場合は,講師がいずれの日程に開催しても学生を希望が高い講師を割り当てること

  • 36

    表 5.11: 入力 Vに対する各手法の結果

    手法 2 手法 4 手法 5

    r 平均時間 [s] r q 平均時間 [s] r q 平均時間 [s]

    3 - 3 3 2.45 3 3 2.16

    6 5.06 3 6 2.65 3 6 3.01

    9 7.06 3 9 2.77 3 9 3.11

    6 3 2.65 6 3 3.46

    6 6 3.75 6 6 3.76

    6 9 4.36 6 9 4.06

    9 3 3.90 9 3 3.53

    9 6 4.12 9 6 4.12

    9 9 4.57 9 9 4.46

    表 5.12: 入力 VIに対する各手法の結果

    手法 2 手法 4 手法 5

    r 平均時間 [s] r q 平均時間 [s] r q 平均時間 [s]

    3 4.21 3 3 1.23 3 3 1.49

    6 2.30 3 6 1.33 3 6 1.28

    9 1.45 3 9 1.14 3 9 1.37

    6 3 1.01 6 3 0.87

    6 6 1.08 6 6 1.01

    6 9 0.98 6 9 1.04

    9 3 1.01 9 3 0.98

    9 6 1.12 9 6 1.09

    9 9 1.05 9 9 1.15

    ができるからである.また手法 4,手法 5では r = 6, 9と大きい場合に高速に最適解が求

    まっていることが分かる.q に依存する顕著な違いはここでも見られなかった.これは入

    力 Iと同じ傾向である.

    次に入力 VIIIに対して手法 2,手法 4,手法 5を様々なパラメータで計算機実験を行っ

    た結果を表 5.14に示す.表 5.14の平均時間は各手法を 1分 100回ずつ行い,最適解に達

    した時間の平均を取った値である.入力 VIIIは入力 VIIと比べて学生の希望をより偏らせ

    たデータである.表 5.13と表 5.14を比べると,全ての場合で表 5.14の方が平均時間が

    増加している.入力 VIII の方が学生の希望に偏りがあるため難しい問題であるためと考

  • 37

    表 5.13: 入力 VIIに対する各手法の結果

    手法 2 手法 4 手法 5

    r 平均時間 [s] r q 平均時間 [s] r q 平均時間 [s]

    3 0.39 3 3 0.65 3 3 0.63

    6 0.32 3 6 0.82 3 6 0.81

    9 0.37 3 9 0.77 3 9 0.83

    6 3 0.40 6 3 0.39

    6 6 0.49 6 6 0.46

    6 9 0.45 6 9 0.50

    9 3 0.44 9 3 0.83

    9 6 0.49 9 6 0.48

    9 9 0.5 9 9 0.51

    えられる.また表 5.14を見ると,ここでもやはり手法 4,手法 5の r = 9のように r が

    大きい場合に高速に最適解が求まることが分かる.これは入力 Iと同じ傾向である.

    表 5.14: 入力 VIIIに対する各手法の結果

    手法 2 手法 4 手法 5

    r 平均時間 [s] r q 平均時間 [s] r q 平均時間 [s]

    3 1.45 3 3 1.29 3 3 1.35

    6 0.82 3 6 1.27 3 6 1.16

    9 0.58 3 9 1.09 3 9 1.19

    6 3 1.02 6 3 0.96

    6 6 1.25 6 6 1.09

    6 9 1.07 6 9 1.07

    9 3 0.62 9 3 0.67

    9 6 0.7 9 6 0.72

    9 9 0.72 9 9 0.72

  • 38

    第 6章

    あとがき

    本論文では,複数の制約条件を持つクラス割当問題に対する近似解法として,最小費用

    フローの解法を用い,講師の日程を変更し部分的にグラフを変更する動作を繰り返すこと

    で高速に近似解を求めることができる手法を提案した.また講師の開催日程の変更方法が

    異なる 5つの手法を提案した.実際に行われたデータやそれを基に作成したランダムデー

    タ,傾向が違うデータを入力として,計算機実験により,多くの入力において提案手法に

    より最適解が求まることがわかり,その有効性を確認した.

    計算機実験により,広い近傍を探索する手法 4と手法 5は 5つの提案手法の中で特に良

    い結果を得られた.多くの入力の場合,手法 4,手法 5いずれも r が大きいとき,つまり

    近傍が広いときに有効であることがわかった.一方 q による違いは見られなかった.

    また入力 IIIのように問題の規模が大きく,講師数が多い場合は r = 12として最大の近

    傍を探索するよりも,r = 6, 9程度の近傍を探索する方が良い.また学生の希望の偏りを

    なくした入力 Vだけは手法 4,手法 5いずれも r = 3程度と r が大きくない方が効果的

    であった.

    今後の課題としては以下の 2つが考えられる.1つ目は日程を変更する講師のより良い

    選び方を考えることである.本論文では日程を変更している回数が少ない講師や日程候補

    が多い講師,割当人数が少ない講師を優先して講師を選ぶ方針で 4.1式を作成しそれを用

    いた手法を提案したが,他にも講師の人気や生徒の日程との兼ね合い等,様々な要素が考

    えられる.より上手く日程を変更する講師を選ぶことで小さな近傍でも良い解を探索する

    ことができ,効率良く探索が行えるので高速化に繋がると考えられる.2つ目は複数の講

    師の日程を変更する方法である.本論文では 1人の講師の日程のみを変更し近傍を探索し

    たが,これを複数の講師の日程を変更することでより広い近傍を探索することが可能とな

    り,良い近似解が求まる可能性があると考えられる.

  • 39

    謝辞

    本研究を進めるにあたり,熱心なご指導をして下さった神戸大学大学院工学研究科電気

    電子工学専攻,増田澄男教授と山口一章准教授に心よりお礼申し上げます. また色々な面

    で手助け頂いたアルゴリズム研究室の院生,学部生にも深く感謝致します.

  • 40

    参考文献

    [1] 北卓 之,芝山 敏満,山口 一章,増田 澄男,“クラス編成問題に対する平等な割当

    決定法,” 電子情報通信学会技術研究報告 COMP コンピュテーション 100(289),

    pp.17-23,2000.

    [2] 今野 浩,数理決定法入門-キャンパスの OR,朝倉書店, 1992.

    [3] 今野 浩,実践数理決定法,日科技連,1997.

    [4] 大坪 正和,倉重 賢治,亀山 嘉正,“中学校における時間割編成問題への取り組み,”

    日本経営工学会論文誌,57(3),pp.231-242, 2006.

    [5] 吉川 昌澄,“学校時間割り自動編成,” オペレーションズ・リサーチ 経営の科学

    46(9),pp.461-468,2001.

    [6] 池上 淳子,“2交替制ナース・スケジューリングのアルゴリズム改善,” Journal of

    the Operations Research Society of Japan 43(3),pp.365-381,2000.

    [7] 根津 弘人,原田 拓,“固定チームナーシングのための進化型計算による勤務スケ

    ジューリング手法の提案,” 情報処理学会研究報告.ICS [知能と複雑系]2006(37),

    pp.25-30,2006.

    [8] 宮崎 修一,“安定マッチング問題に関する最近の話題,” 電子情報通信学会技術研究

    報告. AI 人工知能と知識処理 109(211),pp.19-22,2009.

    [9] 片岡 達,茨木 俊秀,“研究室配属のための一方式の提案とその数理的考察,” 日本オ

    ペレーションズ・リサーチ学会和文論文誌,vol.51,pp.71-93,2008.

    [10] 上田 俊,岩崎 敦,横尾 真,“配属人数下限付き研究室配属問題,” 第 10回情報科学

    技術フォーラム (FIT2011) A-024,2011.

    [11] 奥山 美雪,正道寺 勉,伊原 征治郎,“遺伝的アルゴリズムによるクラス編成問題の

    一解法,” 情報処理学会全国大会講演論文集 第 53回平成 8年後期 (2),pp.161-162,

    1996.

    [12] 岩崎 彰典,宮地 功,尾上 誉幸,“学習グループ編成における GA による解と厳密

    解との比較,” 電子情報通信学会技術研究報告.ET 教育工学 102(330),pp.47-52,

    2002.

  • 41

    [13] D.S.Johnson, “Approximation algorithms for combinatorial problems,” Journal

    of Computers and System Sciences, vol.9, pp.256-278, 1974.

    [14] 浅野 孝夫,情報の構造 (下),日本評論社,1994.

    [15] Richard Bellman, “On a Routing Problem,” in Quarterly of Applied Mathematics

    16(1) pp.87-90,1958.

    [16] 久保幹雄,J.P.ペドロソ,メタヒューリスティクスの数理,共立出版,2009.

  • 発表論文リスト

    [1] 有山貴士,山口一章,増田澄男,”あるクラス割当問題に関する一考察”,平成 23年

    度電気関係学会関西支部連合大会講演論文集 CD-ROM,30A1-17,2011.