package com.qunhe.util.nest.algorithm; import com.qunhe.util.nest.data.NestPath; import com.qunhe.util.nest.data.Segment; import com.qunhe.util.nest.util.CommonUtil; import com.qunhe.util.nest.util.Config; import org.junit.Test; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class GeneticAlgorithmTest { @Test public void ListTest() throws Exception{ List<Segment> s1 = new ArrayList<Segment>(); s1.add(new Segment(1,2)); List<Segment> s2 = new ArrayList<Segment>(); s2.add(s1.get(0)); s1.get(0).setX(5); System.out.println(s1.get(0).getX()); System.out.println(s2.get(0).getX()); } @Test public void swapTest() throws Exception{ List<Segment> s1 = new ArrayList<Segment>(); s1.add(new Segment(1,2)); s1.add(new Segment(3,4)); Collections.swap(s1 , 0,1); for(Segment s : s1 ){ System.out.println(s.getX()+" , "+ s.getY()); } } @Test public void sortTest() throws Exception{ Individual i1 = new Individual(); i1.fitness = 2; Individual i2 = new Individual(); i2.fitness = 1; List<Individual> individuals = new ArrayList<Individual>(); individuals.add(i1);individuals.add(i2); Collections.sort(individuals); System.out.println(individuals.get(0).fitness); } @Test public void indexOfTest() throws Exception{ Segment s1 = new Segment(1,2); Segment s2 = new Segment(3,4); List<Segment> segments = new ArrayList<Segment>(); segments.add(s1);segments.add(s2); List<Segment> segments1 = new ArrayList<Segment>(); for(Segment s : segments ){ segments1.add(new Segment(s)); } System.out.println(segments1.indexOf(s1)); } @Test public void GATest() throws Exception{ Config config = new Config(); Segment s1 = new Segment(0,0); Segment s2 = new Segment(0,200); Segment s3 = new Segment(200,200); Segment s4 = new Segment(200,0); NestPath bin = new NestPath(config); bin.setRotation(0); bin.add(s1);bin.add(s2);bin.add(s3);bin.add(s4); Segment t1 = new Segment(0,300); Segment t2 = new Segment(0,400); Segment t3 = new Segment(100,400); Segment t4 = new Segment(100,300); NestPath poly1 = new NestPath(config); poly1.setRotation(4); poly1.add(t1);poly1.add(t2);poly1.add(t3);poly1.add(t4); Segment q1 = new Segment(400,0); Segment q2 = new Segment(420,0); Segment q3 = new Segment(420,50); Segment q4 = new Segment(400,50); NestPath poly2 = new NestPath(config); poly2.setRotation(2); poly2.add(q1);poly2.add(q2);poly2.add(q3);poly2.add(q4); Segment i1 = new Segment(20,320); Segment i2 = new Segment(20,370); Segment i3 = new Segment(70,370); Segment i4 = new Segment(70,320); NestPath in = new NestPath(config); in.add(i1); in.add(i2); in.add(i3); in.add(i4); List<NestPath> parts = new ArrayList<NestPath>(); parts.add(in);parts.add(poly2); parts.add(poly1); List<NestPath> tree = CommonUtil.BuildTree(parts,config.CURVE_TOLERANCE); CommonUtil.offsetTree(tree , 0.5 * config.SPACING); List<NestPath> adam = new ArrayList<NestPath>(); for(NestPath np : tree ){ NestPath clone = new NestPath(np); adam.add(clone); } Collections.sort(adam); GeneticAlgorithm GA = new GeneticAlgorithm(adam,bin , config); Individual individual = null; for(int i =0 ;i< GA.config.POPULATION_SIZE;i++){ if( GA.population.get(i).getFitness() < 0 ){ individual = GA.population.get(i); break; } } if( individual == null ){ GA.generation(); individual = GA.population.get(1); } // System.out.println(GA.binBounds); // System.out.println("size = " +GA.population.size()); // for(int i = 0; i<GA.population.size() ;i ++){ // System.out.println("============================================="); // System.out.println(GA.population.get(i)); // } } }