Giriş
Çalışma kapsamında çok kriterli karar verme yöntemi olarak geliştirilmiş olan APLOCO (Logaritmik Konsept Yaklaşımı) metodunun R‘da fonksiyonu yazılarak R’da kullanımı gösterilmiştir. APLOCO fonksiyonu Hacettepe Üniversitesi Bilgisayar Mühendisliği Doktora programından Doç. Dr. Burkay Genç hocamla birlikte oluşturulmuştur. Oluşturulmuş fonksiyon Python programlama dilini de rahatlıkla uyarlanabilir. APLOCO metodunun makalesi için https://arxiv.org/abs/1802.04095 linkine tıklayınız. R programlama dili bilmeyenlerin için ise Microsoft Excel üzerinde hazırlamış olduğum simülasyona ise https://rpubs.com/tevfik1461/aploco linkinden ulaşabilirsiniz. Dinamik bir nitelik de taşıyan yöntem açık uçlu ve tek yönlü eşitsizlikleri (standart değeri olan ya da hesaplanan) içeren;
- Sıralama (ranking)
- Seçim (selection)
- Etkinlik ve verimlilik ölçümleri (measurements of efficiency and productivity)
- Performans değenlendirme (performance evaluation)
- Risk tahmini (risk estimation)
- Optimal çözüm (optimal solution)
gibi açık uçlu ve aynı zamanda statik ve dinamik bir seyir izleyen bütün karar verme problemlerinin çözümünde sektör ayrımı olmaksızın rahatlıkla uygulanabilir. Yapılan çalışmanın literatüre katkısının yanında Türkiye’de yeterince gelişim gösteremeyen yöneylem araştırma (operation research) alanına da önemli katkı sağlayacağı inancındayım. APLOCO yönteminin kullanıldığı çalışmalar:
- Bildiri Makalesi, URL: http://muh.karabuk.edu.tr/bilgisayar/icatces/proceeding_book_2019.pdf, Ulaşım Tarihi: 22.05.2019. Karabük Üniversitesi Bilgisayar Mühendisliği öğretim görevlileri Prof. Dr. Oğuz FINDIK ve Emrah ÖZKAYNAK tarafından kompleks ağ analizi (complex netwok analysis) alanında düğüm ağırlıklarının hesaplanmasında ve merkezi metriklerin belirlenmesinde APLOCO metodu kullanılmıştır. Yapılan çalışmanın konusu Kompleks Ağların Merkezi Ölçütlerinde Düğüm Ağırlıklandırma Yöntemi (Node Weighting Method in Centrality Measure of Complex Networks)’dir. Bu çalışma, 26-28 Nisan 2019 tarihleri arasında Alanya’da gerçekleştirilen Uluslararası İleri Teknolojiler, Bilgisayar Mühendisliği ve Bilim Konferansı (ICATCES2019)‘nda sunularak bildirisi yayınlanmıştır.
- Mishra, Amit Kumar, Joshi, Nisheeth, and Mathur, Iti. ‘A Fuzzy Based Integrated Model for Identification of Vital Node in Terrorist Network Using Logarithmic Concept’. 1 Jan. 2020 : 1 – 15. https://content.iospress.com/articles/journal-of-intelligent-and-fuzzy-systems/ifs191899. Adı geçen çalışmada geliştirdiğim Approach of Logarithmic Concept (APLOCO) yöntemi sosyal ağ analizinde diğer yöntemlerle karşılaştırmalı olarak test edilmiş, APLOCO yöntemi diğer yöntemlere göre daha yüksek performansa sahip olduğu bulunmuş ve önerilmiştir.
- Fındık, O., Özkaynak, E. Link prediction based on node weighting in complex networks. Soft Comput 25, 2467–2482 (2021). https://doi.org/10.1007/s00500-020-05314-8. Yazarın ağzından “Bu çalışmada karmaşık ağlarda bağlantı tahmini için Düğüm Ağırlıklı Bağlantı Tahmin Modeli geliştirilmiştir. Geliştirilen modelde zaman periyodu ile birlikte ağda düğümlerin gücünü ortaya çıkarabilecek ve topolojik bilgilerle ifade edilemeyen özelliklerin dahil edildiği düğüm ağırlıklandırma işlemi yapılmaktadır. Elde edilen düğüm ağırlıkları gelecekte aralarında bağlantı olma ihtimali olan düğümlerin benzerlik oranlarını hesaplamada kullanılmaktadır. Düğümlerin ağırlıklandırma işleminde APLOCO yöntemi kullanılmıştır. APLOCO yönteminin tercih edilmesinin sebebi hem uygulanabilirliğinin kolay olması hem de düğümlerin ağırlığını hesaplamada başarılı sonuçlar vermesidir. APLOCO yönteminin uygulanması aşamalarında her daim desteğini esirgemeyen Tevfik Bulut Hocama çok teşekkür ederim. Bilim adına faydalı bir çalışma olacağını ümit ediyorum.” Emrah Özkaynak.
- Özkaynak, Emrah . (2020). Karmaşık Ağlarda Düğüm Ağırlıklı Bağlantı Yöntemlerinin Geliştirilmesi. Doktora Tezi, Karabük Üniversitesi Bilgisayar Mühendisliği. Doktora tezi. http://acikerisim.karabuk.edu.tr:8080/xmlui/bitstream/handle/123456789/1011/10372612.pdf?sequence=1 adresinden adı geçen doktora tezine ulaşılabilir.
Yüklenen kütüphaneler
kütüphane<-c("dplyr","tibble","tidyr","ggplot2","ggthemes", "kableExtra", "forcats", "readxl")
yükle<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE)
#Kütüphane yüklenme durumunu gösteren tablo
tibble(Sıra=1:length(kütüphane), Kütüphane=names(yükle), Durumu=as.logical(yükle)) %>% mutate(Durumu=if_else(Durumu==TRUE, "Yüklendi", "Paket Kurulumu Gerekli"))
Kütüphane yüklenme durumunu gösteren tablo
APLOCO fonksiyonu ve grafikleri
aploco fonksiyonunda km karar matrisini, ky kriterin yönünü, ka ise kriter ağırlıklarını göstermektedir. Aşağıdaki fonksiyonda oluşturulan sentetik karar matrisi 20×5 boyutludur. Diğer bir ifadeyle 20 kriter ve 5 alternatiften oluşmaktadır.
set.seed(61) #aynı sonuçları alabilmeniz için
ham_veri <- matrix(rpois(100, 5), nrow = 20) #karar matrisi
ky <- sample(c("max","min"),size =nrow(ham_veri) , replace = T) #kriterin yönü
ka <- c(rep(1/nrow(ham_veri), nrow(ham_veri))) #kriter ağırlıkları. Burada eşit alınmıştır.
aploco= function(km=as.matrix(km), ky=ky, ka=ka){
if (!(is.null(ky) || is.vector(ky)))
stop("Kriterlerin yönü vektör formatında olmalıdır.")
if (!((is.matrix(km) || (is.data.frame(km)))))
stop("Karar matrisi, matris veya tablo formatında olmalıdır.")
if (!(is.null(ka) || is.vector(ka)))
stop("Kriter ağırlıkları vektör formatında olmalıdır.")
if (!(length(ka) == nrow(km)))
stop("Kriter ağırlıklarının sayısı, karar matrisi satır sayısına eşit olmalıdır")
if (missing(ky))
stop("Kriterin yönü girilmelidir.")
colnames(km)=paste("A", 1:ncol(km), sep="") #alternatifler
rownames(km)=paste("K", 1:nrow(km), sep="") #kriterler
km2 <- km
ky1=ifelse(ky=="max", 1, 0)
for (r in 1:nrow(km))
for (c in 1:ncol(km))
if (ky1[r])
{
km2[r,c] <- max(km[r,]) - km[r,c]
} else
{
km2[r,c] <- km[r,c] - min(km[r,])
}
km3 <- 1 / logb(km2 + 2)
weights <- ka
km4 <- km3 * weights
beta_j <- apply(km4, 1, max)
beta_sj <- sum(beta_j)
a_si <- apply(km4, 2, sum)
theta_scores <- a_si / beta_sj
return(list(Karar_Matrisi=as.matrix(km), Beta=beta_sj, Sonuc=theta_scores))
}
aploco(km=ham_veri, ky=ky, ka=ka)
aploco fonksiyonunun çalıştırılmasından sonra elde edilen sonuçlar aşağıda verilmiştir. aploco fonksiyonu çalıştırıldığında 3 farklı türde çıktı elde edilmektedir. İlk çıktımız karar matrisimiz, ikinci çıktımız Beta katsayısı, üçüncü çıktımız ise Theta skorlarını içeren sonuç çıktılarıdır. Sonuçlarının yorumu; en yüksek Theta skoruna sahip alternatif en iyi alternatif olarak yorumlanmaktadır. aploco(km=ham_veri, ky=ky, ka=ka)$Karar_Matrisi yazılırsa doğrudan karar matrisine ulaşılmaktadır. Diğer çıktılara ulaşmak için de aynı yol izlenir.
$Karar_Matrisi
A1 A2 A3 A4 A5
K1 4 2 5 8 4
K2 9 6 6 2 5
K3 4 2 4 2 1
K4 1 2 5 4 5
K5 2 6 4 5 6
K6 3 4 11 2 3
K7 6 10 7 2 5
K8 2 7 5 6 5
K9 2 2 5 9 8
K10 4 4 6 6 3
K11 4 2 7 3 5
K12 3 9 4 7 5
K13 6 6 6 9 6
K14 5 9 7 4 7
K15 6 7 4 5 3
K16 4 7 2 7 4
K17 8 6 4 7 4
K18 2 2 6 6 8
K19 4 3 7 3 6
K20 4 1 2 5 6
$Beta
[1] 1.442695
$Sonuc
A1 A2 A3 A4 A5
0.6339312 0.5876896 0.5732066 0.6190514 0.6533052
Sentetik veriler üzerinden üretilen grafikler
Bu kısımda aploco fonksiyonu ile üretilen Theta skorlarının büyükten küçüğe doğru grafiği verilmiştir.
ghamveri=aploco(km=ham_veri, ky=ky, ka=ka)$Sonuc
a=as_tibble(ghamveri)
tibble(Alternatif=paste("A", 1:ncol(ham_veri), sep=""), Theta=round(a$value,3)) %>% mutate(Alternatif = fct_reorder(Alternatif, Theta)) %>%
ggplot(aes(x=Alternatif, y=Theta)) +
geom_point(size=3) +
geom_segment(aes(x=Alternatif,
xend=Alternatif,
y=0,
yend=Theta)) +
geom_text(aes(label=Theta), vjust=-0.3, size=3.5)+
labs(title="APLOCO Sonuçları",
subtitle="Sentetik Veriler Üzerinde Bir Deneme",
caption="APLOCO by Tevfik Bulut") +
theme(axis.text.x = element_text(angle=65, vjust=0.6))+
coord_flip() +
theme_pander()
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen grafik aşağıda verilmiştir. Elde edilen Theta skorlarına göre en iyi 3 alternatif sırasıyla A5 (0,653), A5 (0,634), A4 (0,619)’tür.
Alternatif olarak aşağıdaki kod bloğunun çalıştırılmasıyla da bir diğer grafik elde edilmiştir.
ghamveri=aploco(km=ham_veri, ky=ky, ka=ka)$Sonuc
a=as_tibble(ghamveri)
tibble(Alternatif=paste("A", 1:ncol(ham_veri), sep=""), Theta=round(a$value,3)) %>% mutate(Alternatif = fct_reorder(Alternatif, Theta)) %>%
ggplot(aes(x=Alternatif, y=Theta)) +
geom_bar(stat="identity", fill="steelblue")+
geom_text(aes(label=Theta), vjust=-0.3, size=5)+
coord_flip() +
labs(title="APLOCO Sonuçları",
subtitle="Sentetik Veriler Üzerinde Bir Deneme",
caption="APLOCO by Tevfik Bulut") +
theme_pander()
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen grafik aşağıda verilmiştir.
Microsoft excel veri seti üzerinde bir deneme
Bu kısımda yapılan tek şey önceki kısımlarda oluşturulmuş olan aploco() fonksiyonunda xlsx uzantılı dosyaların okutulması ve sonuçların elde edilmesidir. Amaç burada aploco() fonksiyonunun kullanımını daha da somutlaştırmaktır. Kullanılan veri setini aşağıdan indirebilirsiniz.
Aşağıda yazılan kod bloğunda ilk olarak xlsx uzantılı karar matrisi veri seti okutulmuş, daha sonra oluşturulmuş aploco fonksiyonu çalıştırılmıştır.
ham_veri <- read_excel("veri.xlsx") # Karar matrisi veri seti
ky <- c("max","max","min","max","max","max","max", "max","max") #kriterin yönü
ka <- c(rep(1/nrow(ham_veri), nrow(ham_veri))) #kriter ağırlıkları. Burada eşit alınmıştır. Dilerseniz farklı ağırlık düzeyleri belirleyebilirsiniz.
aploco(km=ham_veri, ky=ky, ka=ka)
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde sonuçlar aşağıda verilmiştir.
$Karar_Matrisi
A1 A2 A3 A4 A5 A6 A7 A8 A9
K1 126.62954 817.09613 251.56980 799.78515 843.6078 223.3427 574.53120 259.64288 476.8781
K2 196.88632 555.98647 88.96791 262.68566 931.9684 391.2170 30.71076 107.64973 975.4909
K3 691.05775 28.96127 923.14351 88.47388 838.0159 836.2827 482.81042 547.55379 720.0249
K4 137.17599 143.59808 819.86658 663.62865 845.9124 423.2560 242.92326 772.62251 791.7840
K5 790.84419 626.98705 390.39660 797.66728 699.5236 168.8516 694.02473 9.28737 271.6897
K6 59.87343 11.29450 196.99769 670.11798 781.9486 655.3678 537.06657 901.60726 482.2817
K7 917.69371 873.84405 80.63714 392.66143 692.6321 644.3950 665.70450 561.60266 289.8865
K8 843.69913 337.34520 508.62614 816.46731 379.1500 217.0960 364.51790 513.27828 446.0603
K9 511.98235 335.34848 311.47633 411.64349 661.0110 850.6466 156.20859 901.67100 667.4504
$Beta
[1] 1.442695
$Sonuc
A1 A2 A3 A4 A5 A6 A7 A8 A9
0.3287764 0.2295093 0.1191135 0.2380817 0.3274032 0.1192536 0.1171788 0.3137233 0.2189662
Microsoft Excel veri seti üzerinden üretilen grafikler
Bu kısımda aploco fonksiyonu ile üretilen Theta skorlarının büyükten küçüğe doğru grafiği verilmiştir.
ghamveri=aploco(km=ham_veri, ky=ky, ka=ka)$Sonuc
a=as_tibble(ghamveri)
tibble(Alternatif=paste("A", 1:ncol(ham_veri), sep=""), Theta=round(a$value,3)) %>% mutate(Alternatif = fct_reorder(Alternatif, Theta)) %>%
ggplot(aes(x=Alternatif, y=Theta)) +
geom_point(size=3) +
geom_segment(aes(x=Alternatif,
xend=Alternatif,
y=0,
yend=Theta)) +
geom_text(aes(label=Theta), vjust=-0.3, size=3.5)+
labs(title="APLOCO Sonuçları",
subtitle="Excel Veri Seti Üzerinde Bir Deneme",
caption="APLOCO by Tevfik Bulut") +
theme(axis.text.x = element_text(angle=65, vjust=0.6))+
coord_flip() +
theme_pander()
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen grafik aşağıda verilmiştir. Grafikte en yüksek Theta skoruna sahip alternatif en iyi alternatif olarak yorumlanmaktadır. Elde edilen Theta skorlarına göre en iyi 3 alternatif sırasıyla A1 (0,329), A5 (0,327), A8 (0,314)’dir.
Sonuç
Özetle, bu çalışmayla çok kriterli karar verme (ÇKKV) yöntemi olarak geliştirilen APLOCO metodunun R programlama dilinde oluşturulan aploco() fonksiyonu ile uygulanmasına yer verilerek bu yöntemi kullanacak akademi ve saha çalışanlarına bir katkı sunulması amaçlanmıştır.
Faydalı olması dileğiyle.
Bilimle ve teknolojiyle kalınız.
Bu çalışmaya atıf yapmak için aşağıdaki alıntı gösterme örneklerini kullanabilirsiniz.
- Bulut T (2018) A new multi criteria decision making method: approach of logarithmic concept (APLOCO). Int J Artif Intell Appl 9:15–33. https://doi.org/10.5121/ijaia.2018.9102
- Bulut, T. & Genç, B. (2022). R’da Çok Kriterli Karar Verme Yöntemi Olarak APLOCO’nun Fonksiyonu ve Grafiği, URL: https://tevfikbulut.net/cok-kriterli-karar-verme-yontemi-olarak-aploconun-fonksiyonu-ve-grafigi/
Not/Note
- Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
- It can not be cited or copied without referencing.
Yararlanılan Kaynaklar
- Bulut T (2018) A new multi criteria decision making method: approach of logarithmic concept (APLOCO). Int J Artif Intell Appl 9:15–33. https://doi.org/10.5121/ijaia.2018.9102. https://arxiv.org/abs/1802.04095.
- Microsoft Office Excel 2016. Microsoft Corporation.
- R Core Team (2017). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL: https://www.R-project.org/.
- JJ Allaire and Yihui Xie and Jonathan McPherson and Javier Luraschi and Kevin Ushey and Aron Atkins and Hadley Wickham and Joe Cheng and Winston Chang and Richard Iannone (2021). rmarkdown: Dynamic Documents for R. R package version 2.11. URL https://rmarkdown.rstudio.com.
- Bildiri Makalesi, URL: http://muh.karabuk.edu.tr/bilgisayar/icatces/proceeding_book_2019.pdf, Ulaşım Tarihi: 22.05.2019. Karabük Üniversitesi Bilgisayar Mühendisliği öğretim görevlileri Prof. Dr. Oğuz FINDIK ve Emrah ÖZKAYNAK tarafından kompleks ağ analizi (complex netwok analysis) alanında düğüm ağırlıklarının hesaplanmasında ve merkezi metriklerin belirlenmesinde APLOCO metodu kullanılmıştır.
- Mishra, Amit Kumar, Joshi, Nisheeth, and Mathur, Iti. ‘A Fuzzy Based Integrated Model for Identification of Vital Node in Terrorist Network Using Logarithmic Concept’. 1 Jan. 2020 : 1 – 15. https://content.iospress.com/articles/journal-of-intelligent-and-fuzzy-systems/ifs191899.
- Fındık, O., Özkaynak, E. Link prediction based on node weighting in complex networks. Soft Comput 25, 2467–2482 (2021). https://doi.org/10.1007/s00500-020-05314-8.
- Özkaynak, Emrah . (2020). Karmaşık Ağlarda Düğüm Ağırlıklı Bağlantı Yöntemlerinin Geliştirilmesi. Doktora Tezi, Karabük Üniversitesi Bilgisayar Mühendisliği. Doktora tezi. http://acikerisim.karabuk.edu.tr:8080/xmlui/bitstream/handle/123456789/1011/10372612.pdf?sequence=1
- http://muh.karabuk.edu.tr/bilgisayar/icatces/proceeding_book_2019.pdf, Ulaşım Tarihi: 22.05.2019
- Kompleks Ağlarda APLOCO Metodunun Kullanımı Üzerine Bir Vaka Çalışması. https://tevfikbulutcom.wordpress.com/2019/05/16/aploco-cok-kriterli-karar-metodu-uzerine-bir-vaka-calismasi/
- Logaritmik Konsept Yaklaşımı [APLOCO].https://tevfikbulut.net/logaritmik-konsept-yaklasimi-aploco/