-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
135 lines (114 loc) · 3.06 KB
/
Copy pathmain.go
File metadata and controls
135 lines (114 loc) · 3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package main
import (
"fmt"
)
// fungsi untuk mendapatkan kolom array
func arrayColumn(board [3][4]int, columnIndex int) (column []int) {
column = make([]int, 0)
for _, row := range board {
column = append(column, row[columnIndex])
}
return
}
// fungsi untuk mendapatkan minimal
var getMin = func(n []int) int {
var min int
for i, e := range n {
switch {
case i == 0:
min = e
// case e > max:
// max = e
case e < min:
min = e
}
}
return min
}
// fungsi untuk mendapatkan maximal
var getMax = func(n []int) int {
var max int
for i, e := range n {
switch {
case i == 0:
max = e
case e > max:
max = e
// case e < min:
// min = e
}
}
return max
}
func main() {
// Menentukan rekomendasi tempat bootcamp IT
// C1 = Biaya (seberapa banyak biaya untuk bootcamp)
// C2 = Lokasi (seberapa jauh lokasi tempat bootcamp dari rumah)
// C3 = Fasilitas ( fasilitas tempat bootcamp)
// C4 = Kualitas pengajar (dilihat dari gelar akademik para mentor di tempat bootcamp)
kriteria := [4][1]string{{"C1"}, {"C2"}, {"C3"}, {"C4"}}
// Pembobotan nilai alternatif
alternatif := [3][4]int{
{3, 2, 3, 4}, //Alternatif 1 (Bootcamp Arkademy)
{2, 4, 3, 3}, //Alternatif 2 (Bootcamp Hactiv8)
{4, 5, 5, 5}} //Alternatif 3 (Bootcamp Dumbways)
fmt.Println(kriteria)
rr := [3][4]float32{}
indexAlternatif := 0
for _, element1 := range alternatif {
indexKriteria := 0
fmt.Println(element1)
for _, element2 := range kriteria {
// C1 dan C2 dicari nilai terkecil karena COST
if string(element2[0]) == "C1" || element2[0] == "C2" {
rr[indexAlternatif][indexKriteria] = float32(getMin(arrayColumn(alternatif, indexKriteria))) / float32(alternatif[indexAlternatif][indexKriteria])
// C3 dan C4 dicari nilai terbesar karena BENEFIT
} else if element2[0] == "C3" || element2[0] == "C4" {
rr[indexAlternatif][indexKriteria] = float32(alternatif[indexAlternatif][indexKriteria]) / float32(getMax(arrayColumn(alternatif, indexKriteria)))
}
// fmt.Println(element)
indexKriteria++
}
indexAlternatif++
}
fmt.Println("===Hasil normalisasi===")
fmt.Println(rr)
// Bobot kriteria C1, C2, C3, C4
w := [4]float32{0.4, 0.3, 0.2, 0.1}
fmt.Println(w)
nv := [3]float32{}
indexAlternatif1 := 0
const indexV = 0
fmt.Println("=================")
// Bobot kriteria dikalikan hasil normalisasi
for _, element := range alternatif {
indexw := 0
indexr := 0
v := float32(0)
fmt.Println(element)
fmt.Println("==========")
for _, element2 := range kriteria {
v += float32(w[indexw] * rr[indexAlternatif1][indexr])
indexr++
indexw++
fmt.Println(element2)
// fmt.Println("===========")
}
// println("=======df============")
nv[indexAlternatif1] = v
indexAlternatif1++
// fmt.Println(nv)
}
println("==Hasil perhitungan==")
fmt.Println(nv)
println("======================")
}
// fmt.Println(alternatif)
// fmt.Println(alternatif[2])
// das := arrayColumn(alternatif, 0)
// // fmt.Println(ArrayColumn(alternatif {2})
// fmt.Println(das)
// var min = getMin(das)
// println(min)
// var max = getMax(das)
// println(max)