<<Radia`;gap = 10;Nper = 1;per = 70;C1 = {1,0,0};C2 = {0,0,1};thcn = 0.001;lp = {90,17.5,25};MaxIt = 1;NmagnetInPeriod = 5;nPop = Nper*NmagnetInPeriod*2;pc = 0.8;nc = 3; (*number of crossover*)varmin = 1.199;varmax = 1.2;poplist = {};popcrossover = {};popmutation = {};totalpop = {};costlist = {};bestcostslist = {};Grp = radObjCnt[{}];y = lp[[2]]/4;x = lp[[1]]/2;z = lp[[3]]/2;
(*UNDER MAGNETS*)Fori=1, i<=Nper,i++, P1 = RandomReal[{varmin,varmax}]; M1 = radObjRecMag[{x,y,z},{lp[[1]],lp[[2]]/2,lp[[3]]},{0,0,P1}]; AppendTo[poplist,{0,0,P1}]; AppendTo[popcrossover ,{0,0,P1}]; AppendTo[popmutation ,{0,0,P1}]; radObjDrwAtr[M1,C1,thcn]; y+=lp[[2]]4; y+=lp[[2]]2; P2 = RandomReal[{varmin,varmax}]; M2 = radObjRecMag[{x,y,z},{lp[[1]],lp[[2]],lp[[3]]},{0,-P2,0}]; AppendTo[poplist,{0,-P2,0}]; AppendTo[popcrossover ,{0,-P2,0}]; AppendTo[popmutation ,{0,-P2,0}]; radObjDrwAtr[M2,C2,thcn]; y+=lp[[2]]2; y+=lp[[2]]2; P3 = RandomReal[{varmin,varmax}]; M3 = radObjRecMag[{x,y,z},{lp[[1]],lp[[2]],lp[[3]]},{0,0,-P3}]; AppendTo[poplist,{0,0,-P3}]; AppendTo[popcrossover ,{0,0,-P3}]; AppendTo[popmutation ,{0,0,-P3}]; radObjDrwAtr[M3,C1,thcn]; y+=lp[[2]]2; y+=lp[[2]]2; P4 = RandomReal[{varmin,varmax}]; M4 = radObjRecMag[{x,y,z},{lp[[1]],lp[[2]],lp[[3]]},{0,P4,0}]; AppendTo[poplist,{0,P4,0}]; AppendTo[popcrossover ,{0,P4,0}]; AppendTo[popmutation ,{0,P4,0}]; radObjDrwAtr[M4,C2,thcn]; y+=lp[[2]]2; y+=lp[[2]]4; P5 = RandomReal[{varmin,varmax}]; M5 = radObjRecMag[{x,y,z},{lp[[1]],lp[[2]]/2,lp[[3]]},{0,0,P5}]; AppendTo[poplist,{0,0,P5}]; AppendTo[popcrossover ,{0,0,P5}]; AppendTo[popmutation ,{0,0,P5}]; radObjDrwAtr[M5,C1,thcn]; y+=lp[[2]]4; y+=lp[[2]]4; radObjAddToCnt[Grp,{M1,M2,M3,M4,M5}]; ;
(*UPER MAGNETS*)y2=lp[[2]]/4;x2=lp[[1]]/2;z2 = lp[[3]]+lp[[3]]/2+ gap;Fori=1,i<=Nper,i++, P6 = RandomReal[{varmin,varmax}]; M6 = radObjRecMag[{x2,y2,z2},{lp[[1]],lp[[2]]/2,lp[[3]]},{0,0,P6}]; AppendTo[poplist,{0,0,P6}]; AppendTo[popcrossover ,{0,0,P6}]; AppendTo[popmutation ,{0,0,P6}]; radObjDrwAtr[M6,C1,thcn]; y2+=lp[[2]]4; y2+=lp[[2]]2; P7 = RandomReal[{varmin,varmax}]; M7 = radObjRecMag[{x2,y2,z2},{lp[[1]],lp[[2]],lp[[3]]},{0,P7,0}]; AppendTo[poplist,{0,P7,0}]; AppendTo[popcrossover ,{0,P7,0}]; AppendTo[popmutation ,{0,P7,0}]; radObjDrwAtr[M7,C2,thcn]; y2+=lp[[2]]2; y2+=lp[[2]]2; P8 = RandomReal[{varmin,varmax}]; M8 = radObjRecMag[{x2,y2,z2},{lp[[1]],lp[[2]],lp[[3]]},{0,0,-P8}]; AppendTo[poplist,{0,0,-P8}]; AppendTo[popcrossover ,{0,0,-P8}]; AppendTo[popmutation ,{0,0,-P8}]; radObjDrwAtr[M8,C1,thcn]; y2+=lp[[2]]2; y2+=lp[[2]]2; P9 = RandomReal[{varmin,varmax}]; M9 = radObjRecMag[{x2,y2,z2},{lp[[1]],lp[[2]],lp[[3]]},{0,-P9,0}]; AppendTo[poplist,{0,-P9,0}]; AppendTo[popcrossover ,{0,-P9,0}]; AppendTo[popmutation ,{0,-P9,0}]; radObjDrwAtr[M9,C2,thcn]; y2+=lp[[2]]2; y2+=lp[[2]]4; P10 = RandomReal[{varmin,varmax}]; M10 = radObjRecMag[{x2,y2,z2},{lp[[1]],lp[[2]]/2,lp[[3]]},{0,0,P10}]; AppendTo[poplist,{0,0,P10}]; AppendTo[popcrossover ,{0,0,P10}]; AppendTo[popmutation ,{0,0,P10}]; radObjDrwAtr[M10,C1,thcn]; y2+=lp[[2]]4; y2+=lp[[2]]4; radObjAddToCnt[Grp,{M6,M7,M8,M9,M10}]; ;