flash on 2012-5-19
♥0 |
Line 23 |
Modified 2012-05-19 01:52:42 |
MIT License
archived:2017-03-20 03:50:13
ActionScript3 source code
/**
* Copyright TmskSt ( http://wonderfl.net/user/TmskSt )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/bbfN
*/
package {
import com.actionscriptbible.Example;
public class TwoPointCrossover extends Example {
// 2点交叉
// 自信はない
public function TwoPointCrossover() {
crossover(parseInt("10101010", 2), parseInt("11111111", 2), 3, 5);
}
private function crossover(n:/*Genotype*/uint, m:/*Genotype*/uint, sAd:uint, eAd:uint):void {
//if (g1.size != g2.size) return;
trace("n:" + n.toString(2), "m:" + m.toString(2));
var k:uint = 0, p:uint = 0, i:int = 0;
const size:uint = 8, L:int = size - sAd, R:int = size - eAd;
k = Math.pow(2, R) - 1, p = Math.pow(2, L - R) - 1;
var na:uint = n >> L, nb:uint = n & k, nx:uint = n >> R & p;
var ma:uint = m >> L, mb:uint = m & k, mx:uint = m >> R & p;
var c:uint = (na << L - R | mx) << R | nb, c2:uint = (ma << L - R | nx) << R | mb;
trace("k:" + k.toString(2), "p:" + p.toString(2));
trace(na.toString(2), nx.toString(2), nb.toString(2));
trace(ma.toString(2), mx.toString(2), mb.toString(2));
trace("c:" + c.toString(2), "c2:" + c2.toString(2));
}
}
}