-
Hintergrund
-
Verschiedene Bereiche, wie z. B. Fertigung, Transport, Gesundheitswesen und andere, wenden eine operative und strategische Planung an, um Kurzzeit- und Langzeit-Vorhersagen für ein Unternehmen zu treffen. Das Unternehmen kann diese Planung einsetzen, um zu erwartende Veränderungen bei Ressourcen, Bedarf, Betriebsprozeduren oder einer bestimmten Kombination aus Erwartungen anzugehen. Das Unternehmen kann außerdem diese Planung einsetzen, um eine zeitliche Produktionsplanung und Ressourcenzuteilungen anzugehen.
-
Kurzbeschreibung der Zeichnungen
-
1A ist ein Blockdiagramm, das ein beispielhaftes System für eine operative und strategische Planung darstellt.
-
1B ist ein Blockdiagramm, das ein beispielhaftes System zum Bestimmen von Nutzlast-Schätzwerten in dem beispielhaften System aus 1A darstellt.
-
2 ist ein Blockdiagramm, das einen beispielhaften Prozess zum Bestimmen von Nutzlast-Schätzwerten als Teil der beispielhaften Systeme aus den 1A und 1B darstellt.
-
3 ist ein Flussdiagramm, das einen beispielhaften Prozess zum Erlernen von Nutzlast-Steuerungen als Teil des beispielhaften Prozesses aus 2 darstellt.
-
4 ist ein Flussdiagramm, das einen beispielhaften Prozess zum Berechnen eines Nutzlast-Schätzwerts aus Nutzlast-Steuerungen, die in dem Beispiel aus 3 bestimmt werden, darstellt.
-
5 ist ein Blockdiagramm, das eine beispielhafte Rechenvorrichtung zur Verwendung bei den beispielhaften Systemen der 1A und 1B zur Durchführung der beispielhaften Prozesse der 2–4 darstellt.
-
Detaillierte Beschreibung
-
In der folgenden Beschreibung wird Bezug auf die beigefügten Zeichnungen genommen, die einen Teil derselben bilden und in denen spezifische Beispiele veranschaulichend gezeigt sind, bei denen die Offenbarung praktiziert werden kann. Es wird darauf hingewiesen, dass andere Beispiele eingesetzt und strukturelle oder logische Veränderungen durchgeführt werden könnten, ohne von dem Schutzbereich der vorliegenden Offenbarung abzuweichen. Deshalb soll die folgende detaillierte Beschreibung nicht in einem einschränkenden Sinn aufgefasst werden und der Schutzbereich der vorliegenden Offenbarung ist durch die beigefügten Ansprüche definiert. Es wird darauf hingewiesen, dass Merkmale der verschiedenen hier beschriebenen Beispiele ganz oder teilweise miteinander kombiniert werden können, es sei denn, dies ist speziell anders angegeben.
-
Die operative und strategische Planung kann ein Bestimmen einer Menge an Arbeit, die durchgeführt werden soll, um eine Aufgabe in einem Prozess zur Erzeugung einer Ware oder Dienstleistung fertigzustellen. Bei einem Beispiel kann die Arbeitsmenge ein Bestimmen eines Nutzlast-Schätzwerts umfassen. Das Bestimmen eines Nutzlast-Schätzwerts für eine Aufgabe in einem Prozess umfasst ein Erlernen einer Nutzlast-Steuerung, ein Speichern einer erlernten Nutzlast-Steuerung in einer Datenbank und ein Auswerten des Nutzlast-Schätzwerts. Das Erlernen beinhaltet ein Anwenden eines Maschinenlernens zur Verarbeitung von Information zur Bestimmung einer erlernten Nutzlast-Steuerung, die der Aufgabe in dem Prozess entspricht. Das Auswerten des Nutzlast-Schätzwerts umfasst ein Durchsuchen der Datenbank nach einer Mehrzahl von Nutzlast-Steuerungen, die für die Aufgabe relevant sind, einschließlich der erlernten Nutzlast-Steuerung, Bestimmen, ob eine Bedingung der erlernten Nutzlast-Steuerung erfüllt ist, und Anwenden der Nutzlast-Steuerung zur Bestimmung des Nutzlast-Schätzwerts unter Verwendung von Prozessinformationen, wenn die Bedingung der erlernten Nutzlast-Steuerung erfüllt ist. Nutzlast-Schätzwerte, die auf diese Weise bestimmt werden, sind dynamisch und adaptiv gegenüber Veränderungen an den Prozessen zur Erzeugung von Waren und Dienstleistungen, sowie Erzeugung wiederverwendbarer Nutzlast-Steuerungen, die bei anderen Umständen angewendet werden können.
-
1A stellt ein beispielhaftes System 100 für eine operative und strategische Planung dar. Ein Beispiel des Systems 100 kann mit Prozessinformationen 102 verwendet werden, wie z. B. Informationen, die aus einem Herstellungsprozess entwickelt werden, wie z. B. zweidimensionalem Drucken oder dreidimensionalem Drucken, oder einem anderen Prozess in einem ausgewählten Bereich. Der Prozess wird verwendet, um ein Produkt zu schaffen, das allgemein abhängig von dem Bereich, das heißt dem Auftrag eines Kunden, Waren und Dienstleistungen umfassen kann. Bei einem Beispiel umfasst der Prozess einen Satz durchzuführender Aufgaben. Zum Beispiel wird die Ware aus einem Satz abhängiger Aufgaben geschaffen, wie in einem Produktionsplan beschrieben ist. Bei einem Beispiel können die abhängigen Aufgaben in einem gerichteten azyklischen Graphen dargestellt sein, der üblicherweise mit DAG abgekürzt wird (DAG = directed acyclic graph). Die Aufgaben sind als Knoten dargestellt und die Abhängigkeiten sind als die Ränder des DAG dargestellt. Die Aufgaben in dem Produktionsplan können einer Ressource, wie z. B. einer bestimmten Maschine, zugewiesen werden. In Fällen, in denen ein Prozess eine Nacharbeitsprozedur umfasst, können Nacheintrag-Ränder an den DAG angehängt werden, was zu einem gerichteten zyklischen Graphen führt. Abhängig von unterschiedlichen Modi und Produktionssituationen, kann ein fehlgeschlagener Auftrag bei einem Prozess zur Nacharbeit zu unterschiedlichen in Verarbeitungsrichtung oberhalb gelegenen Prozessen geführt werden. Weitere Beispiele kommen in Betracht.
-
Prozessinformationen 102 werden an, einen Analysierer 104 geliefert, der ein Tool, wie z. B. ein Software-Tool, ist, das auf einer Rechenvorrichtung oder einem Rechensystem abläuft. Der Analysierer 104 wendet die Prozessinformationen 102, sowie andere Informationen oder Annahmen an, um Bestimmungen über den Prozess zu treffen. Bei einem Beispiel können diese Bestimmungen Schätzwerte 106 über zukünftige Durchläufe des Prozesses 102 beinhalten. Diese Schätzwerte 104 können angewendet werden, um einen operativen und strategischen Plan 108 zu schaffen.
-
Ein Beispiel eines Schätzwerts 106, der oft bei der operativen und strategischen Planung verwendet wird, umfasst eine Vorhersage einer Menge an Arbeit, die für eine bestimmte Aufgabe des Prozesses angewendet werden soll. Ein Maß dieser Menge an Arbeit für eine Aufgabe wird als Nutzlast-Schätzwert bezeichnet. Bei einem Beispiel des kommerziellen und industriellen Druckens, das hier zur Darstellung verwendet wird, kann die Mange an Arbeit, wie sie in einem Nutzlast-Schätzwert beschrieben ist, für einen bestimmten Druckdienste-Anbieter zur Fertigstellung einer Trimm-Aufgabe eines Fotobuchs mit Stapeln ansteigen, wenn die Anzahl von Kopien über einen minimalen Nutzlast-Schätzwert ansteigt. Wenn bestimmte Parameter bekannt sind, kann die Menge an Arbeit zur Fertigstellung des Projekts bestimmt werden und Ressourcen können entsprechend zugeteilt werden.
-
Nutzlast-Schätzwerte werden üblicherweise offline bestimmt und sind auf eine bestimmte Aufgabe für eine bestimmte Maschine zu einer spezifischen Zeit zutreffend. Bei dem Beispiel des kommerziellen und industriellen Druckens kann ein Druckdienst-Anbieter, der ein Fotobuch für einen Kunden fertigt, einer Aufgabe, wie z. B. Rasterbildverarbeitung, einen Nutzlast-Schätzwert zuweisen. Der zugewiesene Nutzlast-Schätzwert, bei dieser Darstellung z. B. „40”, ist statisch und inkonsistent, wenn er in den Plan 108 zugewiesen würde. Der Nutzlast-Schätzwert ist statisch, da er sich mit Veränderungen, wie z. B. Veränderungen an Prozeduren, Betriebstaktiken und Fertigkeit oder Effizienzen der Arbeiter, über die Zeit nicht verändert oder entwickelt. Der Nutzlast-Schätzwert ist inkonsistent, da eine Rasterbildverarbeitung bei verschiedenen Auflösungen oder für unterschiedliche Größen eines Bilds schwieriger oder zeitaufwendig ist. Derartige Nutzlast-Schätzwerte erzeugen beim Planen oft keine aussagekräftigen Ergebnisse.
-
Das Bestimmen eines aussagekräftigen Nutzlast-Schätzwerts ist herausfordernd. Beispielsweise kann ein Nutzlast-Schätzwert abhängig sein von einer bestimmten Kombination eines Produkts, einer Aufgabe und Ressource, die zur Durchführung der Aufgabe eingesetzt wird. Bei der Darstellung des kommerziellen und industriellen Druckens könnte ein Nutzlast-Schätzwert zum Trimmen, oder eine Trimmaufgabe, für ein Fotobuch anders sein als eine Trimmaufgabe für ein Poster. Außerdem kann ein Nutzlast-Schätzwert für eine Trimmaufgabe für ein Fotobuch unter Verwendung einer ersten Trimmmaschine anders sein als ein Nutzlast-Schätzwert für eine zweite Trimmmaschine für das Fotobuch. Nutzlast-Schätzwerte sind abhängig von einer Produktionshistorie, wie z. B. dem Inhalt eines jüngst abgeschlossenen Prozesses, und Vorbereitungszeiten können sich unterscheiden. Ein Trimmen von Büchern mit unterschiedlichen Dicken beispielsweise beeinflusst, wie der Nutzlast-Schätzwert bestimmt wird. Außerdem können Nutzlast-Schätzwerte schnell veraltet werden, wenn Prozesse effizienter werden oder Veränderungen an Taktiken auftreten. Außerdem kann jedes Produkt unterschiedlich sein, wie z. B. in Massen-Kundenanpassungen, und statische Ansätze lassen sich bei derartigen Umständen nicht gut skalieren.
-
1B stelle ein System 110 zum Bestimmen von Nutzlast-Schätzwerten 112 unter Verwendung des Analysierers 104 dar. Das System 110 und andere Teile der Offenbarung sind lediglich zur Veranschaulichung in dem Kontext von Druckdiensten oder Druckdienst-Anbietern vorgesehen. Die dargestellten Konzepte und Techniken können auf die strategische und operative Planung in anderen Bereichen angewendet werden.
-
Wie oben dargestellt wurde, werden Prozessinformationen 102 an den Analysierer 104 geliefert. In 1B können Prozessinformationen 102 derartige Elemente beinhalten, wie z. B. einen Prozessfluss 114 für ein bestimmtes Produkt, z. B. ein Fotobuch. Der Prozessfluss 114 bei dem Beispiel liegt in der Form eines DAG oder anderen gerichteten Graphen vor. Weitere Prozessinformationen 102 können Ressourcenfähigkeiten 116, wie z. B. Ausrüstungsfähigkeiten, umfassen. Bei einem Beispiel können die Ressourcenfähigkeiten 116 unterschiedliche Merkmale oder Spezifikationen für die Maschinen umfassen, die zur Durchführung der Aufgaben in dem Prozessfluss 114 eingesetzt werden. Bei einem Beispiel können die Ressourcenfähigkeiten Spezifikationen für einen Trimmer, wie z. B. Kapazität, Durchsatz, maximale Längen und Breiten, umfassen. Weitere Elemente von Prozessinformationen 102 können Materialspezifikationen 118 und Auftragsinhalte 120 beinhalten. Materialspezifikationen können Informationen, wie z. B. Gewichte, Dicken, verwendete Beschichtungen der Substrate und Tintentyp, beinhalten. Die Auftragsinhalte 120 können Spezifikationen über den Typ von Produkten, wie z. B. den Typ von Einband, die Anzahl von Seiten, die Größe der Seiten und die Druckauflösung, beinhalten. Prozessinformationen 102 können außerdem Informationen aus Produktionsprotokollen, wie z. B. Länge der Zeit, bis eine Aufgabe in einer Warteschlange in einer Maschine eintritt, Startzeit der Aufgabe, Endzeit der Aufgabe und dergleichen, beinhalten. Die Prozessinformationen 102 können in einer Datenbank oder Datenbanken gespeichert sein und auf diese kann aus Produktionsprotokollen und Tools für Verwaltungsinformationsdienste (MIS; MIS = mangement information services)/Unternehmensressourcenplanung (ERP; ERP = enterprise resource planning) zugegriffen werden.
-
Der Analysierer 104 wendet einen Satz einer Nutzlast-Steuerung 122 auf die Prozessinformationen 102 an, um die Nutzlast-Schätzwerte 112 zu bestimmen. Eine Nutzlast-Steuerung bei einem Beispiel ist einer Aufgabe zugeordnet, einen Nutzlast-Schätzwert für die Aufgabe aufzulösen, wie z. B. eine Aufgabe, die in dem Prozessfluss 114 beinhaltet ist. Bei einem Beispiel ist eine Nutzlast-Steuerung ein Ausdruck in der Form „A => B”. A ist ein Schutz und beinhaltet eine Bedingung und B ist eine Berechnung, die den Nutzlast-Schätzwert für die Aufgabe auflöst, wenn die Bedingung erfüllt ist. Bei einem Beispiel ist A ein Boolescher Ausdruck oder Boolescher Auslöser, der als entweder wahr oder falsch auswertet, und dient als ein Schutz für die Berechnung B der Nutzlast-Steuerung. Die Berechnung wertet zu einer Zahl aus, wie z. B. einer Dezimalzahl. Die Semantik dieser beispielhaften Syntax besteht darin, dass, wenn A wahr ist, dann die Berechnung B durchgeführt wird.
-
Dieser Formalismus ist ausreichend expressiv, um einen vollständigen Entscheidungsbaum als eine Sammlung von Nutzlast-Steuerungen derart zu codieren, dass ein Element des Satzes an Nutzlast-Steuerung 122 jeden Weg in dem Entscheidungsbaum darstellt. Bei einem Beispiel kann ein Satz an Nutzlast-Steuerungen einen vollständigen Entscheidungsbaum einkapseln. Bei einem anderen Beispiel jedoch kann ein Satz von Nutzlast-Steuerungen eine oder mehrere Regeln beinhalten, und zwar bei Umständen, bei denen Auswahlmöglichkeiten nicht deterministisch entscheiden werden, oder bei denen Auswahlmöglichkeiten gegeneinander abgewogen werden sollen, und zwar aufgrund von unvollständigen Informationen, z. B. in einer Fuzzy-Logic. Weitere Konfigurationen kommen in Betracht.
-
Sowohl der Schutz als auch die Berechnung können Auftragsattribute und Maschinenfähigkeitsattribute innerhalb der Nutzlast-Steuerung beinhalten. Bei einem Beispiel können die Prozessinformationen 102 Attribute bereitstellen, die eine Anzahl von Seiten, Anzahl von Kopien, Blattgröße, Bildumfang und Maschinenkapazität umfassen. Die Nutzlast-Steuerung kann Funktionen beinhalten, die aus einer reichhaltigen Mathematik- bzw. Math-Bibliothek einer Datenbank für Konsistenz ausgewählt sind. Beispielsweise können Math-Operatoren in einem relationalen Datenbankverwaltungssystem, wie z. B. der Open Source-Implementierung MySQL, ABS() zur Rückgabe eines absoluten Werts, ACOS() zur Rückgabe eines Arcus-Cosinus, usw. umfassen.
-
Ein erstes Beispiel einer Nutzlast-Steuerung zur Bestimmung eines Nutzlast-Schätzwerts für eine Trimmaufgabe in einem Fotobuch mit Stapelung kann folgendermaßen sein:
copy >= 200 => ceil(page/max_capacity)·3
copy < 200 => 3
-
Bei diesem Beispiel basiert der Schutz auf einer Schwellenanzahl von Kopien, die geschnitten werden sollen. Wenn die Anzahl von Kopien gleich der Schwelle oder oberhalb derselben ist, wird ein Ausdruck zur Bestimmung der Obergrenze verwendet, oder eine kleinste folgende Ganzzahl oder eine Operation bestimmter Parameter des Projekts multipliziert mit einer Konstanten. Bei diesem Beispiel beträgt ceil() zumindest eins und die Konstante ist drei, so dass der Nutzlast-Schätzwert zumindest drei beträgt. Wenn jedoch die Anzahl von Kopien unterhalb der Schwelle liegt, ist der Nutzlast-Schätzwert eine gesetzte Zahl, wie z. B. drei.
-
Eine zweite beispielhafte Nutzlast-Steuerung zur Bestimmung eines Nutzlast-Schätzwerts für eine Trimmaufgabe bei einem Poster kann folgendermaßen sein:
True => max(ceil(copy/(batch_size·max_capacity)),1)
-
Bei diesem Beispiel basiert ein Nutzlast-Schätzwert für eine Trimmaufgabe bei einem Poster auf einer Formel unter Verwendung verschiedener Parameter des Projekts, ist jedoch nicht kleiner als eins. Abhängig von den verwendeten Parametern, kann der Nutzlast-Schätzwert einer Trimmaufgabe für ein Poster gemäß dem zweiten Beispiel größer oder kleiner als die Trimmaufgabe für ein Fotobuch gemäß dem ersten Beispiel sein.
-
Entsprechend kann die Nutzlast-Steuerung für jedes Produkt und für jeden Prozess, der bei diesem Produkt verwendet wird, spezifiziert sein. Eine Schwierigkeit des Verwendens von Nutzlast-Steuerungen auf diese Weise jedoch umfasst ein Aufrechterhalten und Aktualisieren der Steuerungen, wenn sich Merkmale und Taktiken ändern, manchmal ohne Benachrichtigung, wie z. B. bei einer Massen-Kundenanpassung. Für einen Druckdienst-Anbieter, der beispielsweise zehn Produkte erzeugt und zumindest zwanzig Aufgaben für jedes Produkt hat, würde der Druckdienst-Anbieter versuchen, zumindest zweihundert Nutzlast-Steuerungen aufrechtzuerhalten und zu aktualisieren.
-
2 stellt einen beispielhaften Prozess 200 zur Aufrechterhaltung und Aktualisierung von Nutzlast-Steuerungen 102 zur Bestimmung von Nutzlast-Schätzwerten dar. Vorgabe-Nutzlast-Steuerungen werden entwickelt oder verbessert, um Variationen, die während der tatsächlichen Produktion auftreten können, besser widerzuspiegeln, d. h. der Prozess erlernt Nutzlast-Steuerungen bei 202 aus den Prozessinformationen 102. Erlernte Steuerungen werden bei 204 in einer Weise in einer Datenbank gespeichert, die ein effizientes Abfragen ermöglicht. Eine Aufgabe kann mehrere zugeordnete Ausdrücke als unterschiedliche Wege in einem Entscheidungsbaum haben und der Prozess 200 schafft eine systematische Weise zur Entdeckung und Berechnung der relevanten Steuerungen für die bestimmte Aufgabe bei 206.
-
3 stellt einen beispielhaften Prozess 300 dar, der beim Erlernen oder Verfeinern von Nutzlast-Steuerungen 202 aus den Prozessinformationen 102, wie z. B. aus einem MIS/ERP-System, verwendet werden können. Die Nutzlast-Schätzwerte werden so spezifisch zugeschnitten, dass sie eine genaue Übereinstimmung mit Produktions-Prüfdaten haben. In dem Fall eines neuen Produkts oder Prozesses, d. h. eines, das/der nicht ausreichend Daten zur Verfeinerung einer Nutzlast-Steuerung aufweist, wird eine Vorgabe-Nutzlast-Steuerung zugewiesen und verwendet. Bei einem Beispiel kann eine Vorgabe-Nutzlast-Steuerung auf einer allgemeinen Nutzlast-Steuerung aus einer ähnlichen oder analogen Prozesskategorie basieren. Bei dem Beispiel eines Druckdienst-Anbieters kann ein endlicher Satz von Prozesskategorien bestimmt werden, um den vollständigen Satz von Produktionsprozessen in der Fabrik zu beschreiben. Bei einem Beispiel können die Funktionen einer Druckfabrik in etwa fünf oder sechs Kategorien verallgemeinert werden, wie z. B. Bildverarbeitung, Drucken, Schneiden, Zusammensetzen, Verpacken, oder andere Kategorien. Eine derartige Kategorie kann den Trimmprozess umfassen. Ein Trimmprozess bei einem Fotobuch kann ähnliche Attribute aufweisen wie ein Trimmprozess für ein Poster, wie z. B. Anzahl von Seiten, Druckkapazität usw. Die einzelnen Produkte können verwendet werden, um die allgemeine Nutzlast-Steuerung auf der Prozesskategorie zu spezialisieren, um den Vorgabeausdruck zu schaffen. Wenn mehr Daten, wie z. B. Prozessinformationen 102, verfügbar werden, wird die Vorgabe-Nutzlast-Steuerung verfeinert, um den tatsächlichen Nutzlast-Schätzwert genau zu erzeugen. Ein Verwenden derartiger Metainformationen aus den Prozesskategorien kann irrelevante oder nebensächliche Attribute aus den Nutzlast-Ausdrücken bzw. -Expressionen beseitigen, die traditionell ein Maschinenlernen schwierig machen können.
-
Bei dem beispielhaften Prozess 300 wird ein Maschinenlernen, oder künstliche Intelligenz, auf die Prozessinformationen 102 angewendet. Der beispielhafte Prozess 300 wendet einen evolutionären Algorithmus an, um Nutzlast-Steuerungsmodelle zu erzeugen oder erlernen. Bei dem beispielhaften Prozess 300 ist der evolutionäre Algorithmus ein Genetic Expression Programming (Genetische-Expression-Programmieren). Andere Prozesse zum Erlernen einer Nutzlast-Steuerung 202 aus den Prozessinformationen 102 können aus anderen evolutionären Algorithmen bestimmt werden, einem Neuralnetzwerktyp-Programm, wie z. B. Multilayer Perceptron, dem C4.5-Algorithmus und seinen Nachfolgern zur Erzeugung eines Entscheidungsbaums und anderen Algorithmen für künstliche Intelligenz oder Clustering bzw. Anhäufen, Regression und Klassifizierung. Eine symbolische Steuerung, wie z. B. eine, die aus dem Genetic Expression Programming oder dem C4.5-Algorithmus (oder einem Nachfolger) erlernt wird, kann beispielsweise mit anderen erlernten Steuerungen verglichen werden, um zu sehen, welche Steuerung eine effizientere Aufgabe besitzt.
-
Im Allgemeinen ist das Genetic Expression Programming ein Genotyp/Phänotyp-System, das Computerprogramme entwickelt, die in Chromosomen codiert sind. Die Chromosomen können eine fixe oder variable Länge besitzen, wobei die Chromosomen bei einem Beispiel linear sein können, wenn auch andere Beispiele in Betracht kommen. Die Organisation der Chromosomen ermöglicht die unbeschränkten und effektiven Funktionen, in dem Sinn, dass keine ungültigen Phänotypen folgen, genetischer Operatoren, wie z. B. Mutation, Transposition und Rekombination, da der Ausdruck jedes Gens in gültigen Programmen resultiert. Das Genotyp/Phänotyp-System des Gene Expression Programming umfasst einen Übertragungsmechanismus. Genotypen werden als Chromosomen übermittelt und Phänotypen als Ausdruckbäume übermittelt. Das Genetic Expression Programming verwendet gemeinschaftlich die gleiche Art von Baumdarstellung wie anderes genetisches Programmieren, wie z. B. Genetic Algorithms (genetische Algorithmen) und Genetic Programming (genetisches Programmieren). Das Genetic Expression Programming ermöglicht die Fähigkeit, die Schritte, die durch das genetische Programmieren unternommen werden, zurückzuverfolgen und neue Themen, die mit einem Überkreuzen der Phänotyp-Schwelle erzeugt werden, auszuforschen.
-
Der Prozess 300 beinhaltet ein Erhalten von Auftragsdaten und Endstücken von dem MIS/ERP-System und anderen Prüfdaten von Produktionsprotokollen bei 302. Beispiele von Endstücken bei dem, ersten beispielhaften Nutzlast-Schätzwert oben beinhalten „batch_size” und „copy” und eine Steuer-Datenbank oder Math-Bibliothek liefert Funktionen, wie „ceil” und „max” und andere Endstücke, falls zutreffend, wie z. B. π (pi). Die zur Herstellung des Produkts verwendeten Prozesse werden bei 304 gesammelt. Die Steuerungen werden als einzelne Gene eines Chromosoms erlernt und Chromosome werden zur anfänglichen Besetzung bei 306 erzeugt. In Verbindung mit dem Merkmal 306 kann eine Datenbank-Maschine ausgewählt werden, um die Gene auszuwerten und Nicht-Endstücke und eine Stelligkeit bereitzustellen, oder Anzahl von Argumenten oder Operanden in der Nutzlast-Steuerung, für das Genetic Expression Programming. Das Gene Expression Programming kann mehrere Gene in einem Chromosom codieren und kann die Iterationen, die zur Erzielung genauer Ausdrücke verwendet werden, reduzieren. Schutzmaßnahmen können separat oder zusammen mit den Berechnungen mit der Hilfe von Operatoren erlernt werden. Jedes Chromosom wird bei 308 in eine Steuerung übertragen und seine Eignung ausgewertet. Bei einem Beispiel wird die Eignung ausgewertet durch Vergleichen der Verarbeitungszeiten für die Aufgabe, wie aus den Prozessinformationen 102 bestimmt, gegenüber dem Ergebnis des Nutzlast-Schätzwerts und den Einheitsverarbeitungszeiten, für diese Aufgabe, aus dem MIS/ERP-System. Die aktualisierten Nutzlast-Ausdrücke bzw. -Expressionen werden dann bei 310 gespeichert, wie z. B. in einem Ausdruckspeicher.
-
Wenn zusätzliche Prozessinformationen 102 bei 312 verfügbar werden, wie dies z. B. der Fall bei zusätzlichen Durchläufen der Aufgabe bei 312 ist, können die Nutzlast-Steuerungen weiter verfeinert werden. Mit den zusätzlichen Prozessinformationen 102 aktualisiert oder wählt der Prozess 300 die Chromosomen mit der passenden Eignung bei 314. Eine Mutation und andere genetische Operationen, die in dem evolutionären Algorithmus verwendet werden, werden bei 316 angewendet und bei 308 werden die Chromosomen übertragen und ihre Eignung ausgewertet.
-
Die Nutzlast-Steuerungen 112 werden in einer Datenbank 204 in einem Zeichenfolgeformat als gut geformte Ausdrücke in einer effizienten Weise, um schnell verarbeitet zu werden, gespeichert. Bei einem Beispiel können Nutzlast-Steuerungen zur schnellen Wiedergewinnung indexiert werden, wie z. B. mit einer Hash-Funktion. Dies ist hilfreich für sowohl Produktionsplanungs- als auch strategische Planungsanwendungen und jede Anwendung kann nun ihre Nutzlast-Berechnung vom Rest der Anwendung entkoppeln. Bei einem Beispiel werden der Schutz und die Berechnung separat gespeichert, was eine effizientere Abfrage ergibt. Bei einem Beispiel wird an Attribute ein „@” angehängt, um globale Variablen zu unterstützen, anstelle der mathematischen Funktionen und Inhalte, die in einer speziellen Programmiersprache definiert sind, wie z. B. Structured Language Query (oder SQL; strukturierte Sprachabfrage), die entworfen ist, um mit dem relationalen Datenbanksystem zu arbeiten. Beispielsweise kann ein Schutz, der als eine Zeichenfolge in einer Datenbank gespeichert ist, folgendermaßen erscheinen:
@paperQuality=='20gsm'&&@pages>200
-
Eine Berechnung, die als eine Zeichenfolge in einer Datenbank gespeichert ist, kann folgendermaßen erscheinen:
ceil(@pages/@max_capacity)·3
-
Fähigkeitsattribute können für eine Ressourcengruppe spezifisch gemacht werden. Eine Ressourcengruppe ist eine Sammlung von Ressourcen, die Elemente haben, die gemeinsame Attribute gemeinschaftlich verwenden. Eine Ressourcengruppe kann beispielsweise Trimmmaschinen von verschiedenen Herstellern und von verschiedenen Modellen innerhalb des gleichen Herstellers umfassen. Die Ressourcengruppe kann beispielsweise „Trimmer” genannt werden und kann durch gemeinsame Attribute gekennzeichnet sein, wie z. B. Breite, Höhe, Trimmlänge hinter dem Messer und dergleichen. Ein Attribut in den Nutzlast-Ausdrücken kann für eine Ressourcengruppe spezifisch gemacht werden. So kann, wenn eine Nutzlast-Steuerung beispielsweise das Attribut „Höhe” umfasst, der tatsächliche Wert dieser Höhe zusammen mit der entsprechenden Ressourcengruppe bestimmt werden, selbst wenn die spezifische Ressource zur Durchführung der Aufgabe nicht bekannt ist.
-
Die Nutzlast-Steuerungen werden aus der Datenbank wiedergewonnen, um die Nutzlast-Schätzwerte zu berechnen, wie z. B. bei 206. Bei einem Beispiel ein Parser, z. B. ein SQL-Parser, zur Unterstützung der Berechnung der Nutzlast-Schätzwerte. Eine SQL-Maschine greift für eine effiziente Implementierung auf die Math-Bibliothek-Funktionen zu.
-
4 stellt einen beispielhaften Auswertungsprozess 400 dar. Der beispielhafte Auswertungsprozess 400 kann für alle Aufgaben angewendet werden und jede Aufgabe kann mehrere entsprechende Nutzlast-Steuerungen als unterschiedliche Wege in einem Entscheidungsbaum aufweisen. Bei dem Beispiel werden die Variablen, die bei den Steuerungen verwendet werden sollen, bei 402 mit den relevanten Attributen initialisiert. Bei einem Beispiel kann dies ein Verwenden der „SET”-Direktive von SQL umfassen, um Außenvariablen in die Abfrage einzubringen. Beispielsweise setzt diese Aussage die „copy”-Variable, die später verwendet werden soll, wie folgt:
SET @copy = 15;
-
Die relevanten Steuerungen für eine bestimmte Prozess/Produkt-Kombination für eine bestimmte Aufgabe werden bei 404 bestimmt. Bei einem Beispiel können die relevanten Prozesse über eine SQL-Abfrage gesucht werden, wie z. B.:
SELECT·FROM exps WHERE process = [process] AND product = [product]
wobei ”exps” der Name ist, der einem Satz von Nutzlast-Ausdrücken in der Datenbank gegeben ist, und wobei „process” und „product” zu dem Zeitpunkt der Abfrage geliefert werden.
-
Wenn die Abfrage bei 405 keine Nutzlast-Steuerungen entwickelt, wird bei 406 eine Vorgabe-Nutzlast-Steuerung zugewiesen und verwendet, wie oben beschrieben ist. Wenn jedoch die Abfrage einen Satz zumindest einer Nutzlast-Steuerung bei 405 entwickelt, wird bei 408 eine Nutzlast-Steuerung aus dem Satz zumindest einer Nutzlast-Steuerung ausgewählt, wie z. B. durch Laufenlassen einer Abfrage, wie z. B.:
PREPARE stmt1 FROM [str]
wobei „stmt1” die ausgewählte Nutzlast-Steuerung ist und „str” eine SQL-Aussage ist und möglicherweise „@” Variablen beinhalten kann, die unter Verwendung der SQL-„set”-Direktive definiert sind.
-
Das Ergebnis dieser Abfrage ist der Nutzlast-Schätzwert für die Aufgabe. Bei diesem Beispiel werden SQL-Abfragen nicht für einzelne Aufgaben geschrieben. Mit diesem beispielhaften Merkmal wird die Variabilität aus der gemeinsamen SQL-Aussage entfernt und eingestellt, wenn dies zutreffend ist. Eine Bestimmung wird bei 410 durchgeführt, ob eine Bedingung der erlernten Nutzlast-Steuerung erfüllt ist. Beispielsweise wird der Schutz der ausgewählten Nutzlast-Steuerung bei 410 ausgewertet, und wenn die Bedingung bei 412 erfüllt ist, z. B. wenn ein Boolesches Element des Schutzes wahr ist, wird die Nutzlast-Steuerung angewendet, wie z. B. die Berechnung durchgeführt, und der Nutzlast-Schätzwert bei 414 bestimmt. Das Ergebnis der vorbereiteten Aussage „result” kann folgendermaßen bestimmt werden:
EXECUTE SELECT result
-
Wenn die Schutzbedingung bei dem Beispiel bei 412 nicht erfüllt ist, wird eine andere Nutzlast-Steuerung bei 416 aus dem Satz zumindest einer Nutzlast-Steuerung bei 408 ausgewählt, und ausgewertet, falls vorhanden. Wenn bei 416 der Satz zumindest einer Nutzlast-Steuerung leer ist und alle Nutzlast-Ausdrücke bzw. -Expressionen nicht zufriedenstellende Schutzbedingungen aufweisen, wird bei 406 eine Vorgabe-Nutzlast-Steuerung zugewiesen und verwendet.
-
Ein übergreifender Aspekt der Verwendung von SQL zur Auswertung einer Nutzlast-Steuerung besteht darin, dass wir Endstücke und Nicht-Endstücke erhalten, ohne die mathematische Bibliothek kennen zu müssen, auf die Bezug genommen wird. Dies liefert eine Konsistenz durch eine gemeinsame Plattform oder ein gemeinsames Vokabular für die diversen Orte und Anwendungen eines Unternehmens. Außerdem liefert eine SQL-Maschine einen einheitlichen Mechanismus, wie z. B. eine einzelne Abfrage, zur Berechnung einer Vielzahl von Steuerungen mit und ohne Fähigkeitsattribute. Abhängig von der Steuerung werden relevante Attribute dynamisch bestimmt, wie z. B. zur Abfragezeit. Wenn beispielsweise eine Nutzlast-Steuerung für ein Schneidgerät ”max (sizel, sizew)” ist, wobei sizel, sizew Attribute sind, die aus dem Auftrag eines Kunden genommen werden, wird auf kein Fähigkeitsattribut zugegriffen. Wenn jedoch die Steuerung ”max (sizel, sizew)/cap_cutter” war, würde die SQL-Abfrage das Fähigkeitsattribut empfangen.
-
5 stellt ein beispielhaftes Computersystem dar, das in einer Betriebsumgebung eingesetzt werden kann und verwendet werden kann, um eine Computeranwendung zu beherbergen oder laufenzulassen, die auf einem oder mehreren computerlesbaren Speichermedien beinhaltet ist, die computerausführbare Befehle zum Steuern des Computersystems, wie z. B. Rechenvorrichtung, zur Durchführung eines Prozesses speichern. Bei einem Beispiel kann das Computersystem aus 5 verwendet werden, um den Prozess zum Bestimmen von Nutzlast-Schätzwerte, wie z. B. den Prozess 200 und seine zugeordneten Prozesse 300 und 400, zu implementieren.
-
Das beispielhafte Computersystem aus 5 beinhaltet eine Rechenvorrichtung, wie z. B. eine Rechenvorrichtung 500. Die Rechenvorrichtung 500 umfasst üblicherweise einen oder mehrere Prozessoren 502 und einen Speicher 504. Die Prozessoren 502 können zwei oder mehr Verarbeitungskerne auf einem Chip oder zwei oder mehr Prozessorchips umfassen. Bei einigen Beispielen kann die Rechenvorrichtung 500 auch einen oder mehrere zusätzliche Verarbeitungs- oder spezialisierte Prozessoren (nicht gezeigt) aufweisen, wie z. B. einen Graphikprozessor zur Universal-Berechnung auf Graphikprozessoreinheiten, um Verarbeitungsfunktionen durchzuführen, die von dem Prozessor 502 abgeladen werden. Der Speicher 504 kann in einer Hierarchie angeordnet sein und kann einen oder mehrere Cache-Ebenen umfassen. Der Speicher 504 kann flüchtig (wie z. B. Direktzugriffsspeicher (RAM)), nicht flüchtig (wie z. B. Festwertspeicher (ROM), Flash-Speicher usw.) oder eine bestimmte Kombination aus beiden sein. Die Rechenvorrichtung 500 kann eine oder mehrere von verschiedenen Formen annehmen. Diese Formen umfassen ein Tablet, einen Personal-Computer, einen Arbeitsplatzrechner, einen Server, ein Handgerät, eine Verbraucherelektronik-Vorrichtung (wie z. B. eine Videospielkonsole oder einen digitalen Videorekorder) oder andere und können eine alleinstehende Vorrichtung sein oder als Teil eines Computernetzwerks, Computer-Clusters, einer Cloud-Dienste-Infrastruktur oder anderer ausgebildet sein.
-
Die Rechenvorrichtung 500 kann auch zusätzlichen Speicher 508 umfassen. Der Speicher 508 kann entfernbar und/oder nicht entfernbar sein und kann magnetische oder optische Platten oder einen Festkörperspeicher, oder Flash-Speichervorrichtungen umfassen. Die Computer-Speichermedien umfassen flüchtige und nicht flüchtige, entfernbare und nicht entfernbare Medien, die in einem beliebigen geeigneten Verfahren oder einer beliebigen geeigneten Technologie zur Speicherung von Informationen implementiert sind, wie z. B. computerlesbaren Befehlen, Datenstrukturen, Programmmodulen oder anderen Daten. Ein sich ausbreitendes Signal alleine zählt nicht als Speichermedium.
-
Die Rechenvorrichtung 500 umfasst oft eine oder mehrere Eingangs- und/oder Ausgangsverbindungen, wie z. B. USB-Verbindungen, Anzeige-Ports, proprietäre Verbindungen und andere zur Verbindung zu verschiedenen Vorrichtungen zum Empfangen und/oder Bereitstellen von Eingangssignalen und Ausgangssignalen. Eingabevorrichtungen 510 können Vorrichtungen umfassen, wie z. B. Tastatur, Zeigevorrichtung (z. B. Maus), Stift, Spracheingabevorrichtung, Berührungseingabevorrichtung und andere. Ausgabevorrichtungen 512 können Vorrichtungen umfassen, wie z. B. Anzeige, Lautsprecher, Drucker oder dergleichen. Die Rechenvorrichtung 500 umfasst oft eine oder mehrere Kommunikationsverbindungen 514, die es der Rechenvorrichtung 500 ermöglichen, mit anderen Computern/Anwendungen 516 zu kommunizieren. Beispielhafte Kommunikationsverbindungen können eine Ethernet-Schnittstelle, eine drahtlose Schnittstelle, eine Bus-Schnittstelle, eine Speicherbereichsnetz-Schnittstelle, eine proprietäre Schnittstelle umfassen, sind jedoch nicht darauf beschränkt. Die Kommunikationsverbindungen können verwendet werden, um die Rechenvorrichtung 500 mit einem Computernetz 518 zu koppeln, das eine Sammlung von Rechenvorrichtungen und möglicherweise anderen Vorrichtungen ist, die durch Kommunikationskanäle untereinander verbunden sind, die Kommunikationen ermöglichen und ein gemeinschaftliches Verwenden von Ressourcen und Informationen zwischen untereinander verbundenen Vorrichtungen erlauben. Beispiele von Computernetzen umfassen ein lokales Netz, ein Weitverkehrsnetz, das Internet oder ein anderes Netz.
-
Die Rechenvorrichtung 500 kann ausgebildet sein, um ein Betriebssystem-Software-Programm und eine oder mehrere Computeranwendungen laufen zu lassen, die eine System-Plattform ausmachen. Eine Computeranwendung, die ausgebildet ist, um auf der Rechenvorrichtung 500 zu laufen, ist üblicherweise als Satz von Befehlen vorgesehen, die in einer Programmiersprache geschrieben sind. Eine Computeranwendung, die ausgebildet ist, um auf der Rechenvorrichtung 500 zu laufen, umfasst zumindest einen Rechenprozess (oder eine Rechenaufgabe), der/das ein ausführendes Programm ist. Jeder Rechenprozess stellt die Rechenressourcen zur Ausführung des Programms bereit.
-
Das Erlernen von Nutzlast-Steuerungen für einen produktspezifischen Prozess sind unabhängige Aktivitäten und können so parallel durchgeführt werden. Das Erlernen kann unter Verwendung von beispielsweise einem verteilten Rechensystem mit Computer-Clustern oder einem Groß-Datenverarbeitungssystem, wie z. B. Hadoop, das unter einer Apache-Lizenz verfügbar ist, von dem die Rechenvorrichtung 500 ein Teil sein kann, schnell erfolgen.
-
Obwohl spezifische Beispiele hierin dargestellt und beschrieben wurden, könnte eine Vielzahl alternativer und/oder gleichwertiger Implementierungen anstelle der gezeigten und beschriebenen spezifischen Beispiele eingesetzt werden, ohne von dem Schutzbereich der vorliegenden Offenbarung abzuweichen. Diese Anmeldung soll mögliche Anpassungen oder Abänderungen der hierin erläuterten spezifischen Beispiele abdecken. Deshalb soll diese Offenbarung nur durch die Ansprüche und deren Äquivalente eingeschränkt sein.