|
|
|
@ -89,20 +89,23 @@ export class Individual
|
|
|
|
|
this.Fitness = Math.ceil(bestCount) + 1;
|
|
|
|
|
return;
|
|
|
|
|
};
|
|
|
|
|
let area = 0;
|
|
|
|
|
let maxP: Part;
|
|
|
|
|
for (let i = 0; i < parts.length; i++)
|
|
|
|
|
let container = new Container(bin);
|
|
|
|
|
if (this.mutationRate > 0.21)
|
|
|
|
|
{
|
|
|
|
|
let p = parts[i];
|
|
|
|
|
if (p.State.PlaceOutline.Area > area)
|
|
|
|
|
let area = 0;
|
|
|
|
|
let maxP: Part;
|
|
|
|
|
for (let i = 0; i < parts.length; i++)
|
|
|
|
|
{
|
|
|
|
|
maxP = parts[i];
|
|
|
|
|
area = p.State.PlaceOutline.Area;
|
|
|
|
|
let p = parts[i];
|
|
|
|
|
if (p.State.PlaceOutline.Area > area)
|
|
|
|
|
{
|
|
|
|
|
maxP = parts[i];
|
|
|
|
|
area = p.State.PlaceOutline.Area;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (container.PutPart(maxP))
|
|
|
|
|
parts = parts.filter(p => p !== maxP);
|
|
|
|
|
}
|
|
|
|
|
let container = new Container(bin);
|
|
|
|
|
if (container.PutPart(maxP))
|
|
|
|
|
parts = parts.filter(p => p !== maxP);
|
|
|
|
|
parts = parts.filter(p =>
|
|
|
|
|
{
|
|
|
|
|
return container.PutPart(p) !== true;
|
|
|
|
|