Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
<offtop>Что-то народ из песочницы активизировался) Либо отошли от нового года и увидели инвайты))</offtop>function cross(headNode1, headNode2, prob) { // Пусть r1, r2 - оценки изображений, тогда prob = r1 / (r1+r2)
var newHeadNode = new Node();
var children = [];
// Скрещивание производится отдельно для каждой пары узлов
var mainNode, addNode; // В паре выделяем главный и побочный узел
var newProb = 0;
var types = "";
if ( probability(prob) ) { // С вероятностью prob
mainNode = headNode1;
addNode = headNode2;
newProb = prob;
} else {
mainNode = headNode2;
addNode = headNode1;
newProb = 1 - prob;
}
newHeadNode.setValue( mainNode.getValue() );
newHeadNode.type = mainNode.type;
types = mainNode.type + "; " + addNode.type;
switch (types) {
case "const; const":
case "const; coord":
case "coord; const":
case "coord; coord":
case "const; func1":
case "coord; func1":
case "func1; const":
case "func1; coord":
case "const; func2":
case "coord; func2":
case "func2; const":
case "func2; coord":
for (var i = 0; i < mainNode.getNumOfChildren(); i++) {
children[i] = mainNode.getChildByNumber(i);
}
break;
case "func1; func1":
children = [
cross(
mainNode.getChildByNumber(0),
addNode.getChildByNumber(0),
newProb
)
];
break;
case "func1; func2":
children = [
cross(
mainNode.getChildByNumber(0),
addNode.getChildByNumber( randInt(0, 1) ),
newProb
)
];
break;
case "func2; func1":
children = [
cross(
mainNode.getChildByNumber(0),
addNode.getChildByNumber(0),
newProb
),
cross(
mainNode.getChildByNumber(1),
addNode.getChildByNumber(0),
newProb
)
];
break;
case "func2; func2":
children = [
cross(
mainNode.getChildByNumber(0),
addNode.getChildByNumber(0),
newProb
),
cross(
mainNode.getChildByNumber(1),
addNode.getChildByNumber(1),
newProb
)
];
break;
default:
children = [];
break;
}
for (var i = 0; i < children.length; i++) {
newHeadNode.addNode(children[i]);
}
return newHeadNode;
}

Генерация абстрактных изображений с помощью генетических алгоритмов