Für die Entwicklung von WoodWorks habe ich mir einige Anleihen an der Natur genommen, vorallem, was Gruppen, einzelne Individuen innerhalb der Gruppe sowie deren Selektion und Evolution betrifft.
Ein Individuum in WoodWorks wird geboren, und zwar als Kombination einer Grundplatte mit all seinen in spezieller Art auf der Platte angeordneten Teilen. Die spezielle Art bedeutet, dass die Schneidbarkeit gegeben ist, sowie diverse weitere Parameter wie Schnittbreite, Drehbarkeit, Bänderung etc eingehalten werden. Auf den Verschnitt wird zu diesem Zeitpunkt nicht geachtet. Individuen, die diesen grundsätzlichen Kriterien nicht entsprechen, werden erst gar nicht ge- bzw. erzeugt bzw. sind nicht lebensfähig.
Wie auch in der Natur bilden Individuen Gruppen, wie zB Herden, Schwärme, Rudel oder Stämme. Extreme Einzelgänger dürfen üblicherweise nicht mitspielen und wollen wir hier nicht betrachten (Außer natürlich, ein einzelnes Individuum erfüllt die Gruppenkriterien, d.h alle Teile passen auf eine Platte, siehe unten).
Das Zusammengehörigkeitsmerkmal einer Gruppe im Sinne dieser Optimierung ist, dass exakt alle Teile in der jeweiligen Gruppe - augeteilt auf alle ihre Gruppenmitglieder - vorhanden sind, keines mehr und keines weniger. Es ist also ein kompletter Zuschnitt mit allen dafür benötigten Platten und allen Teilen der Stückliste, wie sie in der TopTen-Liste angezeigt werden.
Es liegt in der Natur von Gruppen, in Konkurrenz zu treten oder sich zu bekämpfen, meist, weil nicht genügend Resourcen für alle vorhanden sind (es gibt aber auch weniger rationale Gründe, siehe tägliche Nachrichten). Die Gewinner dieser Auseinandersetzung werden weiter bestehen, für die Verlierer endet ihre Geschichte an diesem Punkt. In der Natur gibt es unterschiedliche Gründe, warum eine Gruppe über die andere siegt, sei es zB höhere Brutalität, Aggression oder intelligentere Methoden. Jedenfalls findet durch diesen Konkurrenzkampf eine Auslese statt, die im besten Fall zu einer Weiterentwicklung führt und möglicherweise auch beim Menschen zu so etwas ähnlichem wie Intelligenz geführt hat, wobei Brutalitä und Aggression auch nicht zu kurz kamen

(es bedeutet daher nicht zwingend, dass eine weniger entwickelte Gruppe der höher entwickelten Gruppe unterliegt, sondern nur, dass sie den Kampf verloren hat. Die Einstufung der Höhe der Entwicklung bleibt dem Betrachter von außen überlassen, in WoodWorks schaffen wir dafür ein recht klares Kriterium: den Verschnitt)
Auch in WoodWorks findet also ein Konkurrenzkampf der Gruppen statt, nur weniger brutal und unspektakulärer. Ein höheres Wesen (zumindest aus der Sicht der Gruppe bzw. des Individuums) bestimmt an Hand des Gesamtverschnittes der Gruppe den Sieger. Auch müssen nicht alle Mitglieder der unterlegenen Gruppe sterben, so gnadenlos bin ich nicht, einzelne Individuen mit besonders guten Eigenschaften (=Verschnitt) dürfen bei neu entstehenden Gruppen wieder mit dabei sein. In erfolgreichen Gruppen haben naturgemäß auch Mitglieder mit weniger positiven Eigenschaften ihre Daseinsberechtigung, wenn sie zur Erfüllung der Gruppenkriterien (exakt alle vorhandenen Teile verwendet) notwendig sind. Klingt irgendwie sehr sozial. So findet eine Selektion sowohl auf Ebene der Gruppen als auch auf der Ebene der Individuen statt, die zu einer Weiterentwicklung und somit zu einer Verbesserung des Verschnitte führt.
In der Natur ist die Weiterentwicklung an die Dauer eines Generationszyklus gebunden, daher können/konnten sich Insekten besser und schneller anpassen bzw. weiterentwickeln, als zB die Dinosaurier. In WoodWorks gibt es aus diesen Performancegründen nur ganzahlige Operationen, somit dauert ein Zyklus für übliche Zuschnitte auf üblichen Computern nur wenige Millisekunden.
Vielleicht werden mit dieser, hoffentlich halbwegs verständlichen Schilderung des Optimierungsvorganges auch einige Eigenheiten von WoodWorks klarer, wie zB dass nur ganzzahlige Eingaben möglich sind und es immer weiteroptimiert, bis man ein Ergebnis sehen will. Es lässt die Zuschnitte einfach weiter gegeneinender kämpfen um sie weiter zu entwickeln. Und das tut es für mehrere tausend zufriedene WoodWorks-Benutzer!
Als Programmiersprache habe ich C++ gewählt, um die Vorteile der objektorientierten Programmierung zu nutzen.