<<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*)​​Fori=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;​​​​Fori=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}];​​ ​​;