diff --git a/report/report.pdf b/report/report.pdf index aebb194..4905b66 100644 --- a/report/report.pdf +++ b/report/report.pdf @@ -4,8 +4,8 @@ 1 0 obj << /Type /Pages - /Count 4 - /Kids [164 0 R 166 0 R 168 0 R 173 0 R] + /Count 3 + /Kids [159 0 R 161 0 R 166 0 R] >> endobj @@ -23,7 +23,7 @@ endobj /Parent 2 0 R /Next 4 0 R /Title (Introduction) - /Dest 147 0 R + /Dest 142 0 R >> endobj @@ -33,7 +33,7 @@ endobj /Next 5 0 R /Prev 3 0 R /Title (Background & Setup) - /Dest 148 0 R + /Dest 143 0 R >> endobj @@ -46,7 +46,7 @@ endobj /Last 10 0 R /Count -5 /Title (Results & Reflection) - /Dest 154 0 R + /Dest 149 0 R >> endobj @@ -55,7 +55,7 @@ endobj /Parent 5 0 R /Next 7 0 R /Title (Running the algorithm) - /Dest 149 0 R + /Dest 144 0 R >> endobj @@ -65,7 +65,7 @@ endobj /Next 8 0 R /Prev 6 0 R /Title (Best and Worst RMSE) - /Dest 150 0 R + /Dest 145 0 R >> endobj @@ -75,7 +75,7 @@ endobj /Next 9 0 R /Prev 7 0 R /Title (Crowding) - /Dest 151 0 R + /Dest 146 0 R >> endobj @@ -85,7 +85,7 @@ endobj /Next 10 0 R /Prev 8 0 R /Title (Elitism) - /Dest 152 0 R + /Dest 147 0 R >> endobj @@ -94,7 +94,7 @@ endobj /Parent 5 0 R /Prev 9 0 R /Title (Comparing with the Knapsack Problem) - /Dest 153 0 R + /Dest 148 0 R >> endobj @@ -104,7 +104,7 @@ endobj /Next 12 0 R /Prev 5 0 R /Title (Conclusion) - /Dest 155 0 R + /Dest 150 0 R >> endobj @@ -114,7 +114,7 @@ endobj /Next 13 0 R /Prev 11 0 R /Title (Further work) - /Dest 156 0 R + /Dest 151 0 R >> endobj @@ -123,13 +123,13 @@ endobj /Parent 2 0 R /Prev 12 0 R /Title (References) - /Dest 157 0 R + /Dest 152 0 R >> endobj 14 0 obj << - /Nums [0 115 0 R 1 116 0 R 2 117 0 R 3 118 0 R] + /Nums [0 111 0 R 1 112 0 R 2 113 0 R] >> endobj @@ -143,171 +143,181 @@ endobj /Strong /Span /Em /Span >> - /K [20 0 R] + /K [19 0 R] /ParentTree << - /Nums [0 108 0 R 1 91 0 R 2 90 0 R 3 60 0 R 4 16 0 R 5 17 0 R 6 18 0 R 7 27 0 R 8 25 0 R 9 25 0 R 10 19 0 R] + /Nums [0 104 0 R 1 87 0 R 2 86 0 R 3 58 0 R 4 16 0 R 5 17 0 R 6 26 0 R 7 24 0 R 8 24 0 R 9 18 0 R] >> - /ParentTreeNextKey 11 + /ParentTreeNextKey 10 >> endobj 16 0 obj -[114 0 R 114 0 R 113 0 R 110 0 R 107 0 R 108 0 R 106 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 104 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 103 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 101 0 R 100 0 R 98 0 R 97 0 R 97 0 R 95 0 R 94 0 R 89 0 R 89 0 R 89 0 R 89 0 R 89 0 R 89 0 R 89 0 R 89 0 R 91 0 R 89 0 R 89 0 R 89 0 R 89 0 R 90 0 R 89 0 R 89 0 R 88 0 R 88 0 R 88 0 R 87 0 R 86 0 R 85 0 R 84 0 R 84 0 R 84 0 R 84 0 R 83 0 R 81 0 R 78 0 R 76 0 R 76 0 R 73 0 R 71 0 R 68 0 R 66 0 R 66 0 R 59 0 R 59 0 R 59 0 R 59 0 R 59 0 R 59 0 R 59 0 R 60 0 R 59 0 R 59 0 R 58 0 R 57 0 R] +[110 0 R 110 0 R 109 0 R 106 0 R 103 0 R 104 0 R 102 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 100 0 R 99 0 R 99 0 R 99 0 R 99 0 R 99 0 R 99 0 R 99 0 R 99 0 R 98 0 R 98 0 R 98 0 R 98 0 R 98 0 R 98 0 R 98 0 R 98 0 R 97 0 R 96 0 R 94 0 R 93 0 R 91 0 R 90 0 R 85 0 R 85 0 R 87 0 R 85 0 R 85 0 R 86 0 R 85 0 R 85 0 R 84 0 R 83 0 R 82 0 R 82 0 R 82 0 R 82 0 R 81 0 R 79 0 R 76 0 R 74 0 R 74 0 R 71 0 R 69 0 R 66 0 R 64 0 R 64 0 R 57 0 R 57 0 R 57 0 R 58 0 R 57 0 R 56 0 R 51 0 R 51 0 R 55 0 R 55 0 R 55 0 R 55 0 R 51 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 51 0 R 53 0 R 53 0 R 53 0 R 53 0 R 53 0 R 53 0 R 51 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 51 0 R 50 0 R 49 0 R 49 0 R 49 0 R 48 0 R 47 0 R 47 0 R 47 0 R 47 0 R 47 0 R 47 0 R 47 0 R 46 0 R] endobj 17 0 obj -[56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 55 0 R 50 0 R 54 0 R 54 0 R 54 0 R 54 0 R 50 0 R 53 0 R 53 0 R 53 0 R 53 0 R 53 0 R 53 0 R 50 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 50 0 R 50 0 R 50 0 R 51 0 R 51 0 R 51 0 R 51 0 R 51 0 R 51 0 R 51 0 R 50 0 R 50 0 R 50 0 R 50 0 R 50 0 R 50 0 R 49 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 47 0 R 47 0 R 47 0 R 47 0 R 47 0 R 47 0 R 47 0 R 47 0 R 47 0 R 46 0 R 46 0 R 46 0 R 46 0 R 46 0 R 45 0 R 44 0 R 43 0 R 42 0 R 42 0 R 42 0 R 42 0 R 42 0 R] +[45 0 R 44 0 R 43 0 R 42 0 R 42 0 R 41 0 R 38 0 R 38 0 R 40 0 R 40 0 R 40 0 R 40 0 R 40 0 R 40 0 R 40 0 R 38 0 R 39 0 R 39 0 R 39 0 R 39 0 R 39 0 R 39 0 R 38 0 R 37 0 R 36 0 R 36 0 R 35 0 R 35 0 R 34 0 R 33 0 R 33 0 R] endobj 18 0 obj -[42 0 R 42 0 R 42 0 R 41 0 R 40 0 R 40 0 R 40 0 R 40 0 R 40 0 R 40 0 R 40 0 R 40 0 R 39 0 R 38 0 R 38 0 R 37 0 R 37 0 R 36 0 R 35 0 R 35 0 R 35 0 R 34 0 R 33 0 R 33 0 R 33 0 R 32 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 30 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R 29 0 R] +[32 0 R 31 0 R 30 0 R 30 0 R 30 0 R 29 0 R 28 0 R 28 0 R 28 0 R 28 0 R 28 0 R 28 0 R 27 0 R 26 0 R 23 0 R 23 0 R 23 0 R 23 0 R 23 0 R 23 0 R 24 0 R 24 0 R] endobj 19 0 obj -[28 0 R 27 0 R 24 0 R 24 0 R 24 0 R 24 0 R 24 0 R 24 0 R 25 0 R 25 0 R] +<< + /Type /StructElem + /S /Document + /P 15 0 R + /K [110 0 R 107 0 R 105 0 R 103 0 R 102 0 R 101 0 R 100 0 R 99 0 R 98 0 R 88 0 R 85 0 R 84 0 R 83 0 R 82 0 R 59 0 R 57 0 R 56 0 R 51 0 R 50 0 R 49 0 R 48 0 R 47 0 R 46 0 R 45 0 R 44 0 R 43 0 R 42 0 R 41 0 R 38 0 R 37 0 R 36 0 R 35 0 R 34 0 R 33 0 R 32 0 R 31 0 R 30 0 R 29 0 R 28 0 R 27 0 R 20 0 R] +>> endobj 20 0 obj << /Type /StructElem - /S /Document - /P 15 0 R - /K [114 0 R 111 0 R 109 0 R 107 0 R 106 0 R 105 0 R 104 0 R 103 0 R 102 0 R 92 0 R 89 0 R 88 0 R 87 0 R 86 0 R 85 0 R 84 0 R 61 0 R 59 0 R 58 0 R 57 0 R 56 0 R 55 0 R 50 0 R 49 0 R 48 0 R 47 0 R 46 0 R 45 0 R 44 0 R 43 0 R 42 0 R 41 0 R 40 0 R 39 0 R 38 0 R 37 0 R 36 0 R 35 0 R 34 0 R 33 0 R 32 0 R 31 0 R 30 0 R 29 0 R 28 0 R 21 0 R] + /S /L + /P 19 0 R + /A [<< + /O /List + /ListNumbering /Decimal + >>] + /K [21 0 R] >> endobj 21 0 obj << /Type /StructElem - /S /L + /S /LI /P 20 0 R - /A [<< - /O /List - /ListNumbering /Decimal - >>] - /K [22 0 R] + /K [25 0 R 22 0 R] >> endobj 22 0 obj << /Type /StructElem - /S /LI + /S /LBody /P 21 0 R - /K [26 0 R 23 0 R] + /K [23 0 R] >> endobj 23 0 obj << /Type /StructElem - /S /LBody + /S /BibEntry /P 22 0 R - /K [24 0 R] + /K [14 15 16 17 18 19 24 0 R] + /Pg 166 0 R >> endobj 24 0 obj << /Type /StructElem - /S /BibEntry + /S /Link /P 23 0 R - /K [2 3 4 5 6 7 25 0 R] - /Pg 173 0 R + /K [20 << + /Type /OBJR + /Pg 166 0 R + /Obj 164 0 R + >> 21 << + /Type /OBJR + /Pg 166 0 R + /Obj 165 0 R + >>] + /Pg 166 0 R >> endobj 25 0 obj << /Type /StructElem - /S /Link - /P 24 0 R - /K [8 << - /Type /OBJR - /Pg 173 0 R - /Obj 171 0 R - >> 9 << - /Type /OBJR - /Pg 173 0 R - /Obj 172 0 R - >>] - /Pg 173 0 R + /S /Lbl + /P 21 0 R + /K [26 0 R] >> endobj 26 0 obj << /Type /StructElem - /S /Lbl - /P 22 0 R - /K [27 0 R] + /S /Link + /P 25 0 R + /K [13 << + /Type /OBJR + /Pg 166 0 R + /Obj 163 0 R + >>] + /Pg 166 0 R >> endobj 27 0 obj << /Type /StructElem - /S /Link - /P 26 0 R - /K [1 << - /Type /OBJR - /Pg 173 0 R - /Obj 170 0 R - >>] - /Pg 173 0 R + /S /H1 + /P 19 0 R + /T (References) + /K [12] + /Pg 166 0 R >> endobj 28 0 obj << /Type /StructElem - /S /H1 - /P 20 0 R - /T (References) - /K [0] - /Pg 173 0 R + /S /P + /P 19 0 R + /K [6 7 8 9 10 11] + /Pg 166 0 R >> endobj 29 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [36 37 38 39 40 41 42 43 44 45 46 47 48 49] - /Pg 168 0 R + /S /H1 + /P 19 0 R + /T (Further work) + /K [5] + /Pg 166 0 R >> endobj 30 0 obj << /Type /StructElem - /S /H1 - /P 20 0 R - /T (Further work) - /K [35] - /Pg 168 0 R + /S /P + /P 19 0 R + /K [2 3 4] + /Pg 166 0 R >> endobj 31 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [26 27 28 29 30 31 32 33 34] - /Pg 168 0 R + /S /H1 + /P 19 0 R + /T (Conclusion) + /K [1] + /Pg 166 0 R >> endobj 32 0 obj << /Type /StructElem - /S /H1 - /P 20 0 R - /T (Conclusion) - /K [25] - /Pg 168 0 R + /S /Figure + /P 19 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [0] + /Pg 166 0 R >> endobj @@ -315,9 +325,9 @@ endobj << /Type /StructElem /S /P - /P 20 0 R - /K [22 23 24] - /Pg 168 0 R + /P 19 0 R + /K [29 30] + /Pg 161 0 R >> endobj @@ -325,13 +335,13 @@ endobj << /Type /StructElem /S /Figure - /P 20 0 R + /P 19 0 R /A [<< /O /Layout /Placement /Block >>] - /K [21] - /Pg 168 0 R + /K [28] + /Pg 161 0 R >> endobj @@ -339,68 +349,64 @@ endobj << /Type /StructElem /S /P - /P 20 0 R - /K [18 19 20] - /Pg 168 0 R + /P 19 0 R + /K [26 27] + /Pg 161 0 R >> endobj 36 0 obj << /Type /StructElem - /S /Figure - /P 20 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [17] - /Pg 168 0 R + /S /H2 + /P 19 0 R + /T (Comparing with the Knapsack Problem) + /K [24 25] + /Pg 161 0 R >> endobj 37 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [15 16] - /Pg 168 0 R + /S /Figure + /P 19 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [23] + /Pg 161 0 R >> endobj 38 0 obj << /Type /StructElem - /S /H2 - /P 20 0 R - /T (Comparing with the Knapsack Problem) - /K [13 14] - /Pg 168 0 R + /S /P + /P 19 0 R + /K [6 7 40 0 R 15 39 0 R 22] + /Pg 161 0 R >> endobj 39 0 obj << /Type /StructElem - /S /Figure - /P 20 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [12] - /Pg 168 0 R + /S /Formula + /P 38 0 R + /K [16 17 18 19 20 21] + /Pg 161 0 R >> endobj 40 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [4 5 6 7 8 9 10 11] - /Pg 168 0 R + /S /Formula + /P 38 0 R + /K [8 9 10 11 12 13 14] + /Pg 161 0 R >> endobj @@ -408,10 +414,10 @@ endobj << /Type /StructElem /S /H2 - /P 20 0 R + /P 19 0 R /T (Elitism) - /K [3] - /Pg 168 0 R + /K [5] + /Pg 161 0 R >> endobj @@ -419,21 +425,9 @@ endobj << /Type /StructElem /S /P - /P 20 0 R - /K [75 76 77 78 79 << - /Type /MCR - /MCID 0 - /Pg 168 0 R - >> << - /Type /MCR - /MCID 1 - /Pg 168 0 R - >> << - /Type /MCR - /MCID 2 - /Pg 168 0 R - >>] - /Pg 166 0 R + /P 19 0 R + /K [3 4] + /Pg 161 0 R >> endobj @@ -441,13 +435,13 @@ endobj << /Type /StructElem /S /Figure - /P 20 0 R + /P 19 0 R /A [<< /O /Layout /Placement /Block >>] - /K [74] - /Pg 166 0 R + /K [2] + /Pg 161 0 R >> endobj @@ -455,9 +449,9 @@ endobj << /Type /StructElem /S /P - /P 20 0 R - /K [73] - /Pg 166 0 R + /P 19 0 R + /K [1] + /Pg 161 0 R >> endobj @@ -465,13 +459,13 @@ endobj << /Type /StructElem /S /Figure - /P 20 0 R + /P 19 0 R /A [<< /O /Layout /Placement /Block >>] - /K [72] - /Pg 166 0 R + /K [0] + /Pg 161 0 R >> endobj @@ -479,9 +473,9 @@ endobj << /Type /StructElem /S /P - /P 20 0 R - /K [67 68 69 70 71] - /Pg 166 0 R + /P 19 0 R + /K [110] + /Pg 159 0 R >> endobj @@ -489,50 +483,54 @@ endobj << /Type /StructElem /S /P - /P 20 0 R - /K [58 59 60 61 62 63 64 65 66] - /Pg 166 0 R + /P 19 0 R + /K [103 104 105 106 107 108 109] + /Pg 159 0 R >> endobj 48 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [44 45 46 47 48 49 50 51 52 53 54 55 56 57] - /Pg 166 0 R + /S /H2 + /P 19 0 R + /T (Crowding) + /K [102] + /Pg 159 0 R >> endobj 49 0 obj << /Type /StructElem - /S /H2 - /P 20 0 R - /T (Crowding) - /K [43] - /Pg 166 0 R + /S /P + /P 19 0 R + /K [99 100 101] + /Pg 159 0 R >> endobj 50 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [8 54 0 R 13 53 0 R 20 52 0 R 27 28 29 51 0 R 37 38 39 40 41 42] - /Pg 166 0 R + /S /Figure + /P 19 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [98] + /Pg 159 0 R >> endobj 51 0 obj << /Type /StructElem - /S /Formula - /P 50 0 R - /K [30 31 32 33 34 35 36] - /Pg 166 0 R + /S /P + /P 19 0 R + /K [69 70 55 0 R 75 54 0 R 82 53 0 R 89 52 0 R 97] + /Pg 159 0 R >> endobj @@ -540,9 +538,9 @@ endobj << /Type /StructElem /S /Formula - /P 50 0 R - /K [21 22 23 24 25 26] - /Pg 166 0 R + /P 51 0 R + /K [90 91 92 93 94 95 96] + /Pg 159 0 R >> endobj @@ -550,9 +548,9 @@ endobj << /Type /StructElem /S /Formula - /P 50 0 R - /K [14 15 16 17 18 19] - /Pg 166 0 R + /P 51 0 R + /K [83 84 85 86 87 88] + /Pg 159 0 R >> endobj @@ -560,33 +558,30 @@ endobj << /Type /StructElem /S /Formula - /P 50 0 R - /K [9 10 11 12] - /Pg 166 0 R + /P 51 0 R + /K [76 77 78 79 80 81] + /Pg 159 0 R >> endobj 55 0 obj << /Type /StructElem - /S /Figure - /P 20 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [7] - /Pg 166 0 R + /S /Formula + /P 51 0 R + /K [71 72 73 74] + /Pg 159 0 R >> endobj 56 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [0 1 2 3 4 5 6] - /Pg 166 0 R + /S /H2 + /P 19 0 R + /T (Best and Worst RMSE) + /K [68] + /Pg 159 0 R >> endobj @@ -594,65 +589,44 @@ endobj << /Type /StructElem /S /P - /P 20 0 R - /K [95] - /Pg 164 0 R + /P 19 0 R + /K [63 64 65 58 0 R 67] + /Pg 159 0 R >> endobj 58 0 obj << /Type /StructElem - /S /H2 - /P 20 0 R - /T (Best and Worst RMSE) - /K [94] - /Pg 164 0 R + /S /Link + /P 57 0 R + /K [66 << + /Type /OBJR + /Pg 159 0 R + /Obj 158 0 R + >>] + /Pg 159 0 R >> endobj 59 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [84 85 86 87 88 89 90 60 0 R 92 93] - /Pg 164 0 R + /S /Code + /P 19 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [61 0 R 60 0 R] >> endobj 60 0 obj -<< - /Type /StructElem - /S /Link - /P 59 0 R - /K [91 << - /Type /OBJR - /Pg 164 0 R - /Obj 163 0 R - >>] - /Pg 164 0 R ->> -endobj - -61 0 obj -<< - /Type /StructElem - /S /Code - /P 20 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [63 0 R 62 0 R] ->> -endobj - -62 0 obj << /Type /StructElem /S /Figure - /P 61 0 R + /P 59 0 R /A [<< /O /Layout /Placement /Block @@ -661,21 +635,44 @@ endobj >> endobj -63 0 obj +61 0 obj +<< + /Type /StructElem + /S /Div + /P 59 0 R + /K [80 0 R 77 0 R 75 0 R 72 0 R 70 0 R 67 0 R 65 0 R 62 0 R] +>> +endobj + +62 0 obj << /Type /StructElem /S /Div /P 61 0 R - /K [82 0 R 79 0 R 77 0 R 74 0 R 72 0 R 69 0 R 67 0 R 64 0 R] + /K [63 0 R] +>> +endobj + +63 0 obj +<< + /Type /StructElem + /S /Div + /P 62 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [64 0 R] >> endobj 64 0 obj << /Type /StructElem - /S /Div + /S /P /P 63 0 R - /K [65 0 R] + /K [61 62] + /Pg 159 0 R >> endobj @@ -683,11 +680,7 @@ endobj << /Type /StructElem /S /Div - /P 64 0 R - /A [<< - /O /Layout - /Placement /Block - >>] + /P 61 0 R /K [66 0 R] >> endobj @@ -695,10 +688,14 @@ endobj 66 0 obj << /Type /StructElem - /S /P + /S /Span /P 65 0 R - /K [82 83] - /Pg 164 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [60] + /Pg 159 0 R >> endobj @@ -706,7 +703,7 @@ endobj << /Type /StructElem /S /Div - /P 63 0 R + /P 61 0 R /K [68 0 R] >> endobj @@ -714,23 +711,23 @@ endobj 68 0 obj << /Type /StructElem - /S /Span + /S /Div /P 67 0 R /A [<< /O /Layout /Placement /Block >>] - /K [81] - /Pg 164 0 R + /K [69 0 R] >> endobj 69 0 obj << /Type /StructElem - /S /Div - /P 63 0 R - /K [70 0 R] + /S /P + /P 68 0 R + /K [59] + /Pg 159 0 R >> endobj @@ -738,11 +735,7 @@ endobj << /Type /StructElem /S /Div - /P 69 0 R - /A [<< - /O /Layout - /Placement /Block - >>] + /P 61 0 R /K [71 0 R] >> endobj @@ -750,10 +743,14 @@ endobj 71 0 obj << /Type /StructElem - /S /P + /S /Span /P 70 0 R - /K [80] - /Pg 164 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [58] + /Pg 159 0 R >> endobj @@ -761,7 +758,7 @@ endobj << /Type /StructElem /S /Div - /P 63 0 R + /P 61 0 R /K [73 0 R] >> endobj @@ -769,23 +766,23 @@ endobj 73 0 obj << /Type /StructElem - /S /Span + /S /Div /P 72 0 R /A [<< /O /Layout /Placement /Block >>] - /K [79] - /Pg 164 0 R + /K [74 0 R] >> endobj 74 0 obj << /Type /StructElem - /S /Div - /P 63 0 R - /K [75 0 R] + /S /P + /P 73 0 R + /K [56 57] + /Pg 159 0 R >> endobj @@ -793,11 +790,7 @@ endobj << /Type /StructElem /S /Div - /P 74 0 R - /A [<< - /O /Layout - /Placement /Block - >>] + /P 61 0 R /K [76 0 R] >> endobj @@ -805,10 +798,14 @@ endobj 76 0 obj << /Type /StructElem - /S /P + /S /Span /P 75 0 R - /K [77 78] - /Pg 164 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [55] + /Pg 159 0 R >> endobj @@ -816,7 +813,7 @@ endobj << /Type /StructElem /S /Div - /P 63 0 R + /P 61 0 R /K [78 0 R] >> endobj @@ -824,23 +821,23 @@ endobj 78 0 obj << /Type /StructElem - /S /Span + /S /Div /P 77 0 R /A [<< /O /Layout /Placement /Block >>] - /K [76] - /Pg 164 0 R + /K [79 0 R] >> endobj 79 0 obj << /Type /StructElem - /S /Div - /P 63 0 R - /K [80 0 R] + /S /P + /P 78 0 R + /K [54] + /Pg 159 0 R >> endobj @@ -848,11 +845,7 @@ endobj << /Type /StructElem /S /Div - /P 79 0 R - /A [<< - /O /Layout - /Placement /Block - >>] + /P 61 0 R /K [81 0 R] >> endobj @@ -860,233 +853,236 @@ endobj 81 0 obj << /Type /StructElem - /S /P + /S /Span /P 80 0 R - /K [75] - /Pg 164 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [53] + /Pg 159 0 R >> endobj 82 0 obj << /Type /StructElem - /S /Div - /P 63 0 R - /K [83 0 R] + /S /P + /P 19 0 R + /K [49 50 51 52] + /Pg 159 0 R >> endobj 83 0 obj << /Type /StructElem - /S /Span - /P 82 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [74] - /Pg 164 0 R + /S /H2 + /P 19 0 R + /T (Running the algorithm) + /K [48] + /Pg 159 0 R >> endobj 84 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [70 71 72 73] - /Pg 164 0 R + /S /H1 + /P 19 0 R + /T (Results & Reflection) + /K [47] + /Pg 159 0 R >> endobj 85 0 obj << /Type /StructElem - /S /H2 - /P 20 0 R - /T (Running the algorithm) - /K [69] - /Pg 164 0 R + /S /P + /P 19 0 R + /K [39 40 87 0 R 42 43 86 0 R 45 46] + /Pg 159 0 R >> endobj 86 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [68] - /Pg 164 0 R + /S /Link + /P 85 0 R + /K [44 << + /Type /OBJR + /Pg 159 0 R + /Obj 157 0 R + >>] + /Pg 159 0 R >> endobj 87 0 obj << /Type /StructElem - /S /H1 - /P 20 0 R - /T (Results & Reflection) - /K [67] - /Pg 164 0 R + /S /Link + /P 85 0 R + /K [41 << + /Type /OBJR + /Pg 159 0 R + /Obj 156 0 R + >>] + /Pg 159 0 R >> endobj 88 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [64 65 66] - /Pg 164 0 R + /S /L + /P 19 0 R + /A [<< + /O /List + /ListNumbering /Decimal + >>] + /K [95 0 R 92 0 R 89 0 R] >> endobj 89 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [48 49 50 51 52 53 54 55 91 0 R 57 58 59 60 90 0 R 62 63] - /Pg 164 0 R + /S /LI + /P 88 0 R + /K [91 0 R 90 0 R] >> endobj 90 0 obj << /Type /StructElem - /S /Link + /S /LBody /P 89 0 R - /K [61 << - /Type /OBJR - /Pg 164 0 R - /Obj 162 0 R - >>] - /Pg 164 0 R + /K [38] + /Pg 159 0 R >> endobj 91 0 obj << /Type /StructElem - /S /Link + /S /Lbl /P 89 0 R - /K [56 << - /Type /OBJR - /Pg 164 0 R - /Obj 161 0 R - >>] - /Pg 164 0 R + /K [37] + /Pg 159 0 R >> endobj 92 0 obj << /Type /StructElem - /S /L - /P 20 0 R - /A [<< - /O /List - /ListNumbering /Decimal - >>] - /K [99 0 R 96 0 R 93 0 R] + /S /LI + /P 88 0 R + /K [94 0 R 93 0 R] >> endobj 93 0 obj << /Type /StructElem - /S /LI + /S /LBody /P 92 0 R - /K [95 0 R 94 0 R] + /K [36] + /Pg 159 0 R >> endobj 94 0 obj << /Type /StructElem - /S /LBody - /P 93 0 R - /K [47] - /Pg 164 0 R + /S /Lbl + /P 92 0 R + /K [35] + /Pg 159 0 R >> endobj 95 0 obj << /Type /StructElem - /S /Lbl - /P 93 0 R - /K [46] - /Pg 164 0 R + /S /LI + /P 88 0 R + /K [97 0 R 96 0 R] >> endobj 96 0 obj << /Type /StructElem - /S /LI - /P 92 0 R - /K [98 0 R 97 0 R] + /S /LBody + /P 95 0 R + /K [34] + /Pg 159 0 R >> endobj 97 0 obj << /Type /StructElem - /S /LBody - /P 96 0 R - /K [44 45] - /Pg 164 0 R + /S /Lbl + /P 95 0 R + /K [33] + /Pg 159 0 R >> endobj 98 0 obj << /Type /StructElem - /S /Lbl - /P 96 0 R - /K [43] - /Pg 164 0 R + /S /P + /P 19 0 R + /K [25 26 27 28 29 30 31 32] + /Pg 159 0 R >> endobj 99 0 obj << /Type /StructElem - /S /LI - /P 92 0 R - /K [101 0 R 100 0 R] + /S /P + /P 19 0 R + /K [17 18 19 20 21 22 23 24] + /Pg 159 0 R >> endobj 100 0 obj << /Type /StructElem - /S /LBody - /P 99 0 R - /K [42] - /Pg 164 0 R + /S /H1 + /P 19 0 R + /T (Background & Setup) + /K [16] + /Pg 159 0 R >> endobj 101 0 obj << /Type /StructElem - /S /Lbl - /P 99 0 R - /K [41] - /Pg 164 0 R + /S /P + /P 19 0 R + /K [7 8 9 10 11 12 13 14 15] + /Pg 159 0 R >> endobj 102 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [33 34 35 36 37 38 39 40] - /Pg 164 0 R + /S /H1 + /P 19 0 R + /T (Introduction) + /K [6] + /Pg 159 0 R >> endobj @@ -1094,20 +1090,23 @@ endobj << /Type /StructElem /S /P - /P 20 0 R - /K [22 23 24 25 26 27 28 29 30 31 32] - /Pg 164 0 R + /P 19 0 R + /K [4 104 0 R] + /Pg 159 0 R >> endobj 104 0 obj << /Type /StructElem - /S /H1 - /P 20 0 R - /T (Background & Setup) - /K [21] - /Pg 164 0 R + /S /Link + /P 103 0 R + /K [5 << + /Type /OBJR + /Pg 159 0 R + /Obj 155 0 R + >>] + /Pg 159 0 R >> endobj @@ -1115,109 +1114,64 @@ endobj << /Type /StructElem /S /P - /P 20 0 R - /K [7 8 9 10 11 12 13 14 15 16 17 18 19 20] - /Pg 164 0 R + /P 19 0 R + /K [106 0 R] >> endobj 106 0 obj << /Type /StructElem - /S /H1 - /P 20 0 R - /T (Introduction) - /K [6] - /Pg 164 0 R + /S /Strong + /P 105 0 R + /K [3] + /Pg 159 0 R >> endobj 107 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [4 108 0 R] - /Pg 164 0 R + /S /Div + /P 19 0 R + /K [108 0 R] >> endobj 108 0 obj << /Type /StructElem - /S /Link + /S /Div /P 107 0 R - /K [5 << - /Type /OBJR - /Pg 164 0 R - /Obj 160 0 R - >>] - /Pg 164 0 R + /K [109 0 R] >> endobj 109 0 obj << /Type /StructElem - /S /P - /P 20 0 R - /K [110 0 R] + /S /Span + /P 108 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [2] + /Pg 159 0 R >> endobj 110 0 obj << /Type /StructElem - /S /Strong - /P 109 0 R - /K [3] - /Pg 164 0 R + /S /P + /P 19 0 R + /K [0 1] + /Pg 159 0 R >> endobj 111 0 obj -<< - /Type /StructElem - /S /Div - /P 20 0 R - /K [112 0 R] ->> -endobj - -112 0 obj -<< - /Type /StructElem - /S /Div - /P 111 0 R - /K [113 0 R] ->> -endobj - -113 0 obj -<< - /Type /StructElem - /S /Span - /P 112 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [2] - /Pg 164 0 R ->> -endobj - -114 0 obj -<< - /Type /StructElem - /S /P - /P 20 0 R - /K [0 1] - /Pg 164 0 R ->> -endobj - -115 0 obj << /Type /PageLabel /S /D @@ -1225,7 +1179,7 @@ endobj >> endobj -116 0 obj +112 0 obj << /Type /PageLabel /S /D @@ -1233,7 +1187,7 @@ endobj >> endobj -117 0 obj +113 0 obj << /Type /PageLabel /S /D @@ -1241,26 +1195,18 @@ endobj >> endobj -118 0 obj -<< - /Type /PageLabel - /S /D - /St 4 ->> -endobj - -119 0 obj +114 0 obj << /Type /Font /Subtype /Type0 /BaseFont /OWSSNK+NewCM10-Bold-Identity-H /Encoding /Identity-H - /DescendantFonts [120 0 R] - /ToUnicode 123 0 R + /DescendantFonts [115 0 R] + /ToUnicode 118 0 R >> endobj -120 0 obj +115 0 obj << /Type /Font /Subtype /CIDFontType0 @@ -1270,13 +1216,13 @@ endobj /Ordering (Identity) /Supplement 0 >> - /FontDescriptor 122 0 R + /FontDescriptor 117 0 R /DW 0 /W [0 0 280 1 1 869 2 2 454 3 3 319 4 4 575 5 5 639 6 6 958 7 7 527 8 8 447 9 9 383 10 11 575 12 12 863 13 13 639 14 14 575 15 15 474 16 16 436 17 17 800 18 21 575 22 22 818 23 23 383 24 25 639 26 26 510.99997 27 27 559 28 28 319 29 29 724 30 31 639 32 32 607 33 33 575 34 34 319 35 36 575 37 37 607 38 38 894 39 41 639 42 42 1189 43 43 1092 44 44 756 45 46 831 47 47 901 48 48 786 49 49 351] >> endobj -121 0 obj +116 0 obj << /Length 13 /Filter /FlateDecode @@ -1286,7 +1232,7 @@ x endstream endobj -122 0 obj +117 0 obj << /Type /FontDescriptor /FontName /OWSSNK+NewCM10-Bold @@ -1297,12 +1243,12 @@ endobj /Descent -194 /CapHeight 686 /StemV 168.6 - /CIDSet 121 0 R - /FontFile3 124 0 R + /CIDSet 116 0 R + /FontFile3 119 0 R >> endobj -123 0 obj +118 0 obj << /Length 1304 /Type /CMap @@ -1391,7 +1337,7 @@ end endstream endobj -124 0 obj +119 0 obj << /Length 5163 /Filter /FlateDecode @@ -1437,34 +1383,34 @@ K endstream endobj -125 0 obj +120 0 obj << /Type /Font /Subtype /Type0 - /BaseFont /YINQDR+NewCM10-Regular-Identity-H + /BaseFont /HQUZMG+NewCM10-Regular-Identity-H /Encoding /Identity-H - /DescendantFonts [126 0 R] - /ToUnicode 129 0 R + /DescendantFonts [121 0 R] + /ToUnicode 124 0 R >> endobj -126 0 obj +121 0 obj << /Type /Font /Subtype /CIDFontType0 - /BaseFont /YINQDR+NewCM10-Regular + /BaseFont /HQUZMG+NewCM10-Regular /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> - /FontDescriptor 128 0 R + /FontDescriptor 123 0 R /DW 0 - /W [0 0 500 1 1 653 2 2 392 3 3 444 4 4 556 5 5 278 6 6 528 7 7 333 8 8 736 9 9 500 10 10 556 11 11 389 12 12 394 13 15 556 16 16 444 17 17 500 18 18 528 19 19 278 20 20 389 21 21 778 22 22 556 23 23 389 24 24 278 25 25 556 26 27 500 28 28 278 29 29 306 30 30 333 31 31 361 32 32 722 33 36 500 37 37 833 38 38 528 39 39 722 40 41 528 42 42 750 43 43 681 44 44 1028 45 45 278 46 47 556 48 48 444 49 49 278 50 50 785 51 51 500 52 52 278 53 53 500 54 54 583 55 55 778 56 57 750 58 58 686 59 59 278 60 60 833 61 62 278 63 63 917 64 64 681 65 66 500 67 67 625 68 68 750 69 70 500 71 71 750 72 74 472 75 75 778 76 76 611] + /W [0 0 500 1 1 653 2 2 392 3 3 444 4 4 556 5 5 278 6 6 528 7 7 333 8 8 736 9 9 500 10 10 556 11 11 389 12 12 394 13 15 556 16 16 444 17 17 500 18 18 528 19 20 278 21 22 556 23 24 500 25 25 278 26 26 306 27 27 333 28 28 361 29 29 722 30 33 500 34 34 528 35 35 833 36 36 750 37 37 681 38 38 278 39 39 528 40 40 785 41 41 722 42 42 556 43 43 444 44 44 1028 45 45 500 46 46 389 47 47 278 48 48 500 49 49 583 50 50 778 51 51 750 52 52 833 53 53 556 54 56 278 57 57 708 58 58 917 59 59 681 60 60 389 61 63 500 64 64 750 65 65 722 66 66 764 67 68 500 69 69 528 70 70 472 71 71 750 72 73 472 74 74 778 75 75 611 76 76 625] >> endobj -127 0 obj +122 0 obj << /Length 13 /Filter /FlateDecode @@ -1475,10 +1421,10 @@ x endstream endobj -128 0 obj +123 0 obj << /Type /FontDescriptor - /FontName /YINQDR+NewCM10-Regular + /FontName /HQUZMG+NewCM10-Regular /Flags 131076 /FontBBox [11 -250 1008.99994 750] /ItalicAngle 0 @@ -1486,14 +1432,14 @@ endobj /Descent -194 /CapHeight 683 /StemV 95.4 - /CIDSet 127 0 R - /FontFile3 130 0 R + /CIDSet 122 0 R + /FontFile3 125 0 R >> endobj -129 0 obj +124 0 obj << - /Length 1686 + /Length 1682 /Type /CMap /WMode 0 >> @@ -1540,63 +1486,63 @@ endcodespacerange <0011> <0061> <0012> <0076> <0013> <006C> -<0014> <0028> -<0015> <0026> +<0014> <003A> +<0015> <0068> <0016> <0070> -<0017> <0029> -<0018> <003A> -<0019> <0068> -<001A> <002F> -<001B> <0067> -<001C> <002E> -<001D> <0066> -<001E> <002D> -<001F> <0049> -<0020> <0054> -<0021> <0033> -<0022> <0037> -<0023> <0030> -<0024> <0038> -<0025> <006D> -<0026> <0071> -<0027> <0077> -<0028> <0079> -<0029> <0078> -<002A> <004E> -<002B> <0050> +<0017> <002F> +<0018> <0067> +<0019> <002E> +<001A> <0066> +<001B> <002D> +<001C> <0049> +<001D> <0054> +<001E> <0033> +<001F> <0037> +<0020> <0030> +<0021> <0038> +<0022> <0079> +<0023> <006D> +<0024> <004E> +<0025> <0050> +<0026> <002C> +<0027> <0078> +<0028> <0047> +<0029> <0077> +<002A> <00660069> +<002B> <007A> <002C> <0057> -<002D> <002C> -<002E> <0066006C> -<002F> <00660069> -<0030> <007A> -<0031> <2019> -<0032> <0047> -<0033> <0031> -<0034> <003B> -<0035> <0032> -<0036> <00660066> -<0037> <004F> -<0038> <0055> -<0039> <0041> -<003A> <00660074> -<003B> <0021> -<003C> <0025> -<003D> <005B> -<003E> <005D> -<003F> <004D> -<0040> <0045> -<0041> <0039> -<0042> <0035> -<0043> <004C> -<0044> <0048> -<0045> <0034> -<0046> <0036> -<0047> <0059> -<0048> <201C> -<0049> <201D> -<004A> <003F> -<004B> <003D> -<004C> <005A> +<002D> <0031> +<002E> <0029> +<002F> <003B> +<0030> <0032> +<0031> <00660066> +<0032> <004F> +<0033> <0055> +<0034> <0025> +<0035> <0066006C> +<0036> <2019> +<0037> <005B> +<0038> <005D> +<0039> <0042> +<003A> <004D> +<003B> <0045> +<003C> <0028> +<003D> <00A0> +<003E> <0039> +<003F> <0035> +<0040> <0041> +<0041> <0043> +<0042> <0044> +<0043> <0034> +<0044> <0036> +<0045> <0071> +<0046> <201C> +<0047> <0048> +<0048> <201D> +<0049> <003F> +<004A> <003D> +<004B> <005A> +<004C> <004C> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -1607,62 +1553,57 @@ end endstream endobj -130 0 obj +125 0 obj << - /Length 7624 + /Length 7462 /Filter /FlateDecode /Subtype /CIDFontType0C >> stream -xZwXf]f糭8,$j%h%ؐ"Ez/"e{]XDcK赤3Mrs| ߜL&-|cF.wq^'&4@&tQt~`{go[ e 3?bZuLP]nv 9t0qcN9n̸ ~!~[Wn <~`p o-An>nnC6هx_b<E[\Gvs :ztH( ~!}:77r%+G.Z8{sGDػov q<Ʀ}I۷}jf_NI!t]ߣkznУͤ7 }У&c!h4),@o5VbgzºȻlw3o}R S|˾uqQw}QS=؞L==M=Vuo}Εfk~B^z%gJW.:K:\xUhViTcthP ip C^òÇp?i2DqK ŲUD/a;w 2`3 &1Բ+Rz}uƫMpDb# N[oX0ܰZC{(p8WR(i6#Mv[%_S$N ]*50f&S2Q A `aCJN -GЇw2V ĿlI(6֨YmF2eUa|\C)!c!ւ뎐߃ -k&#=\dڇpdQ% -O8y'G*(I-#>v;۰s*܄C*~aB:7a*W <~ -yط\CLm!R[ 1 2xW`4At2qW1m# -)I>({loS[93B?]֨Ip' 4T:K٩#+![w;K*%l /Z[6)ȺC(|FgHJ#^:yHLODO zÖѱ JBO&~2hAda -2yD 6Fu)DI/*o@-xWɕOA K up$s&eS( zNIq"km.5H $FVH@/)1P\y ?LEtUK5Dv n,ѧ>ȫt̂ N jEɁ/BIƈ'\տ\:~\Ϊ.F9*TĹ"ψ8JvqyKxqIIؙNNwk@Z\%oK8r4YWr~u{*l/"sΞ$ՇӞ@j:zCF1Er`W`VEcEg{vp{i;aY_3\SUЎSt#㰷,vV f6\sYx$hFd=8'hnQe9]V 1$8h'3ߥ}FSڛ}8 Z=ڴU»Mv5We3#`i^B34z4ln\[Ȕyn*.TAnRFC95@LW*ӏqKa>jn)DI{fIEY-Ҥ!ȆBL0Ӡ OINVi&FL@|s!8"mHʃ32?'>K-DCr6o1I$Pg@>f ~diDI]q}v8 +WsZE5pؤqv!U;:Ca̛&9,f[xOtWruG>Z] @8A;5LHF&m o.^i@`ԩK -%*: -~rخ)0:3j7xBvtWY;yGZؿaRB[pw[J}'p3$Cދop]=NF T+oPɑ1DB -÷WVJz`q)/cdoiڜzTs S; `3LO#d;V=M6b`45e%aZ՛1f};HjAf`qbA-P )eɠb`@ Gd~xMZ" LP -ũ9PxӉDZu )n?5pevi#Ƣnl?)\#ܓ㏿ƌ3Lb&Zpo(t -bSn]EK$B.QqDE^ōhy~TN0T]h]>/;zӘoL@{?0֕pι/"_i*!%/u1c,:~+P[:K_*xā/[8GƏ2{kɲV2 5l5af\r<\O:R2{^txfmgC@e{vɹ<̄XspNyh戲wp(Nys(" rb\Cwm sgo^ԓי;wB9skf ewfg8Ys{Mg"EL^bܡc#Evq3d^ #|Vw0‹r1 D(6r9J ho Q} -M{LՄSc|:ޑ1ZrYiכ'V)/gI2@;Wt0?](QV&U3Eh %)YCI loRZ:yTdǤir|3"D4K$k,>Meڎ\m7A;mL2.CzZ>  L󚱃uůb^J&M]Mn + -AKI%oPINITR%= Ȃ>`BW{w% B XL4A!( ul8,'Αf0 լ' iD\Ii~"} -" !Մ̎]UTMjC`.|a!ƪ6pe)1Qq1Ixl0@:d "2a} -z݁! K!e>H VD}%1 5&Ak|F|TE&CnG -Q)Uvv{DUKZm62> -\>}קZQ]Vb)a`kv5bW)*MKR5Daydu@!D%bÁGDU:e#\V?  ;>] ֛ՎxbGՐ~E,Wt(w8S)^01H튟s>Ѵ"B[_c]DF!tŅNb]jJ:'RY|pB' r=i.UYDI茺 0x{Np1  yHi8ՒWɸBؓVIg2\h&=>32 0(^(l4%6h4:$ĴkאbUDVA00ɠ']@ d&!r#@+Ok4^(|sۜۡ*>>9*!2s[:ӳ=l fIV%uKR>HOmĪR&+ RAM'IAKO&^ )D3D6¶./t'AVV~!ZD(-IIi -i99`4|L4z -J*b(.ʎ?޾#o$k++ FS5UԖruuxopol)} | `,Sa\ ɐK:05 Bз8LqUzSy]sdAf -gi%Rx>\˥IDov6A%d+",~_<Ҍz29 ;$&X$:A W\y$_DZ Eo⦸m !]18Gש2ǭ8 ƢܦJO N=3vń^`" -ΐO3١ZovދܹB6%%5H 25濦 XvC9x`߿9Pj>Jn5XBY "@pHyto=: uQt -|FE_c.ImX0!BU~: - -ӳBz#T 2*iPy۽Ew9x}O|p0|=`1{*YcBO6SᎬӛN}kɜoT([|Y5VzXwƤX5:՚B!q1)vam[f'UT&&YCZFA&m2s꾎dlBO S]HН~t 9s6Q -WLÙS5VBMgv BHFRjz mi㞺zpQ \[}NGn ѐ މ-&}ݬ'ݨsax{/{mHi1 -FmOR]nshAl9Y ( 礆"## K# <*X@*Ҳzh&ޒ+qnV#_т{Et@JVQP*ڶ4 o:U| vJe%\:|""F@d^09 Rpbo2;@p,X^P&Q :H [ӠLP +xZw\f]fVeEc{7īMK^V@컻^A,(vc%QcK$ыby4ɽ/}vΙ33ϼ>{Vfckk#ɺ/p >aK\>Nc>EʄN6*.l>}l+66ݬA=ؼxѥ._Kk#JaM~a=raGkd,33h2 @o{ @WW MjM/]f?/~_aAFVt4§}Ryf-\lؼg.X:sxph&`'O66ld6H-}yY~)fv)]:Ab'h0 Fc.:[jM)ɔܥFfccc3 +aO +Y_IVDz̷^MlKyrF~=]/݊AOJ@Xip'Ξ:?tY\W׮yu{v.=^\]Ʋ7T;bҽ휷mOZ_7e UUy&?wf@4AЀ Үp^Z$^ăivihw,\GuAR`5b=Q7!GQe{A^,d(dWP) 㣽0E iLeif(1lm^z>4pH;0%Ҁs9-n40GTP{uD:$fVp8 |T +F0u(LKVJI4-ifYy4ʥ1ؙψ5 1M0 +a5=PMRa6AhJF =[FP^yHAZvyAޤRט5IOMՄTKdgƦV <WX)p *T.K%rS0Hl%ߵԎ˂vo՝Z18P,yndnD#V f:=IMHޣIpF.kרw;*Jܥ'ܛˤ'2_;]Evm[7[YW{&)Ⱥ\lFoO$]9vH@DO 34 !QqJO~g2vЁv"+*TWڨ-Se|tUt0;FP$/8GFclW2yDΚ<~?rb>oSy}N dsAHyYQϧ1磁HJ!(5"=d.ZH)?]x%Hp uǽfӞykLnoֲ2d\o^u8SFUyS=WFi&=Qp^/λutCRo1b5q_GV NCWWݨj}[2Bҙ_!Ƚhיp- +( bGWrʨ4lm!ria" !ZMGB<hc2!2Lx>IΆd%􁒼;|_k8V#IMBl:9jv:0f͂FeK0/lW1dVoGp!-C%vu"*_Q@ 8B;i%E{ku@t +jkKwU'II@ٚ'd jC{[`lT x %Pk!MZVI^>ڙ_>cf9&5MSmqkcuJSOmYȱ_sV( zWiG$/ r"!l-*.<-9VB4-X*imdاY{ُt*6eD#pMxO{quVvU: +` eLk4giVPrw(2H,N R" .>ZpSх9ESiC +#Ju$8;=9g>r-zíy)eAƜޔS̡balÍ@ԞPRAT}z8!hR!_دU3{3o{|Z/a7( 8(Py*~tZe gܗKa-o4AAPH:[1奟JM@-͌o{QKap C8 ӉI%9#6.aҳD6ii´&Wy?Ms0mpYC4vʾIWC9_RuA&d0fk>6t,a?i}.@cBUNh +<+-,5ȥ՚uQh$G$7ԭˌ l]7n) $~+2?6&yXiBBdHź+W/.ԕM?$ 6)|D߂Y(~xMRy[!Q=r43 IDjߓ!([e2YC0Iif#ey!H u y=Uz i +Sv!sCK=p[eq!sß7G+wIxRribűŞvюVºNϤ<&&KoBSȅ"}DgC(i-d`MzP]%}HC[0Q}*H-TIPTPV|{AfzKrJZӾ}J돖×vWVΊ,vAoZԆ8/*`Ь1oU- _u ؼ9?Zȅ G 6jzH q Y7n + D,^"-Za +BBf݇Kzk9W|a1ZrʼniёZ2'LL!rsӋ -` `/$(Ϭ[떬](q (ʀh6eC.+v|>-l N^o=D}"FһSfyK[߽RǸn">]M Km)1]SG(yF *#@$L*n Qd]@ tN 1Dun4[%H:p')EA޲D?pkHVaZH$#i@dFH&@;:]yLP2"&*IfSmey1X!5$'X3a4Lm&#~4URCwkŽtvBFs. +vNC8*,,):**_Ӿ܄?{ G󃩑*Z9}N//ͱyש/^bcdN`zeRG..1ӖXMԅIl%;z4t kTlh ID* +ؤPJ[bX-<V=׶"B;[L_&j LJ>)1ɎP&n6J ܄SP YˍcΆ0&e(%֔=MҷL}{(Aj !2 R.%zt5*4[ +`a'cJ"\]5J* VkhC4yrC5u2 ۸ѠЂ fir6FYvB6?YZgu!֦=F 1E(K=aܪx<%겖 ~n|*oq<:!ΦXLp8ccp0 C[>o̠ZΉm'6?OȝtLjK1Kp:ɂK[m̼&Z+Lml{~H Qa*tK*<8oh21۝ +}O} +T}BUJ+'hźԝ*,E죺sTJ,~i81?zeᬅh{$Ɋ0B[P_cA0:/ SZR&A}KW@敋1}֭ jt͈o8~k,8b[1TT g*>|5N3Xq/8 /ˣ*bٙI_*N[ǃ [iŀi {d[ RLZQQ=UII&H%J%-pGYv[wǤxG3e?-,5a7;T=>m,֕&,|gba+,7"*Š\uo̦9ǝS!Jު pX>jq/ް; +N YI`4j34)Įі!.-)pU ܶwI.|%R#r`ڋxeg t:Œ;_ȴbM_ެB3%.}aƩf\ʗm.@DVOL$@T~q\Vẍ́) + 6ޜqWm8&#Hz#o\S=K"J@ Bέ̆Ms𰰰#`6+ *2oyMylf5PZRDBHH!䪤P+lBab[XJIcS.韢dKTRU0:қs&5 J".M[+9 8 +Z{R&Nz%[X 1$DO,Xm.J72ڃ2QlW.Q)*u#6䗁]w*P(|wQ endstream endobj -131 0 obj +126 0 obj << /Type /Font /Subtype /Type0 /BaseFont /XBBGFH+DejaVuSansMono /Encoding /Identity-H - /DescendantFonts [132 0 R] - /ToUnicode 135 0 R + /DescendantFonts [127 0 R] + /ToUnicode 130 0 R >> endobj -132 0 obj +127 0 obj << /Type /Font /Subtype /CIDFontType2 @@ -1672,14 +1613,14 @@ endobj /Ordering (Identity) /Supplement 0 >> - /FontDescriptor 134 0 R + /FontDescriptor 129 0 R /DW 0 /CIDToGIDMap /Identity /W [0 32 602.0508] >> endobj -133 0 obj +128 0 obj << /Length 13 /Filter /FlateDecode @@ -1689,7 +1630,7 @@ x endstream endobj -134 0 obj +129 0 obj << /Type /FontDescriptor /FontName /XBBGFH+DejaVuSansMono @@ -1700,12 +1641,12 @@ endobj /Descent -240.23438 /CapHeight 759.7656 /StemV 95.4 - /CIDSet 133 0 R - /FontFile2 136 0 R + /CIDSet 128 0 R + /FontFile2 131 0 R >> endobj -135 0 obj +130 0 obj << /Length 1054 /Type /CMap @@ -1777,7 +1718,7 @@ end endstream endobj -136 0 obj +131 0 obj << /Length 8071 /Filter /FlateDecode @@ -1816,47 +1757,47 @@ J endstream endobj -137 0 obj +132 0 obj << /Type /Font /Subtype /Type0 - /BaseFont /PMXRBP+NewCMMath-Regular-Identity-H + /BaseFont /OJZLZX+NewCMMath-Regular-Identity-H /Encoding /Identity-H - /DescendantFonts [138 0 R] - /ToUnicode 141 0 R + /DescendantFonts [133 0 R] + /ToUnicode 136 0 R >> endobj -138 0 obj +133 0 obj << /Type /Font /Subtype /CIDFontType0 - /BaseFont /PMXRBP+NewCMMath-Regular + /BaseFont /OJZLZX+NewCMMath-Regular /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> - /FontDescriptor 140 0 R + /FontDescriptor 135 0 R /DW 0 - /W [0 0 280 1 1 521 2 2 778 3 4 500 5 5 603 6 6 642 7 7 819 8 8 278 9 9 500 10 10 1089] + /W [0 0 280 1 1 521 2 2 778 3 4 500 5 5 603 6 6 642 7 7 819 8 8 278 9 9 500 10 10 1089 11 12 500] >> endobj -139 0 obj +134 0 obj << /Length 10 /Filter /FlateDecode >> stream -x +x endstream endobj -140 0 obj +135 0 obj << /Type /FontDescriptor - /FontName /PMXRBP+NewCMMath-Regular + /FontName /OJZLZX+NewCMMath-Regular /Flags 131076 /FontBBox [30 -216 1140 703] /ItalicAngle 0 @@ -1864,14 +1805,14 @@ endobj /Descent -194 /CapHeight 683 /StemV 95.4 - /CIDSet 139 0 R - /FontFile3 142 0 R + /CIDSet 134 0 R + /FontFile3 137 0 R >> endobj -141 0 obj +136 0 obj << - /Length 766 + /Length 794 /Type /CMap /WMode 0 >> @@ -1898,7 +1839,7 @@ end def 1 begincodespacerange <0000> endcodespacerange -10 beginbfchar +12 beginbfchar <0001> <0002> <003D> <0003> <0031> @@ -1909,6 +1850,8 @@ endcodespacerange <0008> <002E> <0009> <0037> <000A> +<000B> <0032> +<000C> <0038> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -1919,32 +1862,37 @@ end endstream endobj -142 0 obj +137 0 obj << - /Length 1627 + /Length 1891 /Filter /FlateDecode /Subtype /CIDFontType0C >> stream -xukL[ϩ}̿8tۡJFs-DiJX/J؀ >8l W0c KXnki锬2%ԨPM?֡d<}^=ҏeRe̽:s=|M]uc]yCj[" W ٬*QOUߓYY+Zfvʔ0?,I /mF²2ZcnVgecMs 7h^7Fޤ)5GޔI/ћ4fcCFo4t&Vh4|NK5%F٭L:MnƤijx~K~>Xglί2xS~ӌ)?[ooio=Fk /יeMl ԀLҥFAy:Pr|||aa2RW{O -Z60RLe2 -)Cͬy[RUwEhVͤ3Jo\yxh|! TOxx^5-nU~a!>vfq-N !P0]{c:vgYtY]VذNdlv|S=v8Bw a`?'G;h} <#.On=] + tR5Q+s4oMVa{ȦI&6[V'ep(VoIMIav򺙥%BњڴgxV-\I˫ jA҆.徴j@U['=<Ni%3h=GzKwknhs9aъڒΗ -,૑N 䥈amW),lW >u|޽0D39-C{U& --&Y&}^zsÈE=M&(z}ў91jF'⾣8w{]Nc rn#=s`sN"9l"^?4G/8%\OP٬<1:?50]btn.NJBBK$k°:Aw -:atZ6}T.]ws1\# ]Q h2bP7 kG_Gs*UŕК~l_!q=c\h;Hvr}ZAgI_eݦeo#_쑃KJ!ZXDWtz?Fpu:mb)W`=OA ]̛K/~ JED)@kQw#{G -Ld0MDIgE%f p[\8x#Fv{Q@ ̌@h񂙑h.?1IhQLw%M!za0Dwӡ+7/=Ixy8hLmYK*U9d}j1Jf o3 +pl{A4]>fAF ,*mFqdyp"3b QJ?t7Wрk~ogN{@!m0ò 9BSFod?D&dHr$ҽwųbҭa9w) NVnoQRӎ/qL7eEŢA`0h%PxNHxޖbvζKcV+H)ʮ]'3oςێ'{7ȣi\"78\}$ؼdQ֕{2\3-gzz"'2 endstream endobj -143 0 obj -[/ICCBased 145 0 R] +138 0 obj +[/ICCBased 140 0 R] endobj -144 0 obj -[/ICCBased 146 0 R] +139 0 obj +[/ICCBased 141 0 R] endobj -145 0 obj +140 0 obj << /Length 258 /N 1 @@ -1959,7 +1907,7 @@ F endstream endobj -146 0 obj +141 0 obj << /Length 314 /N 3 @@ -1973,59 +1921,59 @@ x endstream endobj +142 0 obj +[159 0 R /XYZ 70.86614 632.3463 0] +endobj + +143 0 obj +[159 0 R /XYZ 70.86614 498.2409 0] +endobj + +144 0 obj +[159 0 R /XYZ 70.86614 149.67511 0] +endobj + +145 0 obj +[159 0 R /XYZ 306.70865 537.75867 0] +endobj + +146 0 obj +[159 0 R /XYZ 306.70865 186.83466 0] +endobj + 147 0 obj -[164 0 R /XYZ 70.86614 632.3463 0] +[161 0 R /XYZ 70.86614 260.49304 0] endobj 148 0 obj -[164 0 R /XYZ 70.86614 424.9259 0] +[161 0 R /XYZ 306.70865 547.48285 0] endobj 149 0 obj -[164 0 R /XYZ 306.70865 402.1229 0] +[159 0 R /XYZ 70.86614 176.07947 0] endobj 150 0 obj -[164 0 R /XYZ 306.70865 110.23706 0] +[166 0 R /XYZ 70.86614 543.5228 0] endobj 151 0 obj -[166 0 R /XYZ 70.86614 315.43787 0] +[166 0 R /XYZ 70.86614 482.73245 0] endobj 152 0 obj -[168 0 R /XYZ 70.86614 743.0076 0] +[166 0 R /XYZ 70.86614 392.61603 0] endobj 153 0 obj -[168 0 R /XYZ 70.86614 383.47064 0] +[166 0 R /XYZ 70.86614 373.80164 0] endobj 154 0 obj -[164 0 R /XYZ 306.70865 444.29028 0] +[159 0 R /XYZ 465.08667 553.59863 0] endobj 155 0 obj -[168 0 R /XYZ 306.70865 458.10785 0] -endobj - -156 0 obj -[168 0 R /XYZ 306.70865 324.00244 0] -endobj - -157 0 obj -[173 0 R /XYZ 70.86614 781.0236 0] -endobj - -158 0 obj -[173 0 R /XYZ 70.86614 762.2092 0] -endobj - -159 0 obj -[164 0 R /XYZ 485.88437 140.74005 0] -endobj - -160 0 obj << /Type /Annot /Subtype /Link @@ -2042,11 +1990,11 @@ endobj >> endobj -161 0 obj +156 0 obj << /Type /Annot /Subtype /Link - /Rect [448.6168 544.54333 472.46478 559.2063] + /Rect [211.17923 211.6305 235.02724 226.29352] /Border [0 0 0] /A << /Type /Action @@ -2059,11 +2007,11 @@ endobj >> endobj -162 0 obj +157 0 obj << /Type /Annot /Subtype /Link - /Rect [501.48544 515.2173 524.4094 529.8803] + /Rect [265.64294 196.96747 288.56693 211.6305] /Border [0 0 0] /A << /Type /Action @@ -2076,192 +2024,157 @@ endobj >> endobj -163 0 obj +158 0 obj << /Type /Annot /Subtype /Link - /Rect [485.88437 127.1651 497.50037 141.82806] + /Rect [465.08667 540.0237 476.70267 554.68665] /Border [0 0 0] - /Dest 158 0 R + /Dest 153 0 R /F 4 /StructParent 3 /Contents ([1]) >> endobj -164 0 obj +159 0 obj << /Type /Page /Resources << /ProcSet [/PDF /Text /ImageC /ImageB] /ColorSpace << - /c0 143 0 R - /c1 144 0 R + /c0 138 0 R + /c1 139 0 R + >> + /XObject << + /x0 169 0 R >> /Font << - /f0 119 0 R - /f1 125 0 R - /f2 131 0 R + /f0 114 0 R + /f1 120 0 R + /f2 126 0 R + /f3 132 0 R >> >> /MediaBox [0 0 595.2756 841.8898] /StructParents 4 /Tabs /S /Parent 1 0 R - /Contents 165 0 R - /Annots [160 0 R 161 0 R 162 0 R 163 0 R] + /Contents 160 0 R + /Annots [155 0 R 156 0 R 157 0 R 158 0 R] >> endobj -165 0 obj +160 0 obj << - /Length 5199 + /Length 4493 /Filter /FlateDecode >> stream -x]ݏ$q¬m[[D $ eĸ`nsc)۳cX,tY/;;="Y,~U$^c]}?E߼^ z2Cw uc}'$zA>?t|!Ч?iO7~MUL1_H|;enۙ#yۛ?}{WfXd,齑u<4xEJ#"5H,Re&鼟ul~ 51}"cʉwzUӧ+ûnBdfA5֨*bT5 TK M$sUWg~ߪ09Q&bݛ?/=ސLTwA@PJy^Yh{G7wa|> -=}f/_s_Z7D_4zso*$ 37RJά$Vޜ͖L:S.%s&wVUKߵh e(Xq}j~QuJiXgQ&|dϱюYBR-ɗU}U^2AF ւYR)2;a>u- -zi!C,}/svW6"a& (O"F/[&'2 >,+fd[ߖJ0465` cw_znv#3%~f%[d~%MِnvE]9B4+JuvGLt~2Y! -1(eE= TWndUQA>tH&R Z秋/" >[m5Kٱ"0b R 6b!jl>=9:9E4v5Mr0FLNˆ.'1W;Ƣ[/,2d.HP .QZ -"K_nZfVIw*gï)8Y+B2> -kjPAE?wRs*IzFgE幡;wAbKY8PE `]pB] -)UiXf.DQ;5+pt˔`myEG[YY2t؁PZIdGYrjڴfa-Sxd-;`V6p76Npv_liB;nz-!(/rZ"N8A,]Hf_l ğjEG)XAOAթ.–(^ (^C;[jz2lU*{"`#DS…h20T f`':S8]Z2X|Dʫ=yO8 f-H#pH', es݆iPy^&r -x"xa{:A[bĢ)p" #0kfd\M餓X)Sfh%/ ls/l:VqecfDE)ER:z<"[/d`r=O'1^˱rĢ]ZZPA1d#Si'(`];>B.wD j>\k\Gi!)a§E⢬)A*B2EZmW, -=S猯 n CG"[*X[u.q%\0R1zuX0l JjA<)ʟ'(widV%Z-(a][LgOLThbW\8t7[<`[}Y#,SN2ukyCk%> YG½.faNӖMUFBt;ԽfYP) lA8UNkRԵ5kf!FK]k㧽3⥭ʿZZ1ilGF"h/,v'vawTl0A"DB]PB *@QZECW'xVP2JDyve-9bq>=(v8L_E(KRĢuEґ7@\h+YqN|)pBʩ-FYldtnT)v40 BV-ژՁ|kdjʓC4b_#|$`LefZL/T2/L';>ah~ihd.ћSm%,r'ݱ5>BO">/` )"; 2_T,][M ]m1,h'e'wv8rqu{~0| P _ b\RhV0f; -^ 4(S:8:r#S<&dX0(!ͼp>lh2;w #ǫz kewb%ԛWN\c91 :ofFbD'$ߐԢ)0:Pxlc&DwS 27smzjd ׅ^grєu[pm{vZowiK"/ -Jz(\xWB -jIQ+w.L<"MS81b2\dƾS̕A'XXZV yvp^e^ řψcM2^@"a.Oo}j6/W`䐴CD`zEcVk0vOx l@‹ i[QzuYWI hMsD6MMK"kQ2sX 5mL9‚+\=U ^g"S̉k5aN̻ڙu3)' - &Xc4Z}7FDGt3Lz0 UWs;%iΖU7TMj+kd4sw6%wL`䎨w.pFlDcL/Jbybt]=ZPM%7__xǸ8Pg1;Q - -*JIYz1$6S$WGaMr'ߔ 7EQH?ԼvرS+q iu~fN] w(ܧ3ԥ -[WCD-1?Ȃ0HdE*pFn96ktNຨDO߶gjٜCs[]HxoJd= k!pVٶZCN*ʒQU8)}k7eWONoا }^w;ۿ~w -t?tJZaES +ې "3ny2Z:e.t^NmS_j_=[,OEB[$?tblN$m_~Cz_;-b >3[7٦Fy:V9ցspU6='>Rj%pk;952f#Bsb:aNZdk䧐 aPߘ?A㺧zyϭb"XXt+;d9H(:aݕ0A 7=mt &Gjf^O@pe!-ؾmsRr |WΧ8Eǯt_ +U!H @QocJ BYqt"CJ(S>oPw CpQz޿.V_r(䨚}y%ҜGծ4ɤ.ץQqya IhIڷUڿjE~26[1u就FEkO7z9l_mA5ZV2W'tО -j-a 9@Njሰօ`Yǩcqm㻰IWįͼR&,/O,Kom ߗƂz-n{-qXs(zg'ո-z=n弚la7bA[;`p{=dxR=,:R )|L4}siͶP#1cx](u)wYD6*y4 N%#Ge3\8sL;%/Q ͘͜:olW o.9m @i)X(WRIMҙ)eedOǻ??ixoww?= /͟z|s#\ Co.i z<~7h +x=]ܶ6Q1r]~Ոz4rD&ٷ +W! +WJHc-T+ zEV a2@]DaӷtݎD R𼠳4vG0\RD)>KM߯k'b^2Nko\ +=6 7]?m&FFjDfZC.dJiӲ4 q[ v>~VlJEiWҳ'(B፿-A]V#GbӢ=rO) + gYc(]?LL(39i[,mtB7ȁDVUr"XzWpZh'Ѓh!W\@' C>\IuqłKXS)㞽7êQXvA}}{7uモo!7b ozDrfPB[E6A[Q#wfa8dY^d+> +s6ѪCyZ upQ(;l +}BjE[j=΢^k/La +/F]~(j{zI+[gnmOX'e0Zi,i"# `1#F"u wN=w|S63j鰶byh[c60_d2G>BN>̘br9QEVÞz߮<.4YBCJէM:Pc-pbr}AGS}#ϡjǀ_BJ +箠|" WgA^ Qʳne4bNJ/I ǿrA5A  .=R1$ *%tB9-2-\g㬐9~ M\($[6?BB:nĚ (6LĹ%_Ovj`\.pE  " !]kYjL/ )ywZ &LS [LU#zYۄ>o)宏ADЭϽn*"`IVçx +=#n5:\J'Bqku.Q=[eEʘ-xx-2Phe<>T0$/i@'Zez/ D.B "F(@_TkH%imzǥPhIe uB21@>.6+Ƃt-b2Ha9 E?uRHeQ$#/$RIcҋx ޶Ƨ4I9`g~44A=)iYRAYw-(iãHiMUZ)8&$RZ3j.BkFJeяCRc~*34h$IΜ +v!)\"d)d6Q9.8si1bվ݊L/}AI#^hϗ_x +Z5Ӟ2E^7T㝪 [M=& +wךXPf4gn]7z+4z|TggK"=[ +^@4ڢuAynAH!Jt];7M~ UC5Eg _6n%%[D8ؼHL_R7op{y`@U6uȥ(WnGe[л[N +Fl=/Ei65:5LTK/o=Ly?g@o][P%Ĥ|) +!FO[ޕUϪ,bZ+3PrlYDWqU#іyy_HXxc"@`)4zMCvێʬ,GY(_'V;${Ϊ-~Sow>~> /XObject << - /x0 176 0 R - /x1 178 0 R - /x2 180 0 R + /x0 171 0 R + /x1 173 0 R + /x2 175 0 R + /x3 177 0 R >> /Font << - /f0 125 0 R - /f1 137 0 R - /f2 119 0 R + /f0 120 0 R + /f1 114 0 R + /f2 132 0 R >> >> /MediaBox [0 0 595.2756 841.8898] /StructParents 5 /Parent 1 0 R - /Contents 167 0 R + /Contents 162 0 R >> endobj -167 0 obj +162 0 obj << - /Length 3381 + /Length 1101 /Filter /FlateDecode >> stream -x]_o O1@kľvei8Z @7ۦh~b6;#fWz)(R{|u^妓/W7W]Nv[KSN ?ewJv?^ݮdw]]odTw96~^t^J^Ju `{8_uJ Bn{|Ҋ"N(6vzdv`eHA?\ukhWo 0$ݮ ĥe"#qӢU.h_WonW_yzu5KeƻzHF&1m2^>?tMe&iB0QK8æW9Ms3Ұ.6Bًȗ&l 1]9m"[}-y3$Wlom#Uer7;=ȦئZU-rbq -2EF5*l c| G3ڛɱlwӕ *Wɩ3j4=!Gu\0BH# ΜMWZܪNêm Kgc:(kv{ؾ:W[rjMa9pQ -m@6ꬅHJ2wgÒe(AgǾ* -XVX Oᒎs\ޡdfw;ԛn]M?N=(/>i\ cpZFnKl*{v!SGHr͍bF&)rHMy_fT&ԹW7{dUCF.Q՘@"`\"([D@EQ E$5 P0:$"%I\[#o1[rorW1u|ƨZ-&~>^m3>$ m-MzI[MH&qjVS&_Y-B"쭦 N C>s@|@b"0/(q7@QFLǾ !-8K'3\xS#Gɺ "y6m&l%̕ktx-VimE4)zj#YV#4p2%( ۉu%hr,1S,5i-JӠxߤ[ag2kSrA*P7]xxVgAwR8^MP3n$o -b= vE5 -I26<6NjyF -gqO1h:rGC8&ΏK3i]WS*L~Ms̷8Ump˪Ó^DPn4"F&ڱ}1mNLLR\AM@zOɖ@t)xTwjU_`r < hh$Iѻ㮲x λTx(%&.k(`T\Q[g3[\T8z4 B˖8C>1m *K@ebw0y)G2Sqf` Q-W0\ Qk - Aa~)OT5MtIinycv\?}"V[^=jSܖJ=sj#JxB嗃P,CךiQZ\kTESrCzrZhej yAG9 ZJ5$LL>n(Pj &Ob٫M}%-L!pJ#TtJ;F0͸<^ -(<= `r!uGC)MwriRJkClAt{=QbYE9yzl3p28^$*=#ɼf_Ed#34<ǐ\`_r 0pJjk$Xx -@= ͅtVjSrBϲfLye t~NmlngifE-@rV qzfNmag 6iL\$Q :9jJAZ:epa4LoZisNήfG8ht΍Y-fA"kG\CDP/˾ܜdy^7eDo5z 8 -.ft9[U *Oya>܀Rj3HS{S$y]NJ1+EK\+>b6\Cfd"}.T0K hQV`16l -;IH4눥䓚|||pM]. EZ5^p#ixCo>*sRaόii/Ӕ~iFE&1¥H#My)㘚2^\&@Cm#Exc΍tDM ZMʹbi2ѬgFÞ9Lg7kUHlS]Ʒ &Lu _]"Xa9j`q08W -6|&ρ4%Cn!ej{ʱ.y⣺JPh_Ρ!>6ܠJՓӐ ߾b!9E7}<`_ >Ve`yn{% ؐ\n.`}L[f ~>.Oke<[ 6 ᘥ&/q[Br ʹ?_=vovcwqqvowp@U&E#B3 ww?E +xXn7}߯ jh43N z VRe jo\q$yrs9هϋ̄V`vu%oo3& zE;RBk ًS6v޾f}JRڔ:b$AL)gb%Ceή6P?eC"y\昺#լ ƫ݈Y>N&HF'wl;߷{wπl5?TSjI·0DΆLِkÉj@O7Ћr]5cD7hF% l H)mbyT9XQJ=lB+7ZzfJ ӓVIϷs4;9k5(iD:i"Eu) DI 1Ff"-W; a=0: gYTcb9&9{AA~ @,G#@jR:eܹ %30JP60=e ],(g2ePY!H[jt(o4sF˰F90Hyua58Ɯl<[c`5 ƛl  lA XtF(9FAC)R֚ SФcIDRI''X2=aP#<{M*|Ӫ$YtjC6Ik@I:ExN5{Y&{B)ϢuZ +M mHAcvU7zM[!Hc=A/xv"{۱6;*StN;؁l!yVߗܫZ~*8v4 LĴu _+JL;)@W:G됷~iuz:! w)d!]w:6\-y7yX8S1bf?ly9cz?nֱ+p:.|L;w7ڬ endstream endobj -168 0 obj -<< - /Type /Page - /Resources << - /ProcSet [/PDF /Text /ImageC /ImageB] - /ColorSpace << - /c0 143 0 R - >> - /XObject << - /x0 182 0 R - /x1 184 0 R - /x2 186 0 R - >> - /Font << - /f0 125 0 R - /f1 119 0 R - >> - >> - /MediaBox [0 0 595.2756 841.8898] - /StructParents 6 - /Parent 1 0 R - /Contents 169 0 R ->> -endobj - -169 0 obj -<< - /Length 2861 - /Filter /FlateDecode ->> -stream -x\o#b= i -HqO=;U ]+P,i8$yfV?rؼ~io͛7ͻ7٨F6R"8LkndF6>FRXTZ\HqXdp2)Ru*,z4ߝ*AU ֌1m1ɴ,Ǭy̓ aUh%fM4.2˜.-[]L/F73mא.3o<ץwr60sv,B&~&45μ 3Geʳ4bINWF0qh䱾/GIDއiX)QtdB_`y:ӎp@=L-X{FD-TTב - KZ_l+J2g7D%8G7>>Koժ΀hdrR  qq2M*\:!mzxaioAnu-U-5T95ri&/7OP:)SeIDu8 HJBɿǐ0)4wb)oқxTϑYOޔK2et򸣦 8Jm|PQH|yֱBPEZZgC77s&

5*]oהK@t[X&zCI.(lA,FVt<" -Dәmձƭb8m`j3y= -^ BTBJLdܣY$3>KY"&¹- Ρ/xfAVsxRi2 -@72^TmıQ]1_i ivT덲{B `*prUě}T^OҠP'e` Q'_ҰYCxsT -ukAZ* kV)IV6FPp"ywbG)*/9D՚a^X=x 8 -VH0~Z -dy^=l\\+/4HyPW|wIVx(1ex.Y/s;z+vSєG_?Ex56[),Ąǩl45rμq%emߪ>kv, 'AgU2bYbxjCJ(!]o0tX$> /= 4 C0p#-=rNJ]5%#}ƿcB(1jg:'V,×a4҇??~_>77OOwxH8HkD>4F p4â' -endstream -endobj - -170 0 obj +163 0 obj << /Type /Annot /Subtype /Link - /Rect [70.86614 741.1212 82.48214 755.78424] + /Rect [70.86614 352.71365 82.48214 367.37665] /Border [0 0 0] - /Dest 159 0 R + /Dest 154 0 R /F 4 - /StructParent 7 + /StructParent 6 /Contents ([1]) >> endobj -171 0 obj +164 0 obj << /Type /Annot /Subtype /Link - /Rect [122.58793 697.1322 288.56693 711.7952] + /Rect [122.58793 308.72467 288.56693 323.38763] + /Border [0 0 0] + /A << + /Type /Action + /S /URI + /URI (https://www.youtube.com/watch?v=TwZxTuU8LUI) + >> + /F 4 + /StructParent 7 + /Contents (https://www.youtube.com/watch?v=TwZxTuU8LUI) +>> +endobj + +165 0 obj +<< + /Type /Annot + /Subtype /Link + /Rect [89.63214 294.06165 177.48914 308.72467] /Border [0 0 0] /A << /Type /Action @@ -2274,56 +2187,48 @@ endobj >> endobj -172 0 obj -<< - /Type /Annot - /Subtype /Link - /Rect [89.63214 682.46924 177.48914 697.1322] - /Border [0 0 0] - /A << - /Type /Action - /S /URI - /URI (https://www.youtube.com/watch?v=TwZxTuU8LUI) - >> - /F 4 - /StructParent 9 - /Contents (https://www.youtube.com/watch?v=TwZxTuU8LUI) ->> -endobj - -173 0 obj +166 0 obj << /Type /Page /Resources << /ProcSet [/PDF /Text /ImageC /ImageB] /ColorSpace << - /c0 143 0 R + /c0 138 0 R + >> + /XObject << + /x0 179 0 R >> /Font << - /f0 119 0 R - /f1 125 0 R + /f0 114 0 R + /f1 120 0 R >> >> /MediaBox [0 0 595.2756 841.8898] - /StructParents 10 + /StructParents 9 /Tabs /S /Parent 1 0 R - /Contents 174 0 R - /Annots [170 0 R 171 0 R 172 0 R] + /Contents 167 0 R + /Annots [163 0 R 164 0 R 165 0 R] >> endobj -174 0 obj +167 0 obj << - /Length 724 + /Length 1234 /Filter /FlateDecode >> stream -xVn0 }W؆P%K@k귺l֤K]`9 ؋dJIG_/7pr/3@o2q@@qixBH# B!<$,7^#py1"|D ׅy(Dc]7]x/޸y { `ʨkpﲁa2h DHD P'!hNr>]|(#I&[d8!D^QqPyvi*qSJ4SMMa#b{Ry3\K[$}\VR8Y ZHyR>D? zqJȐ8Q(F{U TN=d0R1#53Fr밄]uP!v \C.4P'S;< QKF!6`#T+-ANBP(.*:-g7<*^7$+k1l6njɰA|O>HuK.꧞b {B =Rt8LKJm%GݰQ1C}+7iiݲ:FX-b(ۦJ+A s`q r es+RVbt]z^&m4]&?Vz|MMz5{bMWl)﷛ezݴu ֡@04DRAˠ搭 +xYmo6_5Vu}w߆ ȋ +l5za;W?H( ./);wM\2(NO \hˀZQ ++&Ȳ}1l.~+\P*Rv#1DJSUŧاŪfbWl7xPmkZPWW];p^^W}PDd[=ZxM )Tzźv7'R\={ +UbΚdd\V]cQ cp:p!" E#McY헚\_]_OO{u: Q_խR0,q)(i_G/0> +{靹PܷΡ*^P8+nGGN~&sxRQ0 Y2Sc, d=n<UW ƥ|Du6cXo|[fA2Òa$z,>KGYmy]O ;^6waJ:ɖI<[$^r]xͣa2{CKNAz$WuC@g];U奯.m~ +\"$k<1qHqŠ Y;5}wvo{Au;,yV+T Ã>&;kUq3(ǯq=\0b +M$Ce?ha*S4D*N$ IQdU;r%諨4%d;Q!t'ێ{rHOI.>6u"gh@&o$fWIVɃ?J U"cc=&E_ҙ|h@%Ca~r+0gL[EG1lD_G4~~CH]`857lMb[j"//i[EM^YqrW6E&i? $88Y1bv^cIqi_G(U.}I{uSv{y(C8wKG> stream xTTm շ{ܙݞ4~9 DD1DEQTs"(H J$ QAr%p @@ -2499,7 +2404,7 @@ W endstream endobj -177 0 obj +170 0 obj << /Length 1160 /Type /XObject @@ -2516,7 +2421,7 @@ x endstream endobj -178 0 obj +171 0 obj << /Length 21044 /Type /XObject @@ -2524,9 +2429,9 @@ endobj /Filter /FlateDecode /Width 512 /Height 512 - /ColorSpace 144 0 R + /ColorSpace 139 0 R /BitsPerComponent 8 - /SMask 177 0 R + /SMask 170 0 R >> stream xyPS{=ӿggj~ꚮ鮉^suOEDqE/* WDwP¾%,a !w @@ -2579,7 +2484,7 @@ F endstream endobj -179 0 obj +172 0 obj << /Length 1097 /Type /XObject @@ -2602,7 +2507,7 @@ x endstream endobj -180 0 obj +173 0 obj << /Length 20294 /Type /XObject @@ -2610,9 +2515,9 @@ endobj /Filter /FlateDecode /Width 512 /Height 512 - /ColorSpace 144 0 R + /ColorSpace 139 0 R /BitsPerComponent 8 - /SMask 179 0 R + /SMask 172 0 R >> stream xiP =S5u?3箷ޚ;Um*.9G=. "((セ @@ -2667,7 +2572,7 @@ R endstream endobj -181 0 obj +174 0 obj << /Length 1157 /Type /XObject @@ -2686,7 +2591,7 @@ x endstream endobj -182 0 obj +175 0 obj << /Length 21011 /Type /XObject @@ -2694,9 +2599,9 @@ endobj /Filter /FlateDecode /Width 512 /Height 512 - /ColorSpace 144 0 R + /ColorSpace 139 0 R /BitsPerComponent 8 - /SMask 181 0 R + /SMask 174 0 R >> stream xyXSkws ]=gw=sv&N (8†("N8X"*DEĉyg 9! a!d.#O"? YM>|&Yk}DߌwR4 e|.%% _$&&:ҒY__o|aOOOkkkwwwIIF+_|E\\\__ @@ -2770,7 +2675,7 @@ k~ endstream endobj -183 0 obj +176 0 obj << /Length 1567 /Type /XObject @@ -2788,7 +2693,7 @@ x endstream endobj -184 0 obj +177 0 obj << /Length 29941 /Type /XObject @@ -2796,9 +2701,9 @@ endobj /Filter /FlateDecode /Width 512 /Height 512 - /ColorSpace 144 0 R + /ColorSpace 139 0 R /BitsPerComponent 8 - /SMask 183 0 R + /SMask 176 0 R >> stream xgPY{;ySujgu4*$$I, d$ID@rAr9眛 )\Mt_2HׯVM!kuO닿׽E!          (pv:P]/a:P~XAsWWWk___c Z7A;;;33]mGqq7?_/`?~t_۩Srrr ED`iiyzzz]333\g2NXYYٯ_[[(jxxg?*7''' >lK֬ uuu7A g @@ -2922,7 +2827,7 @@ _x endstream endobj -185 0 obj +178 0 obj << /Length 1564 /Type /XObject @@ -2940,7 +2845,7 @@ pL)Qm endstream endobj -186 0 obj +179 0 obj << /Length 31239 /Type /XObject @@ -2948,9 +2853,9 @@ endobj /Filter /FlateDecode /Width 512 /Height 512 - /ColorSpace 144 0 R + /ColorSpace 139 0 R /BitsPerComponent 8 - /SMask 185 0 R + /SMask 178 0 R >> stream x P[3=1_LLL}n^u-}WPMEE@Pe}w} @@ -3082,7 +2987,7 @@ F endstream endobj -187 0 obj +180 0 obj << /Title (Assignment 1 -- Report) /Author (Fredrik Robertsen) @@ -3092,22 +2997,22 @@ endobj >> endobj -188 0 obj +181 0 obj << /Length 1164 /Type /Metadata /Subtype /XML >> stream -Assignment 1 -- ReportFredrik RobertsenTypst 0.14.2en2026-02-09T00:00:00Z2026-02-09T00:00:00Z4application/pdf9TiFnn1NDl7B8TH4X4d+sA==mIhgz8F4BUqtiAyx5FUR3g==proof1.7 +Assignment 1 -- ReportFredrik RobertsenTypst 0.14.2en2026-02-09T00:00:00Z2026-02-09T00:00:00Z3application/pdfxpcQN3NDkNqGerQiumM7Eg==mIhgz8F4BUqtiAyx5FUR3g==proof1.7 endstream endobj -189 0 obj +182 0 obj << /Type /Catalog /Pages 1 0 R - /Metadata 188 0 R + /Metadata 181 0 R /PageLabels 14 0 R /Lang (en) /StructTreeRoot 15 0 R @@ -3123,204 +3028,197 @@ endobj endobj xref -0 190 +0 183 0000000000 65535 f 0000000016 00000 n -0000000106 00000 n -0000000187 00000 n -0000000279 00000 n -0000000391 00000 n -0000000548 00000 n -0000000649 00000 n -0000000762 00000 n -0000000864 00000 n -0000000966 00000 n -0000001082 00000 n -0000001188 00000 n -0000001297 00000 n -0000001389 00000 n -0000001462 00000 n -0000001784 00000 n -0000002518 00000 n -0000003097 00000 n -0000003466 00000 n -0000003555 00000 n -0000003963 00000 n -0000004096 00000 n -0000004181 00000 n -0000004262 00000 n -0000004372 00000 n -0000004577 00000 n -0000004656 00000 n -0000004802 00000 n -0000004907 00000 n -0000005033 00000 n -0000005141 00000 n -0000005252 00000 n -0000005358 00000 n -0000005451 00000 n -0000005595 00000 n -0000005688 00000 n -0000005832 00000 n -0000005922 00000 n -0000006056 00000 n -0000006200 00000 n -0000006302 00000 n -0000006404 00000 n -0000006656 00000 n -0000006800 00000 n -0000006887 00000 n -0000007031 00000 n -0000007130 00000 n -0000007241 00000 n -0000007367 00000 n -0000007471 00000 n -0000007618 00000 n -0000007729 00000 n -0000007837 00000 n -0000007945 00000 n -0000008046 00000 n -0000008189 00000 n -0000008287 00000 n -0000008374 00000 n -0000008489 00000 n -0000008607 00000 n -0000008754 00000 n -0000008893 00000 n -0000009021 00000 n -0000009149 00000 n -0000009228 00000 n -0000009359 00000 n -0000009449 00000 n -0000009528 00000 n -0000009670 00000 n -0000009749 00000 n -0000009880 00000 n -0000009967 00000 n -0000010046 00000 n -0000010188 00000 n -0000010267 00000 n -0000010398 00000 n -0000010488 00000 n -0000010567 00000 n -0000010709 00000 n -0000010788 00000 n -0000010919 00000 n -0000011006 00000 n -0000011085 00000 n -0000011227 00000 n -0000011323 00000 n -0000011440 00000 n -0000011527 00000 n -0000011643 00000 n -0000011736 00000 n -0000011876 00000 n -0000012023 00000 n -0000012170 00000 n -0000012317 00000 n -0000012402 00000 n -0000012493 00000 n -0000012582 00000 n -0000012667 00000 n -0000012761 00000 n -0000012850 00000 n -0000012937 00000 n -0000013029 00000 n -0000013119 00000 n -0000013228 00000 n -0000013346 00000 n -0000013461 00000 n -0000013585 00000 n -0000013693 00000 n -0000013788 00000 n -0000013936 00000 n -0000014015 00000 n -0000014108 00000 n -0000014189 00000 n -0000014271 00000 n -0000014414 00000 n -0000014503 00000 n -0000014562 00000 n -0000014621 00000 n -0000014680 00000 n -0000014739 00000 n -0000014913 00000 n -0000015528 00000 n -0000015619 00000 n -0000015864 00000 n -0000017250 00000 n -0000022519 00000 n -0000022696 00000 n -0000023537 00000 n -0000023628 00000 n -0000023882 00000 n -0000025650 00000 n -0000033380 00000 n -0000033545 00000 n -0000033813 00000 n +0000000098 00000 n +0000000179 00000 n +0000000271 00000 n +0000000383 00000 n +0000000540 00000 n +0000000641 00000 n +0000000754 00000 n +0000000856 00000 n +0000000958 00000 n +0000001074 00000 n +0000001180 00000 n +0000001289 00000 n +0000001381 00000 n +0000001444 00000 n +0000001756 00000 n +0000002569 00000 n +0000002805 00000 n +0000002978 00000 n +0000003349 00000 n +0000003482 00000 n +0000003567 00000 n +0000003648 00000 n +0000003764 00000 n +0000003971 00000 n +0000004050 00000 n +0000004197 00000 n +0000004303 00000 n +0000004401 00000 n +0000004508 00000 n +0000004598 00000 n +0000004703 00000 n +0000004846 00000 n +0000004936 00000 n +0000005080 00000 n +0000005170 00000 n +0000005304 00000 n +0000005448 00000 n +0000005556 00000 n +0000005664 00000 n +0000005773 00000 n +0000005875 00000 n +0000005963 00000 n +0000006106 00000 n +0000006192 00000 n +0000006335 00000 n +0000006423 00000 n +0000006535 00000 n +0000006640 00000 n +0000006735 00000 n +0000006879 00000 n +0000007009 00000 n +0000007120 00000 n +0000007228 00000 n +0000007336 00000 n +0000007438 00000 n +0000007553 00000 n +0000007656 00000 n +0000007803 00000 n +0000007942 00000 n +0000008070 00000 n +0000008198 00000 n +0000008277 00000 n +0000008408 00000 n +0000008498 00000 n +0000008577 00000 n +0000008719 00000 n +0000008798 00000 n +0000008929 00000 n +0000009016 00000 n +0000009095 00000 n +0000009237 00000 n +0000009316 00000 n +0000009447 00000 n +0000009537 00000 n +0000009616 00000 n +0000009758 00000 n +0000009837 00000 n +0000009968 00000 n +0000010055 00000 n +0000010134 00000 n +0000010276 00000 n +0000010372 00000 n +0000010489 00000 n +0000010605 00000 n +0000010721 00000 n +0000010868 00000 n +0000011015 00000 n +0000011162 00000 n +0000011247 00000 n +0000011338 00000 n +0000011427 00000 n +0000011512 00000 n +0000011603 00000 n +0000011692 00000 n +0000011777 00000 n +0000011868 00000 n +0000011957 00000 n +0000012065 00000 n +0000012173 00000 n +0000012288 00000 n +0000012397 00000 n +0000012505 00000 n +0000012600 00000 n +0000012748 00000 n +0000012827 00000 n +0000012920 00000 n +0000013001 00000 n +0000013083 00000 n +0000013226 00000 n +0000013315 00000 n +0000013374 00000 n +0000013433 00000 n +0000013492 00000 n +0000013666 00000 n +0000014281 00000 n +0000014372 00000 n +0000014617 00000 n +0000016003 00000 n +0000021272 00000 n +0000021449 00000 n +0000022290 00000 n +0000022381 00000 n +0000022635 00000 n +0000024399 00000 n +0000031967 00000 n +0000032132 00000 n +0000032400 00000 n +0000032491 00000 n +0000032768 00000 n 0000033904 00000 n -0000034181 00000 n -0000035317 00000 n -0000043468 00000 n -0000043647 00000 n -0000043962 00000 n -0000044050 00000 n -0000044300 00000 n -0000045147 00000 n -0000046880 00000 n -0000046918 00000 n -0000046956 00000 n -0000047315 00000 n -0000047738 00000 n -0000047791 00000 n -0000047844 00000 n -0000047898 00000 n -0000047953 00000 n -0000048007 00000 n -0000048060 00000 n -0000048114 00000 n -0000048169 00000 n -0000048224 00000 n -0000048279 00000 n -0000048332 00000 n -0000048385 00000 n -0000048440 00000 n -0000048736 00000 n -0000048997 00000 n -0000049247 00000 n -0000049429 00000 n -0000049812 00000 n -0000055091 00000 n -0000055478 00000 n -0000058939 00000 n -0000059308 00000 n -0000062249 00000 n -0000062429 00000 n -0000062732 00000 n -0000063035 00000 n -0000063375 00000 n -0000064178 00000 n -0000066162 00000 n -0000105996 00000 n -0000107346 00000 n -0000128594 00000 n -0000129881 00000 n -0000150379 00000 n -0000151726 00000 n -0000172941 00000 n -0000174698 00000 n -0000204843 00000 n -0000206597 00000 n -0000238040 00000 n -0000238221 00000 n -0000239476 00000 n +0000042055 00000 n +0000042234 00000 n +0000042559 00000 n +0000042647 00000 n +0000042897 00000 n +0000043772 00000 n +0000045769 00000 n +0000045807 00000 n +0000045845 00000 n +0000046204 00000 n +0000046627 00000 n +0000046680 00000 n +0000046733 00000 n +0000046787 00000 n +0000046842 00000 n +0000046897 00000 n +0000046951 00000 n +0000047006 00000 n +0000047060 00000 n +0000047113 00000 n +0000047167 00000 n +0000047221 00000 n +0000047275 00000 n +0000047330 00000 n +0000047626 00000 n +0000047888 00000 n +0000048140 00000 n +0000048322 00000 n +0000048764 00000 n +0000053337 00000 n +0000053742 00000 n +0000054923 00000 n +0000055104 00000 n +0000055409 00000 n +0000055713 00000 n +0000056093 00000 n +0000057407 00000 n +0000059391 00000 n +0000099225 00000 n +0000100575 00000 n +0000121823 00000 n +0000123110 00000 n +0000143608 00000 n +0000144955 00000 n +0000166170 00000 n +0000167927 00000 n +0000198072 00000 n +0000199826 00000 n +0000231269 00000 n +0000231450 00000 n +0000232705 00000 n trailer << - /Size 190 - /Root 189 0 R - /Info 187 0 R - /ID [(mIhgz8F4BUqtiAyx5FUR3g==) (9TiFnn1NDl7B8TH4X4d+sA==)] + /Size 183 + /Root 182 0 R + /Info 180 0 R + /ID [(mIhgz8F4BUqtiAyx5FUR3g==) (xpcQN3NDkNqGerQiumM7Eg==)] >> startxref -239735 +232964 %%EOF \ No newline at end of file diff --git a/report/report.typ b/report/report.typ index e5be917..6765405 100644 --- a/report/report.typ +++ b/report/report.typ @@ -15,33 +15,29 @@ show-toc: true, ) -Source code available (code & report) at: \ +Source code available at: \ https://git.pvv.ntnu.no/frero-uni/IT3708 = Introduction -The problem in question is how we can solve the binary knapsack problem fast using approximation. Recall that this problem and its derivations like feature selection are NP-hard. This means we cannot obtain a solution to the problem in polynomial time (source). We can use a genetic algorithm to approximate a solution to the problem, tweaking hyperparameters to influence the results (source). This report details the process of solving the knapsack problem and in particular feature selection. +The binary knapsack problem and its derivations like feature selection are NP-hard, meaning no polynomial-time solution exists. Genetic algorithms can approximate solutions by tweaking hyperparameters. This report details solving the knapsack problem and feature selection. = Background & Setup -The binary knapsack problem attempts to find the smallest combination of items with a given weight and value to maximize the total value without exceeding the knapsack's total weight capacity. If we remove the capacity limit, we have a feature selection problem. This is relevant to regression and machine learning, where you feed input points along with an observed target value and attempt to find a mathematical model that fits it (source). +The binary knapsack problem finds the optimal combination of items to maximize value without exceeding weight capacity. Without the capacity limit, this becomes feature selection, relevant to regression and machine learning. -Genetic algorithms approximate solutions to problems that attempt to find global optima in a search space, like these (source). Thus, we can encode the items or features as bits in a bitstring, representing the individual/chromosome of the population. Starting with some number of individuals, we can repeat these steps until satisfied: +Genetic algorithms approximate solutions by finding global optima in a search space. Items or features are encoded as bits in a bitstring representing individuals/chromosomes. Starting with a population, we repeat until satisfied: 1. select parents from population; -2. perform crossover with pairs of parents; then +2. perform crossover with pairs of parents; 3. mutate offspring. -I implemented a modular genetic algorithm where I can easily switch out the different operators and hyperparameters, i.e. how we choose parents and survivors or how we perform crossovers and mutations. This allows for easy testing and tuning. Written in over a thousand lines of low-level #text(blue)[#link("https://odin-lang.org/")[Odin]] code, it is fairly performant, especially thanks to memoizing the calculated fitness values. I use #text(blue)[#link("https://uiua.org/")[Uiua]] for plotting, because it was easy. - -The code repository has detailed instructions on how to use the code to achieve the following results. +I implemented a modular genetic algorithm in over a thousand lines of #text(blue)[#link("https://odin-lang.org/")[Odin]] code with memoized fitness values for performance. #text(blue)[#link("https://uiua.org/")[Uiua]] handles plotting. = Results & Reflection -These are the findings. - == Running the algorithm -After successfully stitching together an implementation of a genetic algorithm, this is what the program would spit out: +Initial output with random parent selection, 70% single-point crossover, 1% bit-flip mutations and full generational replacement: ``` Baseline RMSE: 0.1952 @@ -50,56 +46,46 @@ Gen 0: Best=0.1885 Mean=0.1957 Worst=0.2062 Entropy=49.5620 Gen 99: Best=0.1920 Mean=0.1974 Worst=0.2088 Entropy=40.3545 ``` -Note this particular configuration ended up worse than it started off! That's because I ran it with random parent selection, 70% single-point crossover, 1% bit-flip mutations and full generational replacement. The main catch here is that selecting parents at random is not inducive to approaching any optima @pavlic2026ga_hyperparameters. It is however a very simple operator to implement. +Results worsened because random parent selection doesn't approach optima @pavlic2026ga_hyperparameters. == Best and Worst RMSE -On to the meat of this. - -From our first run above, we can see that the baseline RMSE obtained by calculating the fitness of all alleles activated, i.e. by selecting all features, is around 0.195. We wish to minimize, thus seek lower scores than this. Running on the same seed, meaning the same baseline, we obtain the following: +Baseline RMSE (all features selected) is ~0.195. Using tournament selection with $k=10$, $mu = 1000$, $P_C = 0.7$ and $P_M = 0.01$: #image("tournament_data.png") -This was ran using tournament selection with $k=10$ participants and a population size of $mu = 1000$, crossover rate $P_C = 0.7$ and mutation rate $P_M = 0.01$. Switching to a roulette selection yields near identical results. No matter which of these hyperparameters I tune, the result is still near 0.1811 as shown in the graph. +Roulette selection yields identical results. All hyperparameter configurations I've tested converge near 0.1811. == Crowding -Lackluster results bring us to better methods. We have seen that parent selection methods tournament- and roulette selection have strong enough selection pressure to force the population to converge in the first thirty or so generations. We can use crowding, which attempts to maintain diversity through niching. Here, this is done by deterministic and probabilistic crowding, both of which are examples of explicit approaches to maintaining diversity. - -Though sadly, I am unable to find any configuration that yields anything much better than 0.1811, even with these crowding methods. I might have implemented them wrong, or the seed I am using (42) may simply be really stuck at a certain optimum. Perhaps resource sharing could help spread out the population more. - -We can at least measure the entropies between a simple generational GA and a crowding-based one. The following is the entropy of generational replacement, where every parent is discarded in favor of the offspring. +Crowding maintains diversity through niching. Despite testing deterministic and probabilistic crowding, no configuration improved beyond 0.1811. The seed (42) may be stuck at a local optimum. +Generational replacement entropy: #image("tournament_entropy.png") -Next is the probabilistic crowding entropy - +Probabilistic crowding entropy: #image("probabilistic_entropy.png") -Given more time, I could have plotted these in the same plot to more easily assess their differences. We can at least tell that probabilistic crowding maintains the entropy for a little longer, despite the high selection pressure from tournament selection. +Probabilistic crowding maintains entropy longer despite high selection pressure. == Elitism -The graphs from running with elitism versus crowding are quite similar to the previous graphs. Though I did stumble upon this entropy graph while running with probabilistic crowding and 10 elites with roulette parent selection. I also had to crank up the mutation rate to 0.02 and crossover to 0.8 +With probabilistic crowding, 10 elites, roulette selection, $P_M = 0.02$ and $P_C = 0.8$: #image("lucky_entropy.png") == Comparing with the Knapsack Problem -For the binary knapsack problem, we are maximizing. - +Deterministic crowding approaches optimum (295246): #image("gen_plot.png") -This plot gets very close to the optimum (295246) using deterministic crowding. Then there's probabilistic crowding: - +Probabilistic crowding has a fitness penalty bug causing negative values: #image("prob_plot.png") -There is a bug in my fitness penalty calculation, causing vastly negative fitness values. - = Conclusion -It is not that easy tweaking these hyperparameters. You have to balance the forces of selection pressure and diversity. This vaguely reminds me of Heisenberg's uncertainty principle, that a particle becomes "fuzzy" if you know how it moves, but "fixed" if you don't. I'm no physicist, though. +Balancing selection pressure and diversity requires careful hyperparameter tuning. = Further work -It is likely that some of these implementations are flawed, either in regards to correctness or performance or both. These issues could get ironed out. Additionally, like I mentioned already, drawing multiple plots from different configurations in the same plot could help compare. You could also script some automation of tweaking parameters and plotting/logging the data. Lastly, you could also modularize the code even more and make the algorithm more generic, allowing for even greater flexibility. +Potential improvements include fixing implementation flaws, comparing multiple configurations in single plots, automating parameter tuning, and further modularizing the code.