NB. DEA (data envelopment analysis). Pareto efficiency frontier. NB. kasutatud on J keelt (jsoftware.com) NB. DEA output/input on meie näites ajakulu/transpordikulu. NB. https://en.wikipedia.org/wiki/Pareto_efficiency + transpordikulu =: 10* ?9#0 6.19391 8.91663 8.88594 7.16629 9.962 4.77721 9.46355 9.25092 8.1822 + ajakulu =: 1+?9#6 3 4 5 1 6 6 4 6 3 -/~ ajakulu NB. ajakulude paarikaupa vahed 0 _1 _2 2 _3 _3 _1 _3 0 1 0 _1 3 _2 _2 0 _2 1 2 1 0 4 _1 _1 1 _1 2 _2 _3 _4 0 _5 _5 _3 _5 _2 3 2 1 5 0 0 2 0 3 3 2 1 5 0 0 2 0 3 1 0 _1 3 _2 _2 0 _2 1 3 2 1 5 0 0 2 0 3 0 _1 _2 2 _3 _3 _1 _3 0 *-/~ ajakulu NB. sign(ajakulude paarikaupa vahed) 0 _1 _1 1 _1 _1 _1 _1 0 1 0 _1 1 _1 _1 0 _1 1 1 1 0 1 _1 _1 1 _1 1 _1 _1 _1 0 _1 _1 _1 _1 _1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 1 0 _1 1 _1 _1 0 _1 1 1 1 1 1 0 0 1 0 1 0 _1 _1 1 _1 _1 _1 _1 0 1+ *-/~ ajakulu NB. 1+sign(ajakulude paarikaupa vahed) 1 0 0 2 0 0 0 0 1 2 1 0 2 0 0 1 0 2 2 2 1 2 0 0 2 0 2 0 0 0 1 0 0 0 0 0 2 2 2 2 1 1 2 1 2 2 2 2 2 1 1 2 1 2 2 1 0 2 0 0 1 0 2 2 2 2 2 1 1 2 1 2 1 0 0 2 0 0 0 0 1 NB. teise rea esimese lahtri väärtus 2 näitab, et teise pakkumise ajakulu oli suurem kui esimese pakkumise ajakulu NB. meid huvitavad aga need pakkumised, mille ajakulu on väiksem. NB. seega peaks kas sign() funktsiooni väärtust korrutama -1ga, või siis 1+sign() funktsiooni väärtuse lahutama väärtusest 2. 1- *-/~ ajakulu NB. nüüd on lahtris (2,1) väärtus 0 ja lahtris (1,2) väärtus 2, mis näitab et esimese pakkumise lühem aeg teisest pakkumisest on parem 1 2 2 0 2 2 2 2 1 0 1 2 0 2 2 1 2 0 0 0 1 0 2 2 0 2 0 2 2 2 1 2 2 2 2 2 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 2 0 2 2 1 2 0 0 0 0 0 1 1 0 1 0 1 2 2 0 2 2 2 2 1 NB. sama tuleb nüüd läbi teha transpordikuluga. Jällegi, mida väiksem transpordikulu, seda parem. 1- *-/~ transpordikulu 1 2 2 2 2 0 2 2 2 0 1 0 0 2 0 2 2 0 0 2 1 0 2 0 2 2 0 0 2 2 1 2 0 2 2 2 0 0 0 0 1 0 0 0 0 2 2 2 2 2 1 2 2 2 0 0 0 0 2 0 1 0 0 0 0 0 0 2 0 2 1 0 0 2 2 0 2 0 2 2 1 NB. nüüd tuleb need kahe kriteeriumi võrdlusmaatriksid üksteisega liita. (1- *-/~ ajakulu) + (1- *-/~ transpordikulu) 2 4 4 2 4 2 4 4 3 0 2 2 0 4 2 3 4 0 0 2 2 0 4 2 2 4 0 2 4 4 2 4 2 4 4 4 0 0 0 0 2 1 0 1 0 2 2 2 2 3 2 2 3 2 0 1 2 0 4 2 2 2 0 0 0 0 0 3 1 2 2 0 1 4 4 0 4 2 4 4 2 NB. nüüd tuleb alles jätta nende pakkumiste read või veerud, milles ei esine väärtust 0. NB. kasutagem jällegi sign() funktsiooni ja seejärel loogilist AND operaatorit. *(1- *-/~ ajakulu) + (1- *-/~ transpordikulu) NB. sign() funktsiooni vahetulemus 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 *./"1 *(1- *-/~ ajakulu) + (1- *-/~ transpordikulu) NB. AND operatsiooni tulemus ridupidi. 1 0 0 1 0 1 0 0 0 I. *./"1 *(1- *-/~ ajakulu) + (1- *-/~ transpordikulu) NB. pakkumiste indeksid, mis on Pareto piiril 0 3 5 NB. pakkumised indeksitega 0 3 5 on Pareto tõhususe piiril. |: ajakulu ,. transpordikulu 3 4 5 1 6 6 4 6 3 6.19391 8.91663 8.88594 7.16629 9.962 4.77721 9.46355 9.25092 8.1822 |: 0 3 5{ ajakulu ,. transpordikulu 3 1 6 6.19391 7.16629 4.77721 NB. nagu näha, on pakkumise 1 ajakulu kõige väiksem ja transpordikulu kõige suurem. NB. pakkumise 5 transpordikulu on kõige väiksem, aga ajakulu kõige suurem. NB. ja pakkumise 3 ajakulu ja transpordikulu on ühest pakkumisest suurem ja ühest pakkumisest väiksem. */"1 (0 3 5{ ajakulu ,. transpordikulu) NB. ajakulu ja transpordikulu korrutis. Mida väiksem, seda parem. 18.5817 7.16629 28.6633 NB. nagu näha, on pakkumine indeksiga 3 kõige parem. */"1 (ajakulu ,. transpordikulu) 18.5817 35.6665 44.4297 7.16629 59.772 28.6633 37.8542 55.5055 24.5466 NB. seda oleks saanud järeldada kohe ka algandmete pealt, aga siis ei oleks teada saanud Pareto piiril olevaid kõiki pakkumisi. /: */"1 (ajakulu ,. transpordikulu) 3 0 8 5 1 6 2 7 4 {. /: */"1 (ajakulu ,. transpordikulu) 3 NB. eesmärgiks on äriprotsessi ülesandes ära logida ka Pareto piiril paiknevad transpordipakkumised. NB. ja nende Pareto piiril paiknevate pakkumiste tuvastamiseks kasutada eraldi veebiteenust, millele antakse andmed ette XMCDA formaadis. NB. sisendi ja väljundi formaadiks on XMCDA: DEASMAACCRPreferenceRelations-PUT NB. https://www.decision-deck.org/ws/wsd-DEASMAACCRPreferenceRelations-PUT.html