-
Diese Erfindung bezieht sich allgemein auf die
Arbeitszuteilung in einer Montagelinie und insbesondere auf
Operationszuweisungsprobleme bei einem Montageverfahren gedruckter
Schaltungsplatinen (PC-Platinen; PC = printed circuit).
-
Zusammen mit dem Erscheinen leistungsfähiger automatisierter
Herstellungssysteme entstand eine Menge komplexer
Entwurfs- und Steuer-Probleme. Diese Probleme umfassen die Maschinen-
Gruppierung, die Bauteiltyp-Auswahl, die Operationszuwei-
sung, die Montagevorrichtungszuteilung und die
Werkzeugbeladung. Einige dieser Probleme wurden bereits gemäß dem Stand
der Technik betrachtet, beispielsweise das
Werkzeugbeladungsproblem von flexiblen Herstellungssystemen (Flexible
Manufacturing Systems (FMS's)). Dieses Problem besteht
darin, Operationen und erforderliche Werkzeuge unter Gruppen
von Maschinen zuzuteilen, während Technologie- und
Kapazitäts-Beschränkungen der Maschinen erfüllt sind. Gemäß dem
Stand der Technik wurde eine Anzahl unterschiedlicher Ziele
vorgeschlagen, einschließlich des Abstimmens von Maschinen-
Arbeitsbelastungen und des Minimierens der Anzahl von
Bewegungen von Aufträgen (Jobs) zwischen Maschinen. Eine frühere
Formulierung des FMS-Werkzeugbeladungsproblems ist ein
Zuweisungsproblem mit einem linearen Ziel - dem des Zuweisens
von Auftragsarten zu Maschinen, um die variablen
Gesamtverarbeitungskosten pro Auftrag unter Vorbehalt der Maschinen-
Kapazitätsbeschränkungen zu minimieren.
-
In einem Artikel von Arvind Rajan im ATeT Technical Journal,
Bd. 68, Nr. 3 vom Juni 1989, mit dem Titel "Assigning
components to robotic work-cells for electronic assembly", ist
ein Verfahren des Leitens von Schaltungspaketen in einer
Mehrprodukt-Montagelinie zu Roboterarbeitszellen offenbart.
Jeder Typ eines Schaltungspakets wird nur zu Arbeitszellen
geleitet, die eine oder mehrere der benötigten Komponenten
aufweisen, um dadurch einen gegebenen Satz von Komponenten
unter einer Gruppe von identischen Arbeitszellen
aufzuteilen, um eine Beladungsabstimmung zwischen den Arbeitszellen
sicherzustellen und die Gesamt-Arbeitszellenbesuche durch
die Schaltungspakete zu minimieren. Die Komponenten werden
einer festen Anzahl von Arbeitszellen zugewiesen, die
physikalisch getrennt sind und gleichzeitig betrieben werden.
-
Die Zuweisung umfaßt eine heuristische Bedarfs-Prozedur, die
folgende Schritte aufweist: Sortieren der
Schaltungspakettypen nach abnehmendem Volumen; Zuweisen aller Komponenten,
die dem ersten Pakettyp entsprechen, zu so wenigen
Arbeitszellen wie möglich, bei gegebenen Beschränkungen bezüglich
der Anzahl von Zuführungsvorrichtungen und für das
Einfügungsvolumen; Zuweisen der Komponenten des Pakettyps mit dem
zweitgrößten Volumen zu so wenigen Arbeitszellen wie
möglich, beginnend mit der letzten, partiell gefüllten
Arbeitszelle; Fortfahren auf diese Art und Weise entlang der Liste
von Schaltungspakettypen, wobei zu der ersten Arbeitszelle
zurückgesprungen wird, wenn keine weitere leere Arbeitszelle
verbleibt, bis alle Komponenten zugewiesen wurden.
-
Weitere bekannte Formulierungen des
FMS-Werkzeugbeladungsproblems berücksichtigen die variablen Kosten, die jeder
Operation zugeordnet sind. Im Gegensatz dazu weist das
Zuweisungsproblem der vorliegenden Erfindung nicht nur
variable Verarbeitungskosten pro Operation auf, sondern auch einen
Zeiteinstellungsaufwand pro Auftrag, wenn beliebige
Operationen eines gegebenen Auftrags auf einer speziellen
Maschine durchgeführt werden. Dieser Einstellungsaufwand tritt
aufgrund der speziellen Technologie, die betrachtet wird,
auf, wie nachfolgend beschrieben wird. Außerdem ist das
FMS-Werkzeugbeladungsproblem ein taktisches Problem, das
Ziele wie z.B. das Maximieren des Durchsatzes oder das
Minimieren einer Spannenbildung (makespan) bei einem gegebenen
bekannten Satz von Aufträgen, die verarbeitet werden sollen,
betrifft. Unser Zuweisungsproblem ist ein
Langzeit-Planungsproblem, das das Ziel hat, die erwarteten Herstellungskosten
bei gegebenen Abschätzungen des erwarteten zukünftigen
Bedarfs zu minimieren (oder äquivalent die mittleren,
erwarteten Kosten pro erzeugter Einheit zu minimieren).
-
Das Problem, das durch die vorliegende Erfindung gelöst
wird, entstand aus den herkömmlichen Operationen beim
Zusammenbau gedruckter Schaltungsplatinen (PC-Platinen), bei
denen eine Einheit eine Anzahl unterschiedlicher PC-Platinen
durch das Einfügen der entsprechenden Komponenten
zusammensetzt. Der Prozeß ist nicht vollständig automatisiert, da
ein breites Gemisch von Platinen hergestellt wird, und das
Herstellungsvolumen eine Automatisierung nicht rechtfertigt.
Das Einfügen von Komponenten bei dieser Hand-Beladungszelle
kann entweder manuell oder durch eine halbautomatisierte
Maschine durchgeführt werden. Bekannte Techniken lösten das
Montageproblem bei diesem Typ einer
PC-Platinen-Herstellungslinie nicht adäquat.
-
Eine Aufgabe der Erfindung besteht darin, ein Verfahren zum
Optimieren von Operationszuweisungen bei der Herstellung
gedruckter Schaltungsplatinen, die Komponenten enthält, die
entweder manuell oder mittels einer Maschine auf der Platine
eingefügt werden können. Eine verwandte Aufgabe besteht
darin, eine optimale Zuweisung von Komponenten ("Operationen")
zu einem Satz von kapazitiven Maschinen zu bestimmen, um die
Gesamt-Einstellungs- und -Verarbeitungs-Kosten für das
Zusammensetzen aller Platinen mit der Möglichkeit, daß
bestimmte verbleibende Komponenten manuell eingefügt werden,
zu minimieren.
-
Eine weitere Aufgabe besteht darin, sich auf ein
Operationszuweisungsproblem zu konzentrieren, um eine Zuweisung von
Operationen zu einem Satz von kapazitiven Maschinen zu
bestimmen, um den Gesamt-Einstellungs- und
-Verarbeitungs-Aufwand zu minimieren. Da dieser Aufwand in Form von
Zeiteinheiten, die für die Einstellung und die Verarbeitung
erforderlich sind, ausgedrückt wird, besteht eine verwandte
Aufgabe darin, die mittlere Zeit, die erforderlich ist, um jede
PC-Platine herzustellen, zu minimieren.
-
Obwohl das Problem als ein gemischtes, lineares
Integer-Programm (ILP; ILP = integer linear program) formuliert werden
kann, ist es zu groß, um praktisch gelöst zu werden.
Folglich liefert die Erfindung in dem Fall einer einzelnen
Maschine vorzugsweise eine Lösung, die zwei unterschiedliche
Montagemodelle einschließt, die unter bestimmten Umständen
im Einzelfall willkürlich schlecht sein können, die jedoch
im Mittel zufriedenstellende Ergebnisse erzeugen.
-
Gemäß der vorliegenden Erfindung wird ein Verfahren des
Zusammenbauens einer Mehrzahl von Schaltungsplatinen gemäß
Anspruch 1 geschaffen. Anspruch 2 definiert ein spezielles
Ausführungsbeispiel der Erfindung.
-
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend nur beispielsweise bezugnehmend auf die
beiliegenden Zeichnungen beschrieben. Es zeigen:
-
Fig. 1 eine grafische Darstellung tatsächlicher Daten für
eine beispielhafte PC-Platinen-Montagelinie;
-
Fig. 2 eine andere grafische Darstellung der
beispielhaften PC-Platinen-Montagelinie von Fig. 1, die
Komponenten zeigt, die bei Platinen üblich sind;
-
Fig. 3 eine Anwendung des Platinen-Bedarfsalgorithmusses
(Greedy Board algorithm) für eine exemplarische
Kombination von Komponenten und Platinen; die
Anzahl von verfügbaren Schlitzen ist vier, die
Platinen-Bedarfslösung lautet:
-
Platinen 1, 2, 3 per Maschine;
-
Gesamtaufwand - 3s&sub1; + 4s&sub2; + 18c
-
und die Optimallösung lautet:
-
Platinen 4, 5, 6, 7 per Maschine;
-
Gesamtaufwand - 4s&sub1; + 3s&sub2; + 18c
-
Fig. 4 eine Anwendung des Komponenten-Sparalgorithmusses
(Stingy Component algorithm) für eine weitere
exemplarische Kombination von Komponenten und Platinen;
dieselbe zeigt das Beispiel des schlimmsten Falls
für die Komponenten-Sparheuristik; die
Komponenten-Sparlösung lautet:
-
Platine N&sub1; + 1 per Maschine;
-
alle anderen per Hand;
-
Aufwand - v[2s&sub1; + 2N&sub1;c&sub1; + N&sub1;s&sub2; + N&sub1;c&sub2;]
-
die Optimallösung lautet:
-
Platinen 1, ..., N&sub1; per Maschine;
-
Platine N&sub1; + 1 per Hand;
-
Aufwand - v[N&sub1;s&sub1; + N&sub1;c&sub1; + 2s&sub2; + 2N&sub1;c&sub2;]
-
Fig. 5 eine Anwendung des Platinen-Bedarfsalgorithmusses
für eine weitere Kombination von Komponenten und
Platinen; dieselbe zeigt den schlimmsten Fall für
die Platinen-Bedarfsheuristik;
Platinen-Bedarfslösung
-
Platinen 1, ..., N&sub1; per Maschine; alle anderen per
Hand
Aufwand
Optimallösung
-
Platinen 1, ..., N&sub1; per Hand; alle anderen per
Maschine
Aufwand
Jmax
-
Fig. 6 ein Hochpegel-Flußdiagramm eines
Ausführungsbeispiels der Erfindung;
-
Fig. 7 ein Flußdiagramm, das den
Komponenten-Sparalgorithmus, der auf einen Einzelmaschinenzusammenbau
angewendet ist, zeigt; man beginnt mit der
Minimalaufwandslösung (alle per Maschine) und bewahrt das
Entfernen von Komponenten in einer Spar-Form;
-
Fig. 8 ein Flußdiagramm, das den
Platinen-Bedarfsalgorithmus, der auf einen Einzelmaschinenzusammenbau
angewendet ist, zeigt; man beginnt mit der
aufwendigsten Lösung (alle per Hand) und bewegt die Platine
(Sätze von Komponenten) bedarfsmäßig zu der
Maschine; und
-
Fig. 9 ein Flußdiagramm, das den
Komponenten-Sparalgorithmus, der auf einen Mehrmaschinenzusammenbau
angewendet
ist, zeigt.
-
Es existieren viele herkömmliche
PC-Platinen-Zusammenbauoperationen, die optimiert werden können. Beispielsweise
arbeitet ein manueller Einfügungsprozeß wie folgt: die Platine
wird auf einer Ablage eingestellt, der Bediener lokalisiert
die Zusammenbauinstruktionen für diese spezielle Platine in
einem Befehlshandbuch und befolgt nachfolgend die
Zusammenbaubefehle, wobei er einzelne Komponenten aus beschrifteten
Behältern erhält, die sich in dem Zusammenbaubereich
befinden, und wobei er dieselben manuell auf der Platine einfügt.
Für den halbautomatischen Einfügungsprozeß wird die Platine
auf einer Ablage auf einer halbautomatisierten
Komponenteneinfügungsmaschine eingestellt, wobei der Bediener die
Platinen-Identifikationsnummer in den Computer, der die
Maschine steuert, eingibt. Danach identifiziert die Maschine aus
einem Satz von internen Komponentenbehältern den Behälter,
der das erste Teil, das benötigt wird, enthält, öffnet den
Behälter, und bewegt denselben auf die Platine, auf der
diese Komponente eingefügt werden soll. Der Bediener entfernt
eine Komponente aus dem geöffneten Behälter, fügt dieselbe
auf der Platine ein und drückt einen Schalter, was anzeigt,
daß nun eine weitere Komponente benötigt wird. Die Maschine
schließt und entfernt danach den Behälter, zieht den
Behälter, der die nächste Komponente, die erforderlich ist,
enthält, vor, wobei sich der Prozeß in gleicher Weise
fortsetzt, bis alle Komponenten eingefügt wurden. Es sei
bemerkt, daß keine Einstellungssicherungen existieren, die der
sequentiellen Herstellung von zwei Platinen des gleichen
Typs zugeordnet sind; jede Platine erfordert bei jedem
Prozeß, in dem dieselbe einer Komponenteneinfügung unterzogen
wird, eine Einstellung. Dies ist ein Beispiel eines
Durchgangsloch-Zusammenbauprozesses.
-
Sowohl die Einstellung als auch die Verarbeitung sind auf
einer Maschine schneller (d.h. billiger). Jedoch weisen die
Maschinen eine begrenzte Kapazität zum Halten
unterschiedlicher Komponenten auf, wobei nur eine begrenzte Anzahl der
Maschinen verfügbar ist. Ferner ist es aufwendig, die
Zuweisung von Komponenten zu Behältern der Maschine zu ändern:
derartige Änderungen umfassen nicht nur die physikalische
Ersetzung von Komponenten in den Behältern innerhalb der
Maschine, sondern auch eine Umprogrammierung des
Maschinencomputers. Ferner können kostspielige Reduzierungen der
Platinenqualität und des Ertrags auftreten, wenn der
Herstellungsprozeß geändert wird (beispielsweise wenn eine
spezielle Platine nun unter Verwendung einer anderen Maschine
zusammengebaut wird). Folglich muß die Komponentenzuweisung
durchgeführt werden, bevor irgendwelche PC-Platinen
zusammengebaut werden können, und kann während des gesamten
Zusammenbauprozesses aller Platinen nicht geändert werden. Es
ist nicht möglich, einen Satz von Komponenten in der
Maschine zu ändern, bis alle Platinen vollständig zusammengebaut
wurden. Bei einer typischen Situation wird eine
Einmal-Werkzeugbestückung von Maschinen (d.h. die Zuweisung von
Komponenten zu Behältern) für das nächste Jahr oder das nächste
halbe Jahr basierend auf dem jährlichen oder halbjährlichen
erwarteten Bedarf (hoher Abschätzungen des) für
unterschiedliche Typen von Platinen bestimmt. Am Ende dieser
Zeitperiode werden neue Bedarfsabschätzungen erzeugt und die
Maschinen können neu bestückt werden.
-
Wie es bei PC-Platinen-Zusammenbauoperationen typisch ist,
muß eine große Anzahl unterschiedlicher PC-Platinen, die aus
einer noch größeren Anzahl von Komponenten zusammengesetzt
werden, hergestellt werden. Beispielsweise werden bei einem
typischen Herstellungsprozeß beinahe 500 Typen von
PC-Platinen aus etwa 4.000 unterschiedlichen Teilen hergestellt. Ein
weiteres interessierendes Merkmal ist, daß einige
Komponenten viel häufiger verwendet werden, als andere. Fig. 1 zeigt
eine tatsächliche, kumulative Komponentenbenutzung als einen
Prozentsatz der Gesamtbenutzung für eine Probe von 30
Platinen, die aus über 300 Komponenten zusammengebaut sind.
-
Schließlich existiert ein geringer, aber nicht
unwesentlicher Pegel einer Komponentengemeinsamkeit zwischen Platinen.
-
Fig. 2 zeigt eine tatsächliche Verteilung der Anzahl
unterschiedlicher Platinen, wobei diese Komponenten für eine
repräsentative Probe von 58 Platinen und 180 Komponenten
verwendet sind. In diesem Fall werden näherungsweise 35% der
Komponenten in mehr als einer Platine verwendet, wobei 5%
der Komponenten in 5 oder mehr Platinen verwendet werden.
Diese geringe Gemeinsamkeit von Komponenten tritt teilweise
aufgrund der langen Produktlebensdauern vieler dieser
Produkte, die die PC-Platinen verwenden, auf.
-
Das Problem, das wir betrachten, besteht in dem Bestimmen
dessen, welche Komponenten (Operationen) jedem Prozeß (dies
kann eine beliebige der Maschinen oder der manuelle
Zusammenbauprozeß sein) zuzuweisen sind, um den
Gesamt-Einstellungs- und -Verarbeitungs-Aufwand für den Zusammenbau aller
Platinen zu minimieren. Wenn Komponenten für irgendeine
spezielle Platine nicht alle dem gleichen Prozeß zugewiesen
sind (d.h. der gleichen Maschine oder dem manuellen
Zusammenbauprozeß), muß die Platine mehr als eine Einstellung
durchführen (wir nehmen jedoch an, daß die Reihenfolge der
Komponenteneinfügung keine Rolle spielt, so daß bestenfalls
eine Einstellung pro Prozeß für eine beliebige Platine
erforderlich ist). Um mehrere Einstellungen zu verhindern, ist
es möglich, die gleiche Komponente unterschiedlichen
Prozessen zuzuweisen. Das Problem ist auch eines des Bestimmens
des Entwurfs der unterschiedlichen Maschinen - d.h. des
Bestimmens des Ausmaßes, mit dem der Zusammenbau in parallelen
gegen seriellen Prozessen durchgeführt werden sollte. Es sei
bemerkt, daß wir ein Langzeit-Planungsproblem unter
Verwendung von Abschätzungen des erwarteten, zukünftigen Bedarfs
für die nächsten sechs bis zwölf Monate lösen, so daß eine
Stapelverarbeitung und Sequenzierung keine Punkte von Belang
sind.
-
Tatsächlich besteht das Ziel darin, eine
Betriebsverfahrensweise zu bilden (d.h. Flüsse von Platinentypen zwischen
Maschinen zu bestimmen), die eine Basis für eine taktische
Ausführung liefert. Die wöchentliche Planung kann die
Untervergabe
von Arbeit in Perioden eines hohen Bedarfs und
Bediener-Schulungsklassen in Perioden eines geringen Bedarfs
einschließen. In jedem Fall stellen, sobald die Kapazität
und die Leute positioniert wurden (wir nehmen an, daß dies
bereits stattgefunden hat), dieselben einen großen festen
Aufwand dar, so daß ein Entwurf benötigt wird, der eine
effiziente taktische Ausführung ermöglicht.
-
Das Ziel des Minimierens der mittleren, erwarteten Kosten
pro hergestellter Platine spiegelt die tatsächliche
Herstellungsplaung wider und ist für ein Langzeit-Planungsproblem
des Typs, den wir betrachten, geeignet. Da wir ein
Langzeit-Planungsproblem (unter Verwendung eines abgeschätzten
zukünftigen Bedarfs) lösen, ist es vernünftig, die
Minimierung des mittleren Aufwands pro hergestellter Platine zu
betrachten, und nicht Maßnahmen, beispielsweise die
Minimierung einer Spannenbildung und die Durchsatzmaximierung, die
für ein Problem mit einem kürzeren Horizont und bekannten
Bedarfsanforderungen anwendbar sein können. Es sei bemerkt,
daß der Aufwand in Form von Zeiteinheiten, die für jede
Operation erforderlich sind, ausgedrückt wird: da parallele
Maschinen, die gleichzeitig arbeiten, existieren können, ist
das Ziel in diesem Fall nicht äquivalent zum Minimieren der
Spannenbildung, sondern ist vielmehr äquivalent zur der
Minimierung der mittleren Zeit, die erforderlich ist, um eine
Platine herzustellen (wird nehmen an, daß alle Platinen in
der verfügbaren Zeit verarbeitet werden können; andernfalls
weist das Problem keine durchführbare Lösung auf).
-
Bei unserem Modell werden Operationszuweisungen unter
Verwendung fester Abschätzungen des zukünftigen Bedarfs
bestimmt. Eine natürliche Erweiterung besteht darin,
Unbestimmtheiten in diesen Bedarfsabschätzungen zu betrachten.
In diesem Fall möchte man nur Zuweisungspläne erzeugen, die
bezüglich möglicher, zukünftiger Änderungen des Bedarfs
robust sind. Derartige Zuweisungspläne würden unter einem
Bereich von Annahmen über Pegel des zukünftigen Bedarfs für
unterschiedliche Produkte einen geringen Aufwand ergeben.
-
In dem folgenden Abschnitt definieren wir das Problem formal
als ein gemischtes Integer-Programm. Wir erläutern
Lösungsansätze zum Finden einer exakten Lösung. Bei vielen
praktischen Anwendungen kann ein realistisches Problem jedoch zu
groß sein, um exakt gelöst zu werden. Ferner wünschten
Verfahrensingenieure bei einem bevorzugten Ausführungsbeispiel
eine Lösungsmethodik, die auf einem Tischcomputer und nicht
einem Großrechner implementiert sein könnte. Folglich
entwickeln wir Heuristiken für das Problem. Anfänglich
spezialisierten wir unsere Analyse auf den Fall einer Maschine.
Wir präsentieren zwei unterschiedliche Heuristiken. Wir
charakterisieren Bedingungen, unter denen die Algorithmen eine
optimale Lösung erzeugen, präsentieren Beispiele des
schlimmsten Falls, und präsentieren Rechenergebnisse für
einen zufällig erzeugten Satz von Problemen. Wir zeigen, daß,
obwohl jeder Algorithmus willkürlich schlecht sein kann, die
Algorithmen für typische Probleme gut arbeiten. Danach
betrachten wir den allgemeineren Fall mehrerer Maschinen. Wir
entwickeln vier unterschiedliche Heuristiken und
präsentieren Rechenerfahrung. Schließlich werden wir die
Implementierung unserer Ergebnisse in einer tatsächlichen Montagelinie
erläutern.
Problemformulierung
-
Es sei i ein Index für die Prozesse (1, 2, 3, ..., I-1 =
Maschine; I = manuell), j sei ein Index für die Komponenten (j
= 1, ..., J) und k sei ein Index für die Platinentypen (k =
1, ..., K). Unser Ziel besteht darin, optimale Werte zu
bestimmen für:
-
xijk = Zuweisung der Komponente j für eine Platine des
Typs k zu dem Prozeß i, wobei xijk = 1, wenn die
Zuweisung gemacht ist; sonst 0
-
Wir definieren ferner folgende Hilfsvariablen (dummy
variables):
-
yik = 1, wenn die Platine des Typs k für irgendwelche
Einfügungen bei dem Prozeß i eingestellt ist;
sonst 0
-
zij = 1, wenn die Komponente j dem Prozeß i zugewiesen
ist; sonst 0
-
Herstellungsanforderungen sind:
-
dk = Gesamtbedarf für die Platine des Typs k während
der (festen) Zeitperiode
-
rjk = 1, wenn die Komponente j in der Platine des Typs
k verwendet ist; sonst 0
-
njk = Nummer der Komponente j, die in einer des
Platinentyps k verwendet ist
-
Unter Verwendung des obigen definieren wir:
-
vjk = dkrjknjk = Gesamtvolumen der Komponente j, die
für Platinen des Typs k während der Zeitperiode
verwendet ist
-
Der maschinelle Einstellungs- und Verarbeitungs-Aufwand ist
für alle Platinen und Komponenten der gleiche:
-
si = Einstellungsaufwand für eine Einstellung einer
Platine bei dem Prozeß i
-
ci = Verarbeitungsaufwand für eine Einfügung durch den
Prozeß i
-
Schließlich sind Maschinenbegrenzungen gegeben durch:
-
Ni = Gesamtzahl von Typen von Komponenten, die dem
Prozeß i zugewiesen werden können
-
Bei diesen Definitionen kann das Problem wie folgt
ausgedrückt werden:
-
Das Ziel (1) besteht darin, den Gesamtverarbeitungs- plus
Einstellungs-Aufwand zu minimieren. Die Beschränkung (2)
stellt sicher, daß alle notwendigen Komponenten einem Prozeß
zugewiesen werden; wenn irgendeine Komponente für eine
Platine des Typs k einem Prozeß zugewiesen wird, (3) setzt die
Anzeigervariable yik auf 1, so daß eine Einstellung geladen
wird. Die Beschränkungen (4) und (5) drücken die obere
Grenze für die Anzahl von unterschiedlichen Typen von
Komponenten, die einem beliebigen Prozeß zugewiesen werden können,
aus. Es sei angenommen, daß der manuelle Prozeß NI = J
aufweist, und somit nicht in (5) enthalten ist. Wir bemerken,
daß unter Voraussetzung von (6) eine
Integralitätsbeschränkung für die xijk's nicht notwendig ist; das obige
gemischte, lineare Integer-Programm (ILP) wird für alle i, j, k
stets xijk = 0 oder 1 ergeben. In gleicher Weise müssen wir
keine Integralitätsbeschränkung für die zij's (die
Hilfsvariablen sind) spezifizieren: Wenn alle Behälter des
Prozesses i bei der Aufwandsminimierungslösung verwendet sind,
werden die zij's alle für diesen Prozeß einen binären
ganzzahligen Wert aufweisen. Wenn nicht alle Behälter verwendet
sind, ist die optimale Lösung entartet, und die zij's weisen
möglicherweise keinen binären ganzzahligen Wert auf; jedoch
wird dies die optimale Lösung (spezifiziert durch die yik's
und xijk's) nicht beeinträchtigen. Das Problem ist folglich
eines von binären ganzzahligen I K-Variablen und linearen
I J (K+1)-Variablen.
-
Es sei bemerkt, daß die obige Formulierung die Zuweisung
eines einzelnen Komponententyps zu mehr als einem Prozeß
ermöglicht. (Die einzige Beschränkung für die Zuweisung von
Komponenten zu Prozessen (die zij's) besteht darin, daß die
Anzahl von unterschiedlichen Komponenten, die einem
beliebigen Prozeß zugewiesen sind, die Kapazität des Prozesses
nicht übersteigen kann). Wenn die Einstellungszeiten relativ
zu den Verarbeitungszeiten hoch sind (so daß es aufwendig
ist, eine Platine unter Verwendung von mehr als einem Prozeß
herzustellen), und alle Platinen, die eine spezielle
Komponente mit hohem Volumen verwenden, nicht vollständig auf
irgendeiner Maschine zusammengebaut werden können, da ihre
kombinierte Anforderung nach Komponententypen größer ist als
die Anzahl von verfügbaren Komponentenschlitzen, kann es
optimal sein, die Komponente mehr als einem Prozeß zuzuweisen.
-
Ein Lösungsansatz für dieses Problem besteht darin, ein
Verzweigen und Begrenzen (branch and bound) zu verwenden, ein
Verzweigen auf Komponentenzuweisungen (d.h. zij = 0 oder 1
einstellen), und ein Begrenzen durch das Lösen eines
gelockerten linearen Programms (Wegwerfen der
Integralitätsbeschränkung für die yik's). Eine wirksame Möglichkeit, um den
Verzweigungsprozeß durchzuführen, kann darin bestehen,
zuerst auf den am häufigsten verwendeten Komponenten zu
verzweigen (d.h. denjenigen mit dem höchsten Wert von
-
da
diese Komponenten die größte Wirkung auf den Gesamtaufwand
besitzen. Wir müssen nicht explizit spezifizieren, ob eine
Komponente dem manuellen Prozeß zugewiesen ist oder nicht:
da angenommen ist, daß der manuelle Prozeß nicht kapazitiv
ist, werden Komponenten diesem Prozeß durch das lineare
Programm (LP) automatisch zugewiesen, wenn es notwendig oder
wünschenswert ist. Eine gute anfängliche obere Grenze kann
unter Verwendung der Heuristiken, die in den Abschnitten 3
und 4 präsentiert werden, erhalten werden.
-
Die Schwierigkeit beim exakten Lösen des Integer-Programms
für ein realistisches Problem ist die große Problemgröße.
Beispielsweise kann ein mittelgroßes
Zweiprozeß-Zuweisungsproblem (mit einer Maschine plus dem manuellen Prozeß) 200
Platinen und 600 Komponenten einschließen - was zu 12.000
binären Integer-Variablen und über 2 Millionen linearen
Variablen führt. Selbst ohne Integer-Beschränkungen ist ein
derartiges Problem zu groß, um unter Verwendung von
gegenwärtigen LP-Codes gelöst zu werden. Ferner wünschten bei
unseren experimentellen Anwendungen die Verfahrensingenieure
eine Lösungsmethodik, die auf einem Tischrechner und nicht
einem Großrechner implementiert sein kann. Folglich
entwickeln wir nun heuristische Möglichkeiten, um das Problem
zu lösen. Wir betrachten zuerst den Fall einer Maschine und
dann den Fall mehrerer Maschinen.
Einzelmaschinenproblem
-
In diesem Abschnitt spezialisieren wir unsere Erörterung auf
den Fall einer Maschine. Es stelle i = 1 die Maschine und i
= 2 den manuellen Prozeß dar. Das Problem reduziert sich
dann auf ein solches des Bestimmens, welche Komponenten der
Maschine (zij) zuzuweisen sind: Sobald die Maschinenbehälter
gefüllt wurden, werden alle nicht zugewiesenen Komponenten
dem manuellen Prozeß zugewiesen. Zusätzlich können bestimmte
Komponenten, die der Maschine zugewiesen sind, ebenfalls dem
manuellen Prozeß zugewiesen werden. Bei den gegebenen
Komponentenzuweisungen kann die Aufwandsminimierungslösung für
jede Platine (die xijk's und die entsprechenden yik's)
einzeln bestimmt werden.
-
Obwohl ein Problem einer realistischen Größe zu groß ist, um
praktisch durch ein exaktes Lösungsverfahren gelöst zu
werden, ermöglichen uns bestimmte spezielle Charakteristika des
Problems, exzellente, nahezu optimale Lösungsansätze
aufzubauen. Erstens werden einige Komponenten viel häufiger
verwendet als andere, und einige Platinen werden viel häufiger
zusammengebaut als andere (die Daten in Fig. 1 verifizieren,
daß sowohl die Komponenten- als auch die
Platinen-Verwendungen der gut bekannten ''80/20"-Regel folgen). Da sowohl die
Einstellung als auch die Einfügung mittels einer Maschine
billiger als mittels des manuellen Prozesses sind, würden
wir erwarten, daß die optimale Lösung viele (oder alle) der
häufig verwendeten Komponenten und/oder Platinen einer
Maschine zuweisen würde. Wir beobachten ferner, daß mit
Ausnahme bestimmter, häufig verwendeter Komponenten die
Platinen nicht dazu tendieren, eine große
Komponentengemeinsamkeit aufzuweisen. Dies motiviert uns, zwei unterschiedliche
Lösungsheuristiken basierend auf einem
"Bedarfs"-Lösungsansatz aufzubauen, von denen einer einzelne Komponenten
zuweist und der andere ganze Platinen zuweist.
-
Unser erster Lösungsansatz, den wir als den
"Komponentenspar"-Algorithmus bezeichnen, beginnt durch das Zuweisen
aller Komponenten zu der Maschine (wodurch die
Maschinenkapazitätsbeschränkung überschritten wird) und das nachfolgende
Entfernen von Komponenten, die die kleinste Aufwandszunahme
bewirken, bis die Kapazitätsbeschränkung der Maschine
erfüllt ist. Alle Komponenten, die nicht der Maschine
zugewiesen sind, werden dem manuellen Prozeß zugewiesen.
-
Die Idee hinter diesem Lösungsansatz besteht darin, daß
viele der weniger häufig verwendeten Komponenten bei einer
Kostenminimierungslösung niemals der Maschine zugeordnet
werden, wobei man in gleicher Weise erwarten würde, daß die am
häufigsten verwendeten Komponenten stets der Maschine
zugewiesen werden. Da sich der "Spar"-Lösungsansatz ("stingy"
approach) auf das Zuweisen einzelner Komponenten und nicht
ganzer Platinen konzentriert, würden wir erwarten, daß der
Algorithmus gut arbeitet, wenn der Einstellungsaufwand
gering ist. Tatsächlich erzeugt der Sparalgorithmus stets die
optimale Problemlösung, wenn der Einstellungsaufwand Null
ist, da in diesem Fall jede Komponente einzeln betrachtet
werden kann.
-
Es stelle i = 1 die Maschine und i = 2 den manuellen Prozeß
dar. Es folgt:
"Komponentenspar"-Algorithmus
-
1. Initialisierung: Es sei S = {1, ..., J}. Es sei δk = 1
für alle k, und
-
Wenn S ≤ N&sub1;, STOP.
-
2. ''Spar"-Komponentenbeseitigung:
-
Berechne
-
Finde 1 = arg min [Δj].
-
jεS
-
Es sei S = S-l, J = J+..l, und für k s.t. δkrlk = 1,
setze δk = 0.
-
3. Nachverarbeitung: Wenn S > N&sub1;, springe zu Schritt 2
zurück. Sonst
-
Für alle j S: setze x2jk =rjk, x1jk = 0, für
alle k.
-
(ii) Für alle k s.t. δk = 1: setze y1k = 1, y2k = 0,
und x2jk = 0, x1jk = rjk für alle j.
-
(iii) Für alle k s.t. δk = 0: setze y2k = 1, und
wenn
-
sonst setze y1k = 1, und x1jk = rjk, x2jk =
0 k ε s.
-
Stop.
-
Der Schritt 1 weist alle Komponenten der Maschine zu. Im
Schritt 2 wird der inkrementale Aufwand des Beseitigens
jeder Komponente von der Maschine (Δj) berechnet; dieser
besteht aus dem inkrementalen variablen Verarbeitungsaufwand
pro Einheit (c&sub2;-c&sub1;) mal dem bewirkten Gesamtvolumen
-
plus dem inkrementalen, manuellen Einstellungsaufwand für
alle Platinen, die diese Komponente verwenden, die noch
keinem manuellen Einstellungsaufwand unterliegen (d.h.
denjenigen Platinen, für die bei diesem Schritt δk = 1). Die
Komponente, die den minimalen inkrementalen Aufwand hinzufügt,
wird beseitigt, und die Zielfunktion, die
Einstellungsanzeiger (δk) und der Aufwand wird aktualisiert. Das
Beseitigungsverfahren setzt sich fort, bis die Behälterkapazität
der Maschine exakt erfüllt ist. Der Schritt 3 ist ein
Nachverarbeitungsschritt, der die Entscheidungsvariablen
einstellt. Alle Platinen, die keiner manuellen Einstellung (δk
= 1) unterliegen, werden vollständig durch die Maschine
verarbeitet. Für diejenigen Platinen, die einer manuellen
Einstellung (δk = 0) unterliegen, wird eine Entscheidung
bezüglich dessen getroffen, ob die Platine vollständig mittels
des manuellen Prozesses verarbeitet wird oder nicht; wenn es
billiger ist, dies zu tun, werden die Entscheidungsvariablen
eingestellt und die Zielfunktion wird aktualisiert.
-
Wir beobachten, daß jedesmal, wenn der Schritt 2 erreicht
wird, höchstens J Summen berechnet werden und eine
Sortierung durchgeführt wird, was jedesmal zu einem Maximum von
J²log(J) Berechnungen führt. Der Schritt 2 wird J-N&sub1; mal
erreicht, so daß eine obere Grenze für die Rechenkomplexität
für den Komponenten-Sparalgorithmus J³log(J) Schritte ist.
-
Ein bevorzugtes Ausführungsbeispiel der vorliegenden
Erfindung weist zusätzlich einen zweiten Lösungsansatz auf, den
wir als den ''Platinenbedarfs"-Algorithmus (''Greedy Board"
algorithm) bezeichnen, der durch das Zuweisen aller Platinen
zu dem manuellen Prozeß beginnt, und danach ganze Platinen
der Maschine zuweist, Stück für Stück, um inkrementale
Platinen, die durch inkrementale, verwendete
Komponentenbehälter hergestellt werden, zu maximieren. Im Gegensatz zu dem
Komponentenspar-Algorithmus konzentriert sich der
Platinenbedarfs-Algorithmus auf ganze Platinen. Die Ideen, die zu
diesem Lösungsansatz führen, sind: (a) aufgrund des
erwarteten geringen Pegels einer Komponentengemeinsamkeit kann es
besser sein, Platinen gesamt den Maschinen oder dem
manuellen Prozeß zuzuweisen und dieselben nicht aufzuspalten; und
(b) die Berücksichtigung einer existierenden
Komponentengemeinsamkeit kann aufwandssparende Kombinationen der
Platinen, die der Maschine zugewiesen sind, ergeben.
-
Der Algorithmus kann formal wie folgt dargelegt werden:
"Platinenbedarfs"-Algorithmus
-
1. Initialisierung: Es sei S = φ, T = {1, ..., K}, und
-
2. "Bedarfs"-Platinenbeladung:
-
3. Nachverarbeitung: Wenn T ≠ φ, kehre zu Schritt 2
zurück. Sonst
-
Stop.
-
Der Schritt 1 weist alle Platinen dem manuellen Prozeß zu.
Im Schritt 2 wird die inkrementale Anzahl von neuen
Komponentenschlitzen pro hergestellter Platine (γk) für jeden
Platinentyp, dessen inkrementale Zuweisung zu der Maschine
die Schlitzkapazitätsbeschränkung (die durch kεT dargestellt
ist) nicht verletzen wird, berechnet, und der Platinentyp
mit dem minimalen Wert wird der Maschine zugewiesen. (Dies
ist äquivalent zum "bedarfsmäßigen" ("greedy") Maximieren
inkrementaler Platinen, die pro zusätzlichem verwendeten
Schlitz hergestellt werden.) Der Prozeß setzt sich fort, bis
keine weiteren (ganzen) Platinen der Maschine zugewiesen
werden können. Der Schritt 3, der Nachverarbeitungsschritt,
ist ähnlich dem für die Komponentenspar-Heuristik (wobei in
diesem Fall für Platinen, die einer manuellen Einstellung
(d.h. kεT) unterliegen, eine Entscheidung bezüglich dessen
getroffen, ob einige der Komponenten auf der Maschine
verarbeitet werden sollen).
-
Für den Platinenbedarfs-Algorithmus werden jedesmal, wenn
der Schritt 2 erreicht wird, höchstens K Summen und eine
Sortierung über K durchgeführt, was zu K²log(K) Berechnungen
führt. Der Schritt 2 wird höchstens K mal erreicht, so daß
eine obere Grenze für die erforderliche Berechnung
K³log(K)-Schritte ist. Da K≤J ist, und bei einem typischen
Problem K«J gilt, wird der Platinenbedarfsalgorithmus
typischerweise weniger Berechnung erfordern als der
Komponentenspar-Algorithmus.
-
Wir beobachten, daß, wenn über Platinen keine
Komponentengemeinsamkeit existiert, und wenn der
Platinenbedarfs-Algorithmus die Komponentenschlitze in der Maschine exakt füllen
kann, der Algorithmus stets die optimale Lösung ergibt. In
diesem Fall ist der Algorithmus dem
Hohes-Verhältnis-Zuerst-Algorithmus (High Ratio First algorithm) für das 0-1-
Rucksack-Problem sehr ähnlich - einer Bedarfsheuristik, die
sequentiell Gegenstände basierend auf ihrem
Wert-zu-Gewicht-Verhältnis zu dem Rucksack hinzufügt; diese Heuristik
liefert eine optimale Lösung, wenn der Rucksack exakt
gefüllt werden kann. Wir könnten auch erwarten, daß der
Platinenbedarfs-Algorithmus gut arbeitet, wenn der
Verarbeitungsaufwand bei den zwei Prozessen ähnlich ist, da in diesem
Fall durch das Aufspalten von Platinen keine
Aufwandseinsparungen erreicht werden können. Selbst wenn der manuelle und
der maschinelle Verarbeitungsaufwand identisch sind und der
Platinenbedarfs-Algorithmus alle Maschinenschlitze
verwendet,
kann der Algorithmus nicht die Optimal lösung ergeben,
da der Algorithmus eine Komponentengemeinsamkeit nur
kurzsichtig berücksichtigt. Die optimale Lösung unter diesen
Umständen ist eine solche, die das Volumen der Platinen, die
der Maschine zugewiesen sind, maximiert. Der
Platinenbedarfs-Algorithmus wird nicht notwendigerweise diese Lösung
ergeben. Ein Beispiel ist in Fig. 3 gezeigt.
-
Wir untersuchen nun das Verhalten der zwei Algorithmen. Wir
zeigen, daß, obwohl das Verhalten jeder Heuristik im
schlechtesten Fall willkürlich schlecht sein kann, im Mittel
jeder über eine große Stichprobe von zufällig erzeugten
Problemen ziemlich gut arbeitet.
-
Da unser Problem ein Miniaturisierungsproblem ist, verwenden
wir das Leistungsverhältnis im schlimmsten Fall R = [JH-J*]/
[Jmax-J*]; hierbei stellt JH den Aufwand des heuristischen
Lösungsansatzes dar, J* die optimale Lösung und Jmax eine
obere Grenze für den maximalen Zielfunktionswert. Je näher
das Verhältnis an 1 ist, desto schlechter ist das Verhalten
der Heuristik. Für eine obere Grenze verwenden wir Jmax =
-
dies entspricht dem Zusammenbauen aller
Platinen mittels des manuellen Prozesses.
Aussage 1:
-
Die Komponentenspar-Heuristik kann eine
willkürlich schlechte Lösung erzeugen.
Beweis:
-
Betrachte das Beispiel, das in Fig. 4 gezeigt ist.
Für die Komponentenspar-Heuristik gilt: JH = v[2s&sub1;+2N&sub1;c&sub1;+
N&sub1;s&sub2;+N&sub1;c&sub2;] während J* = v[N&sub1;s&sub1;+N&sub1;c&sub1;+2s&sub2;+2N&sub1;c&sub2;). Die obere
Grenze ist Jmax = v[(N&sub1;+2)s&sub2;+(3N&sub1;)c&sub2;]. Folglich
-
Wenn N&sub1; ausreichend groß wird, nähert sich dieser Ausdruck
-
1+[-2(c&sub2;-c&sub1;)]/[(s&sub2;-s&sub1;)+(c&sub2;-c&sub1;)]
-
und für Werte von (c&sub2;-c&sub1;) ausreichend nahe bei 0 gilt R T
1.
-
Wir können in gleicher Weise durch ein Beispiel zeigen, daß
die Platinenbedarfs-Heuristik willkürlich schlechte Lösungen
erzeugen kann.
Aussage 2:
-
Die Platinenbedarfs-Heuristik kann eine
willkürlich schlechte Lösung erzeugen, selbst wenn sie alle
Schlitze in der Maschine verwendet.
Beweis:
-
Es sei das Beispiel, das in Fig. 5 gezeigt ist,
betrachtet. Es gibt 2N&sub1; Komponenten. Die ersten N&sub1; Komponenten
verwenden jeweils eine Komponente 1, ..., N&sub1;. Die übrigen
Platinen verwenden jeweils eine der ersten N&sub1; Komponenten,
plus zwei oder mehr der Komponenten N&sub1;+1, ..., 2N&sub1;. Alle
derartigen, möglichen Kombinationen sind eingeschlossen;
somit ist beispielsweise die Anzahl unterschiedlicher
Platinen, die zwei der Komponenten N&sub1;+1, ..., 2N&sub1; verwenden (plus
eine der Komponenten 1, ..., N&sub1;),
-
(N&sub1;). Die
Platinenbedarfs-Heuristik verwendet alle Schlitze in der Maschine (wie
die optimale Lösung). Für dieses Beispiel,
-
Wenn N&sub1; groß wird, folgt offensichtlich R T 1.
-
Um das Durchschnittsverhalten zu würdigen, wurden die zwei
Algorithmen auf einem Satz von Problemfällen getestet, die
zufällig aus beobachteten Verteilungen des Platinenvolumens
und der Komponentenhäufigkeit und der Gemeinsamkeit bei dem
Zusammenbauverfahren erzeugt wurden. Der verwendete
Einstellungs- und Verarbeitungs-Aufwand spiegelt den relativen
tatsächlichen Aufwand wider und ist proportional zu der Zeit,
die für jede Operation erforderlich ist. Für jedes Problem
wurde die wahrhaft optimale Lösung durch eine erschöpfende
Suche bestimmt. Berechnungsergebnisse sind in Tabelle 1
gezeigt.
Tabelle 1
Der Fall einer einzelnen Maschine: Berechnungsergebnisse für
zufällig erzeugte Probleme
-
* Prozentabweichung von der optimalen Lösung
-
Für Probleme der Größe 10x15 (10 Platinen und 15
Komponenten) war die Spar-Heuristik etwas besser als die Bedarfs-
Heuristik, mit einem mittleren Fehler von etwa 3,1%,
verglichen mit 4,2% für die Bedarfs-Heuristik. Für Probleme der
Größe 10x20 arbeitete die Bedarfs-Heuristik besser, mit
einem
mittleren Fehler von 4,2% gegenüber 4,8% für die Spar-
Heuristik. Obwohl der mittlere Fehler für die Probleme
großer Größe etwas zunahm, nahm interessanterweise der
maximale Fehler für jede Heuristik signifikant ab.
-
Da sich die zwei Heuristiken auf unterschiedliche Aspekte
des Problems konzentrieren (die Spar-Heuristik konzentriert
sich auf ein einzelnes Komponentenvolumen, während sich die
Bedarfs-Heuristik auf eine Komponentengemeinsamkeit zwischen
Platinen konzentriert), wurde gemäß einem bevorzugten
Ausführungsbeispiel der vorliegenden Erfindung eine
Verbindungsheuristik unter Verwendung des Minimums der zwei
Lösungen erzeugt; wobei das mittlere Verhalten der Verbindungs-
Heuristik wesentlich besser war als das jedes Algorithmusses
allein.
Das Mehrmaschinenproblem
-
Wir betrachten nun das ursprüngliche Mehrmaschinenproblem.
Wir nehmen an, daß die Maschinen identisch sind, so daß si =
si+1, c&sub1; = ci+1, N&sub1; = Ni+1, i = 1, ..., I-1; dies ist bei
unseren Anwendungen der Fall.
-
Ein Lösungsansatz für den Mehrmaschinenfall besteht darin,
unsere Einzelmaschinen-Heuristik sequentiell auf jede
Maschine anzuwenden; sobald wird eine anfängliche Zuweisung
von Komponenten zu Maschinen durchgeführt haben, führen wir
dann wie vorher einen Nachverarbeitungsschritt durch, um zu
bestimmen, ob einige Platinen billiger gemacht werden
können, indem dieselben neu zugewiesen werden. Für jede der
Einzelmaschinen-Heuristiken (Komponentenspar- und
Platinenbedarfs-), entwickeln wir zwei unterschiedliche
Mehrmaschinen-Heuristiken. Diese Heuristiken unterscheiden sich in dem
Ausmaß, indem wir Bauteilzuweisungen zu mehr als einer
Maschine ermöglichen: In dem ersten Fall betrachten wir, wenn
eine Komponente j einer Maschine i zugewiesen ist, dann,
wenn wir Komponenten der Maschine i+1 zuweisen, die
Komponente
j nicht länger; während wir in dem zweiten Fall eine
mögliche Zuweisung der Komponente j zu der Maschine i+1
berücksichtigen. Unsere zwei Anpassungen des
Spar-Algorithmusses für den Fall mehrerer Maschinen lauten wie folgt:
Mehrmaschinen-Komponentenspar-Algorithmus: Version 1
1. Initialisierung:
-
Es sei i = 1. Es sei SK = {1, ..., K},
SJ = {1, ..., J}.
2. ''Spar"-Komponentenzuweisung:
-
Wende den
Komponentenspar-Algorithmus unter Berücksichtigung des
Platinensatzes SK und des Komponentensatzes SJ auf die Maschine
i an.
3. Aktualisieren:
-
Entferne diejenigen Platinen aus SK, die
vollständig auf der Maschine i verarbeitet werden, und
entferne diejenigen Komponenten aus dem Satz SJ, die
der Maschine i zugewiesen sind. Es sei i = i+1. Wenn
i< I, springe zu Schritt 2 zurück.
4. Nachverarbeitung:
-
Es sei die Zuweisung von Komponenten
zu Maschinen gegeben: für jede Platine, die nicht
vollständig auf einer einzelnen Maschine verarbeitet wird,
bestimme die billigste Möglichkeit, um die Platine
herzustellen (d.h. aus einer Kombination von Maschinen
oder von Maschinen und manuell oder nur manuell).
-
Stop.
-
Die zweite Version unseres Mehrmaschinen-Komponentenspar-
Algorithmusses unterscheidet sich nur dahingehend, daß nach
dem Anwenden des
Einzelmaschinen-Komponentenspar-Algorithmusses wir aus der Berücksichtigung nur diejenigen
Komponenten streichen, die nur Platinen zugeordnet sind, die
vollständig auf der Maschine i verarbeitet werden können:
Mehrmaschinen-Komponentenspar-Algorithmus: Version 2
1. Initialisierung:
-
Es sei i = 1. Es sei SK = {1, ..., K},
SJ = {1, ..., J}.
2. "Spar"-Komponentenzuweisung:
-
Wende den
Komponentenspar-Algorithmus unter Berücksichtigung des
Platinensatzes SK und des Komponentensatzes SJ auf die Maschine
i an.
3. Aktualisieren:
-
Entferne diejenigen Platinen aus SK, die
vollständig mit der Maschine i verarbeitet werden, und
entferne diejenigen Komponenten aus dem Satz SJ, die
nur Platinen zugeordnet sind, die vollständig auf der
Maschine i verarbeitet werden können. Es sei i = i+1.
Wenn i< I, springe zu Schritt 2 zurück.
4. Nachverarbeitung:
-
Bei der gegebenen Zuweisung von
Komponenten zu Maschinen: für jede Platine, die nicht
vollständig mittels einer einzelnen Maschine
verarbeitet wird, bestimme die billigste Möglichkeit, um die
Platine herzustellen (d.h. aus einer Kombination von
Maschinen oder von Maschine und manuell oder nur
manuell).
-
Stop.
-
Analog entwickeln wir zwei Versionen eines Mehrmaschinen-
Platinenbedarfs-Algorithmusses:
Mehrmaschinen-Platinenbedarfs-Algorithmus: Version 1
1. Initialisierung:
-
Es sei i = 1. Es sei SK = {1, ..., K},
SJ = {1, ..., J}.
2. "Bedarf"-Platinenzuweisung:
-
Wende den Platinenbedarfs-
Algorithmus unter Berücksichtigung des Platinensatzes
SK und des Komponentensatzes SJ auf die Maschine i an.
3. Aktualisierung:
-
Entferne diejenigen Platinen aus SK,
die vollständig auf der Maschine i verarbeitet werden,
und entferne diejenigen Komponenten aus dem Satz SJ,
die der Maschine i zugewiesen sind. Es sei i = i+1.
Wenn i< I, springe zu Schritt 2 zurück.
4. Nachverarbeitung:
-
Bei der gegebenen Zuweisung der
Komponenten zu Maschinen: Bestimme für jede Platine, die
nicht vollständig auf einer einzelnen Maschine
verarbeitet wird, die billigste Möglichkeit, um die Platine
herzustellen (d.h. aus einer Kombination von Maschinen
oder von Maschine und manuell oder nur manuell).
-
Stop.
-
Die zweite Version lautet:
Mehrmaschinen-Platinenbedarfs-Algorithmus: Version 2
1. Initialisierung:
-
Es sei i = 1. Es sei SK = {1, ..., K},
SJ = {1, ..., J}.
2. "Bedarf"-Platinenzuweisung:
-
Wende den Platinenbedarfs-
Algorithmus unter Berücksichtigung des Platinensatzes
SK und des Komponentensatzes SJ auf die Maschine i an.
3. Aktualisierung:
-
Entferne diejenigen Platinen aus SK,
die vollständig auf der Maschine i verarbeitet werden,
und entferne diejenigen Komponenten aus dem Satz SJ,
die nur Platinen zugeordnet sind, die vollständig auf
de Maschine i verarbeitet werden können. Es sei i =
i+1. Wenn i< I, springe zu Schritt 2 zurück.
4. Nachverarbeitung:
-
Bei der gegebenen Zuweisung von
Komponenten zu Maschinen: Bestimme für jede Platine, die
nicht vollständig auf einer einzelnen Maschine
verarbeitet wird, die billigste Möglichkeit, um die Platine
herzustellen (d.h. aus einer Kombination von Maschinen
oder von Maschine und manuell oder nur manuell).
-
Stop.
-
Diese Algorithmen wurden auf einem Satz von 30
Zwei-Maschinen-Problemfällen getestet, die aus beobachteten
Verteilungen des Platinenvolumens und der Komponentenhäufigkeit und
einer Gemeinsamkeit bei dem Zusammenbauprozeß zufällig
erzeugt wurden. Der verwendete Einstellungs- und
Verarbeitungs-Aufwand spiegelt den relativen tatsächlichen Aufwand
wider und ist proportional zu der Zeit, die für jede
Operation erforderlich ist. Die Problemfälle umfaßten jeweils 20
Platinen und 100 Komponenten, wobei 35 Komponentenschlitze
auf jeder der zwei Maschinen verfügbar waren. Aufgrund der
großen Problemgröße (100 Komponenten) war es nicht möglich,
die wahre optimale Lösung für jedes Problem zu bestimmen,
weshalb wir stattdessen als untere Grenze den Aufwand des
Herstellens jeder Platine auf einer einzelnen Maschine
verwendeten:
-
Die Ergebnisse sind in Tabelle 2 gezeigt. Für alle 30
Probleme waren die Platinenbedarfs-Algorithmen den
Komponentenspar-Algorithmen überlegen, wobei die Version 2 des
Bedarfs-Algorithmusses die besten Lösungen ergab. Die mittlere
Abweichung von Jmin für die Komponentenspar-Lösungen betrug
7 bis 10%, während die mittlere Abweichung von Jmin für den
Platinenbedarfs-Algorithmus 3 bis 5% betrug. Diese
Prozentunterschiede sind unter Berücksichtigung der Tatsache, daß
die gemessene Abweichung auf einem Vergleich mit einer nicht
durchführbaren unteren Grenze basieren, ermutigend gering.
-
Wir bemerken, daß jede unserer Mehrmaschinen-Heuristiken die
einzelne Spar- oder Bedarfs-Heuristik auf jede Maschine
anwendet; folglich beträgt die Berechnungskomplexität der
Mehrmaschinen-Sparkomponenten-Algorithmen I J³log(J),
während die Berechnungskomplexität der
Mehrmaschinen-Platinenbedarfs-Algorithmen I K³log(K) beträgt. Diese Unterschiede
werden in der Laufzeit der Algorithmen widergespiegelt. Für
die Zwei-Maschinen-Beispiele von Tabelle 2 betrug die
Laufzeit unter Verwendung eines PASCAL-Programms auf einem
Macintosh IIc/x im Mittel 27 Sekunden für die
Komponentenspar-Algorithmen und im Mittel 3 Sekunden für die
Platinenbedarfs-Algorithmen.
-
Bisher haben wir den Arbeitsbelastungsausgleich noch nicht
erwähnt. Es ist möglich, daß die obigen Lösungsalgorithmen
Lösungen erzeugen können, in denen einigen Maschinen ein
viel größeres Herstellungsvolumen zugewiesen ist als anderen
Maschinen. Wir behandeln den Gegenstand des
Arbeitsbelastungsausgleichs auf die folgende Art und Weise: Wenn wir
den Algorithmus ausführen, stellen wir die Anzahl von
verfügbaren Schlitzen auf jeder Maschine auf eine Zahl ein, die
etwas kleiner ist als die tatsächliche Anzahl von Schlitzen.
(In unseren Beispielanwendungen verwendeten wir eine Anzahl,
die näherungsweise 97% der tatsächlichen Schlitzkapazität
war.) Danach betrachten wir auf einer speziellen Basis die
mögliche Neuzuweisung von Platinen unter den Prozessen. Wir
füllen die unbenutzten Schlitze mit bestimmten häufig
verwendeten Komponenten, um zu ermöglichen, daß wir die
Neuzuweisung durchführen. Diese Prozedur war bei unseren
folgenden experimentellen Anwendungen sehr wirksam.
Tabelle 2
Der Fall von zwei Maschinen: Berechnungsergebnisse für
zufällig erzeugte Probleme
-
* Prozentabweichung von
Implementierung
-
Unsere Algorithmen wurden auf zwei unterschiedliche
PC-Platinen-Herstellungsprobleme angewendet.
-
Bei beiden Anwendungen wurde der
Platinenbedarfs-Lösungsansatz verwendet. Ein Grund dafür, daß dieser Lösungsansatz
über den Komponentenspar-Lösungsansatz favorisiert wurde,
bestand darin, daß der Einstellungsaufwand relativ zu dem
Einfügungsaufwand relativ hoch war, und die
Platinenbedarfs-Lösungsansätze dazu tendieren, weniger Einstellungen
für jede Platine zu ergeben. Ferner wurde der
Platinenbedarfs-Lösungsansatz durch die Verfahrensingenieure
bevorzugt, da Platinen, die vollständig unter Verwendung eines
Prozesses zusammengebaut werden, dazu tendieren, eine höhere
Qualität und niedrigere Überarbeitungsanforderungen
aufzuweisen, als Platinen, die unter Verwendung von mehr als
einem Prozeß hergestellt werden.
-
Die erste Anwendung umfaßte eine Komponentenzuweisung in
einer Abteilung, die Test- und Meß-Ausrüstung herstellt. Die
Abteilung baute manuell ein Gemisch von mindestens 500
Platinen aus mehreren tausend Komponenten zusammen. Die
Abteilung erwarb sechs neue halbautomatische
Komponenteneinfügungsmaschinen, von denen jede Schlitze für 640 Komponenten
aufwies, und wollte einen bestimmten Teil der Produktion in
die Maschinen schieben. Dieses Problem wurde unter
Verwendung der Version 2 des
Mehrmaschinen-Platinenbedarfs-Algorithmusses gelöst. Das Ergebnis des Algorithmusses war eine
Unterteilung der Platinen in Familien, die zusammen auf der
gleichen Maschine verarbeitet werden konnten. Nach dem
Anwenden des Algorithmusses, um die Platinenfamilien zu
bestimmen, eine für jede der sechs Maschinen und den Rest für
den manuellen Prozeß, wurde ein nachfolgender Schritt
durchgeführt, um einige der Platinen unter den Maschinen neu
zuzuweisen, um die Arbeitsbelastungen der unterschiedlichen
Maschinen auszugleichen. Diese Neuzuweisung, die unter
Verwendung der beschriebenen Prozedur durchgeführt wurde, wurde
durchgeführt, da jede der sechs Maschinen von einem
unterschiedlichen Bediener gehandhabt wurde. Das
Herstellungsverfahren wurde dann eingestellt, um diese Platinenfamilien
widerzuspiegeln.
-
Die zweite Anwendung umfaßte die Herstellung von PC-Platinen
für Computer in einer anderen Abteilung. In diesem Betrieb
wird ein breites Gemisch von Platinen auf einer
Oberflächenbefestigungstechnologie-Linie (SMT-Linie; SMT = surface
mount technology), die aus einem Satz von
Komponenten-Aufnahme- und -Plazier-Einfügungsmaschinen besteht. Beim
Herstellen zweier sequentieller Platinen müssen alle
Komponenten, die für die zweite Platine benötigt werden, die sich
nicht in den Maschinen befinden, wenn die erste Platine
fertiggestellt ist, in den Maschinen eingestellt werden, bevor
die zweite Platine hergestellt werden kann. Jedoch sind
keine zusätzlichen Einstellungen notwendig, wenn zwei Platinen
des gleichen Typs sequentiell hergestellt werden. Das
Problem bestand darin, einen Herstellungsplan für die Platinen
zu bestimmen, der die Herstellungskosten minimieren würde.
Zwei unterschiedliche Lösungsansätze wurden betrachtet. Der
erste Lösungsansatz bestand darin, eine
Echtzeit-Sequenzierung der Platinen durchzuführen, um die Einstellungszeit
zwischen Platinen zu minimieren; dieser Lösungsansatz
minimiert die Anzahl von neuen Komponenten, die auf einer
Maschine eingestellt werden müssen, bevor die nächste Platine
hergestellt werden kann. Der zweite Lösungsansatz bestand
darin, die Version 2 des
Mehrmaschinen-Platinenbedarfs-Algorithmusses anzuwenden, um die Platinen in Familien zu
gruppieren, die ohne eine Einstellung zwischen Platinen
hergestellt werden konnten; in diesem Fall ist die Anzahl von
Maschinenschlitzen, die durch den Algorithmus berücksichtigt
wird, gleich der Gesamtzahl von Maschinenschlitzen in der
SMT-Linie. Der Schritt 2 des Algorithmusses wurde
wiederholt, bis alle Platinen in Familien gruppiert waren. Die
Idee der Platinenbedarfs-Lösung besteht darin, einmal für
eine einzelne Platinenfamilie einzustellen, alle Platinen in
dieser Familie zu erzeugen und dann für die nächste
Platinenfamilie einzustellen, usw.. Sobald die Platinen in
Familien gruppiert waren, wurden die Arbeitsbelastungen, die
unterschiedlichen Platinengruppen zugeordnet waren, unter
Verwendung der umrissenen Prozedur ausgeglichen. Platinen
wurden zwischen Gruppen verschoben, bis das
Herstellungsvolumen unterschiedlicher Gruppen entsprechend ausgeglichen
war.
-
Sowohl die Einstellungs-Minimierung als auch die
Platinenbedarfs-Lösungsansätze wurden unter Verwendung einer
Computersimulation ausgewertet. Obwohl der
Einstellungs-Minimierungslösungsansatz eine Lösung mit einem um zwei Prozent
größeren Durchsatz als der Platinenbedarfs-Lösungsansatz
ergab, führte die Einstellungs-Minimierungslösung lange
Zykluszeiten für Platinen ein, da der
Echtzeit-Einstellungs-Minimierungsalgorithmus den Zusammenbau bestimmter Platinen
unbegrenzt verschieben kann, wenn dieselben eine zu lange
Einstellungszeit mit sich bringen. Der
Platinenbedarfs-Lösungsansatz besitzt den Vorteil kürzerer Zykluszeiten.
Außerdem ist das Herstellungsverfahren viel einfacher zu
verwalten, wenn Platinen in Familien gruppiert sind, da nur
eine Einstellung für jede Familie von Platinen durchgeführt
werden muß. Aus diesen Gründen wurde der
Platinenbedarfs-Lösungsansatz ausgewählt und implementiert.
-
Aus dem vorhergehenden ist für Fachleute offensichtlich, daß
die Erfindung bei einem bevorzugten Ausführungsbeispiel zwei
unterschiedliche, heuristische Lösungsansätze liefert, von
denen sich einer auf das Zuweisen von Komponenten
konzentriert, während sich der andere auf das Zuweisen von
Platinen konzentriert. Beide Algorithmen ergeben für Problemen
ähnlich denjenigen, die oben beschrieben sind, gute
Lösungen, jedoch gegebene Aufwandsdaten für bestimmte
tatsächliche Zusammenbauprozesse, wobei die
Platinenbedarfs-Algorithmen bei den experimentellen Anwendungen etwas bessere
Lösungen lieferten. Dies spiegelt die Tatsache wider, daß die
Komponentenspar-Algorithmen dazu tendieren, bessere Lösungen
zu liefern, wenn der Einstellungsaufwand gering ist. Die
Platinenbedarfs-Algorithmen scheinen bessere Lösungen zu
liefern, wenn der Einstellungsaufwand hoch sind. Es wurde
herausgefunden, daß der Platinenbedarfs-Lösungsansatz den
zusätzlichen Vorteil des Lieferns einer Lösung aufweist, in
der die meisten Platinen nur einem Prozeß zugewiesen sind:
dies führt zu einer höheren Qualität und geringeren
Überarbeitungsanforderungen als bei einer Zuweisung, die die
Platinen über Prozesse aufspaltet.
-
Wir erläuterten die experimentelle Implementierung unserer
Ergebnisse für zwei unterschiedliche Herstellungsverfahren.
Die erste Anwendung - die Komponentenzuweisung für den PC-
Platinenzusammenbau bei einem Test- und Meßgerät - war das
ursprüngliche Problem, das unsere Modell- und Lösungsansätze
entstehen ließ. Die zweite Anwendung - das Erzeugen von
Platinenfamilien für die PC-Platinen-Herstellung bei einer
Computerherstellungsoperation - zeigt die Verknüpfung
zwischen unseren Lösungsansätzen und
Gruppentechnologiekonzepten. Es wird angenommen, daß unser Lösungsansatz einen
Vorteil gegenüber herkömmlichen
Gruppentechnologie-Lösungsansätzen aufweist, da wir nicht nur die Gemeinsamkeit von
Komponenten zwischen unterschiedlichen Produkten betrachten,
sondern auch das Produkt und Komponenten-Volumen.
-
Gemäß der Formulierung berücksichtigt unser Modell den
Einstellungsaufwand, der unterschiedlichen Zusammenbauprozessen
zugeordnet ist, berücksichtigt jedoch nicht die Transport-
Zeit oder den -Aufwand, der erforderlich ist, um eine
Platine zwischen unterschiedlichen Prozessen zu bewegen. In
unseren speziellen Anwendungen war der Transportaufwand nicht
signifikant, da die Maschinenkapazitäten relativ zu den
Komponentenanforderungen der einzelnen Platinen ziemlich groß
waren; folglich war es selten der Fall, daß eine Platine
unter mehr als zwei Prozessen aufgespalten wurde, als das
Problem gelöst wurde. In einigen Anwendungen kann die
Berücksichtigung des Transportaufwands zwischen Prozessen
jedoch wichtig sein.
-
Unsere Platinenbedarfs- und Komponentenspar-Algorithmen sind
entworfen, um die Datenstruktur auszunutzen, die
typischerweise in PC-Platinen-Zusammenbauverfahren zu finden ist:
unsere Algorithmen werten bestimmte Charakteristika des PC-
Platinen-Bedarfs und der Komponentenanforderungen aus,
beispielsweise eine Komponentengemeinsamkeit und breite
Schwankungen der Komponentenbenutzung und der Platinenbedürfnisse.
Wir zeigten, daß die Algorithmen für typische PC-Platinen
und Komponentenbedarfs-Daten Lösungen ergaben, die beinahe
optimal sind.