165 lines
4.4 KiB
Plaintext
165 lines
4.4 KiB
Plaintext
<snippet>
|
|
<subclass>afryca.ase.Snippet</subclass>
|
|
<file></file>
|
|
<category>Library</category>
|
|
<name>adapters</name>
|
|
<description>Adapters</description>
|
|
<code>
|
|
var adapters = (typeof exports === "undefined")?(function adapters() {}):(exports);
|
|
if(typeof global !== "undefined") { global.adapters = adapters; }
|
|
|
|
adapters.toMultidimensionalArray = function toMultidimensionalArray(value, type) {
|
|
var lengths = [];
|
|
var aux = value;
|
|
while (Array.isArray(aux)) {
|
|
lengths[lengths.length] = aux.length;
|
|
aux = aux[0];
|
|
}
|
|
var depth = lengths.length;
|
|
|
|
var ResultType = Java.type(type);
|
|
if (depth < 2) {
|
|
return Java.to(value, type);
|
|
} else {
|
|
var result = eval('new ResultType(' + lengths[0] + ')');
|
|
var simpleType = type.substring(0, type.length() - 2);
|
|
for (var i = 0; i < result.length; i++) {
|
|
result[i] = adapters.toMultidimensionalArray(value[i], simpleType);
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
|
|
adapters.toNumber = function toNumber(value) {
|
|
try {
|
|
var DoubleType = Java.type('java.lang.Double');
|
|
var number = DoubleType.valueOf(value);
|
|
var NumberType = Java.type('java.lang.Number');
|
|
return (NumberType.class.isInstance(number))
|
|
? NumberType.class.cast(number)
|
|
: null;
|
|
} catch (err) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
adapters.toDouble = function toDouble(value) {
|
|
var number = adapters.toNumber(value);
|
|
return (number != null)
|
|
? number.doubleValue()
|
|
: null;
|
|
}
|
|
|
|
adapters.toInteger = function toInteger(value) {
|
|
var number = adapters.toNumber(value);
|
|
return (number != null)
|
|
? number.intValue()
|
|
: null;
|
|
}
|
|
|
|
adapters.fuzzyValue2SaatyValue = function fuzzyValue2SaatyValue(value) {
|
|
return Math.pow(9, 2 * value - 1);
|
|
}
|
|
|
|
adapters.fuzzyRelation2SaatyRelation = function fuzzyRelation2SaatyRelation(relation) {
|
|
var elements = relation.length;
|
|
var result = new Array(elements);
|
|
for (var i = 0; i < elements; i++) {
|
|
result[i] = new Array(elements);
|
|
for (var j = 0; j < elements; j++) {
|
|
result[i][j] = adapters.fuzzyValue2SaatyValue(relation[i][j]);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
adapters.saatyValue2FuzzyValue = function saatyValue2FuzzyValue(value) {
|
|
return (1 + (Math.log(value) / Math.log(9)))/2;
|
|
}
|
|
|
|
adapters.saatyRelation2FuzzyRelation = function saatyRelation2FuzzyRelation(relation) {
|
|
var elements = relation.length;
|
|
var result = new Array(elements);
|
|
for (var i = 0; i < elements; i++) {
|
|
result[i] = new Array(elements);
|
|
for (var j = 0; j < elements; j++) {
|
|
result[i][j] = adapters.saatyValue2FuzzyValue(relation[i][j]);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
adapters.fpr2jsArray = function fpr2jsArray(preference) {
|
|
var result;
|
|
var elements = preference.getNumberOfAlternatives();
|
|
result = new Array(elements);
|
|
for (var i = 0; i < elements; i++) {
|
|
result[i] = new Array(elements);
|
|
for (var j = 0; j < elements; j++) {
|
|
result[i][j] = preference.getValue(i | 0, j | 0);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
adapters.fpr2jsSaatyRelation = function fpr2jsSaatyRelation(preference) {
|
|
var jsFuzzyPreferences = adapters.fpr2jsArray(preference);
|
|
return adapters.fuzzyRelation2SaatyRelation(jsFuzzyPreferences);
|
|
}
|
|
|
|
adapters.preferencesAsVectorsArray = function preferecesAsVectorsArray(preferences) {
|
|
var result = [];
|
|
var preference;
|
|
var preferencesArray = preferences[0].getPreferences();
|
|
for (var p = 0; p < preferences.length; p++) {
|
|
preference = [];
|
|
for (var i = 0; i < preferencesArray.length; i++) {
|
|
for (var j = 0; j < preferencesArray[i].length; j++) {
|
|
if(preferences[p] instanceof DecisionMatrix) {
|
|
preference[preference.length] = preferences[p].getValue(i | 0, j | 0);
|
|
} else {
|
|
if (i != j) {
|
|
preference[preference.length] = preferences[p].getValue(i | 0, j | 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
result[p] = preference;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
adapters.matrixAsVectorsArray = function matrixAsVectorsArray(preferences) {
|
|
var result = [];
|
|
var preference;
|
|
for (var p = 0; p < preferences.length; p++) {
|
|
preference = [];
|
|
for (var i = 0; i < preferences[p].length; i++) {
|
|
for (var j = 0; j < preferences[p][i].length; j++) {
|
|
preference[preference.length] = preferences[p][i][j];
|
|
}
|
|
}
|
|
result[p] = preference;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
adapters.arrayListAsVector = function arrayListAsVector(arrayList) {
|
|
var result = [];
|
|
for (var i = 0; i < arrayList.size(); i++) {
|
|
result[i] = arrayList.get(i);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
adapters.copyNElementsVector = function copyNElementsVector(vector, n) {
|
|
var result = [];
|
|
for(var i = 0; i < n; i++){
|
|
result[i] = vector[i];
|
|
}
|
|
return result;
|
|
}
|
|
|
|
adapters
|
|
</code>
|
|
</snippet> |