|
| 1 | +import munit.Assertions as A |
| 2 | + |
| 3 | +import org.expr.mcdm.Matrix |
| 4 | +import org.expr.mcdm.Direction._ |
| 5 | +import org.expr.mcdm.critic |
| 6 | +import org.expr.mcdm.sd |
| 7 | + |
| 8 | +class TestSd extends munit.FunSuite { |
| 9 | + |
| 10 | + test("Sd Example - 1") { |
| 11 | + val mat = Array( |
| 12 | + Array(391152.0, 251165, 2063102, 912, 18784, 0.009, 0.049, 0.196), |
| 13 | + Array(181681.0, 118972, 1310114, 525, 12087, 0.009, 0.042, 0.157), |
| 14 | + Array(156478.0, 105801, 993245, 708, 12279, 0.01, 0.041, 0.177), |
| 15 | + Array(57145.0, 34707, 339417, 210, 3733, 0.013, 0.055, 0.268), |
| 16 | + Array(34947.0, 17568, 340159, 77, 2015, 0.014, 0.043, 0.204), |
| 17 | + Array(32667.0, 19308, 201372, 48, 1091, 0.008, 0.029, 0.217), |
| 18 | + Array(28945.0, 18033, 117762, 48, 886, 0.007, 0.021, 0.178), |
| 19 | + Array(18893.0, 13816, 139431, 35, 943, 0.01, 0.035, 0.213), |
| 20 | + Array(18191.0, 9088, 47664, 43, 731, 0.01, 0.021, 0.186), |
| 21 | + Array(12852.0, 4185, 64770, 3, 376, 0.011, 0.075, 0.285), |
| 22 | + Array(10878.0, 7107, 11200, 1, 78, 0.003, 0.033, 0.198), |
| 23 | + Array(4958.0, 1730, 4656, 7, 274, 0.017, 0.053, 0.215), |
| 24 | + Array(3901.0, 2318, 15598, 17, 357, 0.023, 0.001, 0.155), |
| 25 | + Array(2742.0, 1042, 52632, 1, 106, 0.022, 0.1, 0.384), |
| 26 | + Array(1734.0, 771, 1894, 1, 33, 0.011, 0.125, 0.709), |
| 27 | + Array(1677.0, 568, 1941, 1, 39, 0.011, 0.129, 0.633) |
| 28 | + ) |
| 29 | + |
| 30 | + val directions = Array( |
| 31 | + Maximize, |
| 32 | + Maximize, |
| 33 | + Maximize, |
| 34 | + Minimize, |
| 35 | + Minimize, |
| 36 | + Minimize, |
| 37 | + Maximize, |
| 38 | + Maximize |
| 39 | + ) |
| 40 | + |
| 41 | + val result = sd(mat, directions) |
| 42 | + |
| 43 | + val expectedWeights = |
| 44 | + Array(0.1161, 0.1175, 0.1254, 0.1376, 0.1334, 0.1136, 0.1251, 0.1308) |
| 45 | + |
| 46 | + A.assert(Matrix.elementwise_equal(result.weights, expectedWeights, 1e-03)) |
| 47 | + } |
| 48 | + |
| 49 | +} |
0 commit comments