METHOD AND APPARATUS FOR OPTIMIZING THE LAYOUT AND CHARGE MAPS OF A FLOWLINE OF PICK AND PLACE MACHINES

Abstract: An apparatus uses a computer-controlled algorithm that enables production of high-quality layouts and charge maps or set-ups for arbitrary printed circuit boards for electronic components placement machines alone or as one of many in a production line. A class of algorithms known as genetic algorithms employing an initial population of chromosomes are used. Each chromosome represents a set of parameters that control how a layout and charge maps are generated. Problem descriptors, based on one time code are generated. An adaptive searcher searches parameters and generates trial solutions as chromosomes and a heuristic layout generator interprets these chromosomes to generate the layout and charge maps using the problem descriptors.

Description: Method and apparatus for optimizing the layout and charge maps of a flowline of pick and place machines. This invention relates to a method and apparatus for generating the layout and charge maps of a flowline of component placement machines by finding a near optimal solution. Such machines will load chip components onto a printed circuit board (PCB) for subsequent processing such as soldering. A typical machine includes a platform for supporting the PCB - usually supplied on a conveyor - adjacent to which are provided a plurality of part feeders. The chip components may be provided on reels of tape supplied to the feeders or as stick or bulk feeders, or in trays. The typical machine generally has a head movable in four dimensions: in the X-Y plane, parallel to the PCB; along the Z-axis, up and down with respect to the PCB and rotatable in the x-y plane with respect to the PCB. One or more grippers may be present, each gripper including a pipette module (PM) or pipette, a phi placement unit (PPU), and a nozzle. Pipettes are provided with holding power which may be suction (applied to a part through a nozzle of the pipette). Attached to an active pipette is a nozzle which typically is a vacuum nozzle (it may be a mechanical gripper) and some means to align the part precisely on the nozzle. Grippers are generally only able to pick up parts within some range of size, shape and/or weight. It is desirable to reduce time to load or populate the PCB while retaining accuracy. Newer machines use multiple grippers so that plural parts can be picked and placed during each head movement. The problem then becomes assigning parts to appropriate feeders, a plurality of feeders to limited space on feeder bars, and nozzles to PMs, and further, solving one or more head-routing problems to minimize time needed to populate the PCB. The above assignment produces a "layout" and specification of a control program for the machine as a "charge map". Combinatorial difficulties are evident with modern machines such as a Philips Fast Component Mounter (FCM) which may have 16 grippers, 96 tape feeders (feeding up to 96 part types) or 48 bulk feeders (feeding 176 part types) or a combination thereof, and a plurality of nozzles capable of handling part types of varying size. Other constraints may include that larger parts may require an additional alignment step, or larger parts in one feeder slot may block adjacent feeder slots which thus cannot be used. Combinatorial difficulties are also evident with more accurate component placement machines such as a Philips Advanced Component Mounter (ACM). An ACM may have, for example, a plurality of grippers, a plurality of parts feeders, one or more nozzle exchange units and one or more tray stackers, each for holding a plurality of trays. Constraints on machine configuration, should again be taken into account. Further constraints relate to items such as each level of a tray stacker having constraints on total size and number of trays which may be held and on part types which will fit on each level. Efficient use of tray stackers which take time to swap the trays offered to the machine, require that placement actions and tray swapping actions should happen in parallel as much as possible. Nozzles may have to be exchanged so that a matching nozzle should be available for gripping each part type. Normally, manual solutions on a trial and error basis, or computer software with manual improvements will establish a machine configuration for each new PCB layout. This method is time consuming and does not necessarily produce optimal or efficient results. A near-optimal configuration for placement on a PCB layout is available for Philips Fast Component Mounter as disclosed in Eshelman et. al, U.S. Patent 5,390,283. However, newer high accuracy component placement machines such as the Philips Advanced Component Mounter (ACM) further extend the assignment procedure. Accordingly, a good computer-controlled algorithm is needed for providing a near-optimal configuration for use with ACM machines, FCM machines and combinations of ACMs and FCMs. Such an algorithm may then be altered by one skilled in the art for use with other machines. SUMMARY OF THE INVENTION An object of the invention is to provide a method and apparatus using a computer-controlled algorithm that enables production of high-quality layouts and charge maps or set-ups for arbitrary PCBs for electronic component placement machines alone or as one of many in a production line. For a better understanding of the invention, its advantages and specific objects attained by its use, reference should be had to the accompanying drawings and descriptive matter in which there are illustrated and described the preferred embodiments of the invention. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1A is a top view of one example of an FCM machine; Figure IB is a perspective view of one pipette module of an FCM machine; Figure 2A is a top view of one example of an ACM machine; Figure 2B is a perspective view of one example of an ACM machine; Figure 2C is a side view of one pipette module of an ACM machine; Figure 3 is a view of a traylift unit; Figure 4 is a data flow diagram of a method of the present invention; Figure 5 is an example of a chromosome used by the apparatus of the present invention; Figure 6 is an example of phantom bar shares; Figure 7 is an example of a feeder bar having slots; Figure 8A illustrates a zig-zag pattern of tray assignment to pallets; Figure 8B illustrates a columnar pattern of tray assignment to pallets; Figure 8C illustrates a second zig-zag pattern of tray assignment to pallets; Figure 9 is an example of a possible or bucket concept for an FCM; and Figure 10 illustrates an example of fiducial marks on a PCB. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Figure 1 is a top view of one example of an FCM machine with 16 pipette modules and Figure IB a perspective view of one pipette module. The FCM machine includes a transport system 60 that carries a train of printed circuit boards (PCBs) 61 under a series of, in this example, 16 independent pick-and-place or pipette modules (PMs) 62. The transport system 60 advances in index steps between which the PCBs rest stationary for a period of time while the PMs place some part types. Each PM 62 has a feeder bar 63 (in front of the machine as shown in Figure 1A) to which can be attached a variety of component feeder types 64 (tapes, sticks, bulk feeders or such). Further, each PM 62 has a width, a portion of which is in its reachable zone. In this example, each PM 62 is 120 mm wide with 80 mm of this being its reachable zone although these dimensions may be easily altered. No interference between PMs is permitted. Feeders are placed within the reachable zone on the feeder bar 63. For this purpose, feeders are attached at specified intervals through feeder slots. Figure 1A shows six feeder slots. The transport system 60 feeds new PCBs into the FCM at the left end and completed PCBs exit from the right. Each PM 62 has a single movable placement head 66 with independent control in the x, y, z, and phi (rotation about z) directions. Each control can have different accelerations and maximum velocities; therefore, the travel time from a pick to a place position is the maximum of the x, y, and phi times. Movement in the z direction is accounted in a fixed delay for pick and for place. Each pipette module may be fitted with a particular nozzle for picking up parts, a phi placement unit for accurate mechanical alignment, and/or a vision system to compute alignment offset. A nozzle and phi placement unit combination, called a gripper, allows the placement of parts within certain size, shape and/or weight limits. Each part may have a particular gripper type designated or the software may select a suitable gripper from among a number of alternative grippers. For the FCM, a single board optimization task is, given a parts list, to specify the x, y, and phi location of each part and its respective gripper or list of alternative grippers and feeder type, and given a specification of a line of FCM machines (how many machines, how many PMs on each), to produce a layout and charge maps that will minimize cycle time to populate the PCBs. Other merit measures may relate to minimizing set-up and/or changeover time or minimum cycle time while minimizing a number of feeders. A user may constrain solutions by prespecifying upper limits on a number of grippers of a particular type to be used, and/or a number of feeders feeding a particular part type. The user should be free to prespecify that particular grippers be assigned to specific PMs and that particular feeder slots must feed particular part types. Some PMs and some feeder slots may be prespecified to not be used. The optimization task also includes a combined products problem. A combination of products of PCBs includes a family of closely related boards with the same external dimensions and perhaps similar parts. Some parts may be unique to one or more of the family members. Now, the best solution sought could be to minimize cycle time for a given mix of combined products where solutions for all products of the combined products share the same layout, i.e., a production line may switch from one product to another without changing any allocations of grippers to pipette modules or part types to feeders. A top view of an ACM machine 78 is schematically depicted in Figure 2A and a perspective view in Figure 2B. The ACM machine 78 includes a transport system 80 that carries a printed circuit board (PCB) 81 under, in this example, a manipulator 88. The transport system 80 advances a PCB so that the PCB rests stationary under the manipulator 88 while components are placed. In contrast to the FCM which uses index stepping and exposes only part of the PCB to each PM at each step, in the ACM machine the entire PCB 81 is reachable by all PMs of the ACM 78. The ACM 78 has a single movable manipulator 88 with at least one pipette module and gripper 90. The manipulator 88 of the present invention is a self-calibrating Cartesian robot with linear motors and linear scales. The manipulator 88 carries two grippers 90 and one fiducial camera 92 on each side of the manipulator 88. Additional grippers 90 and/or fiducial cameras 92 may be added. The manipulator 88 can move the grippers 90 within any position of the x-y field. The manipulator 88 contains two y-axis servos and one x-axis servo, each with its own integrated controller and power stages. These controllers are interfaced through an embedded network. In Figure 2C, each gripper 90 has a nozzle 104 and a PPU 105 for placing components. A pipette module 106 is equipped with individual z-height control, phi rotation control and real time force control. The pipette module 106 and gripper 90 together can pick, rotate and place components within a specified work area of the ACM 78. By placing more pipette modules 106 on the manipulator 88, machine flexibility can be extended. The ACM 78 in the example shown in Figure 2 A has four feeder bars 83. A feeder bar accepts multiple brands of tape-, stick-, bulk -, or tray-feeders 85 on front and/or rear sides of the ACM machine. Two feeder bars 83 are on the front and two feeder bars 83 are on the back of the ACM 78. The two grippers 90-a and 90-b on the front of the manipulator 88 can pick components from either of the front feeder bars and similarly, the two grippers 90-c and 90-d on the back of the manipulator 88 can pick components from the back feeder bars. Each feeder bar has feeder slots on which feeders can be assembled. The number of supported feeder bar types need not be restricted; the user should be able to attach a new feeder bar to a machine in the line configuration. One or more trays in a traylift unit can be used instead of a number of feeders 85. Feeders 85 can be shared between two placement heads on corresponding sides of the machine. For example, grippers 90-a and 90-b can share feeders 85 on the front of the ACM 78. However, not all feeders 85 need be reachable by all grippers 90 on the same side of the machine, for example the head 90 on the extreme right side of the manipulator 88 may not be able to reach feeders 85 at the extreme left end of the feeder bar 83 or vice versa. Located between the feeder bars 83 and the PCB on each side of the ACM 78, may be a nozzle exchange unit 102, a component alignment (CA) part 95, and/or a coplanarity part 93. The front side includes a nozzle exchange unit 102 and a component alignment part 95-a which is part of a vision alignment system 94 for the ACM machine 78. The back side includes a component alignment part 95-b and a coplanarity part 93. Nozzle exchange units (NEU) 102 allows nozzles 104 on the grippers 90 to be changed during machine operation. Each part to be placed has one or more nozzles which may be used to "pick" the component part for placement. Each nozzle exchange unit 102 has a number of slots for holding nozzles required for placing all or specified parts on the PCB. The manipulator 88 can exchange the nozzle of any PM by moving the PM to an empty slot in the nozzle exchange unit (NEU) 102, dropping its current nozzle in the previously empty slot, moving to a specified nozzle held by the NEU 102, and picking up the specified nozzle. As a result, the ACM has the ability to place many more package types. Vision alignment system 94 improves placement accuracy of a component with respect to the PCB 81. Possible deviations (translation, rotation) of a part with respect to a gripper and/or PCB are calculated. The vision alignment system, in this example, includes: A Fiducial Alignment (FA) part 92, mounted on the manipulator 88, for alignment with board pattern by measuring global and/or local fiducials. The FA 92 can also be used for Bad Mark Sensing (checking for the presence of special marks that instruct the machine not to populate all or part of a PCB) and feeder pick-up point calibration (calibrating and checking to determine if a part is present at the feeder). A Component Alignment (CA) part 95 located between the feeder bar 83 and the PCB 81, (in the present system, one on each side although optionally, only one on one side) for alignment and checking (2D-inspection) of components' leads, edges and bumps. Two cameras are included in each CA 95; however, each camera of each CA 95 may have a same or different lens and similarly, if two CA parts 95 are included in an ACM machine, combinations of lenses may be used. - Optionally, a coplanarity part 93, located between a feeder bar 83 and the PCB 81, for 3-D inspection on all component leads and bumps. A traylift unit 99, as shown in Figure 3, includes a cabinet or tray stack 97 storing one or more pallets, together with an automatic pallet exchange mechanism 199 which includes a lift unit 198. The pallet exchange mechanism 199 includes a lift motor 196 to lift and lower the lift unit 198. The lift unit 198 includes a puller 193 which moves the lift unit to a location to retrieve an appropriate tray using a puller motor 197. A controller 195 controls operation of these motors and units. One pallet or shelf 101-n is handled by the exchange mechanism 199, while all other pallets 101 reside in the cabinet. A pallet may hold one or more trays. Each tray 100 is placed on a pallet, and offered in its entirety to the ACM machine for component pick-up. Each tray 100 may contains a matrix of cells; each cell can contain a component. Trays 100 can be of varying heights. The components are all the same type within a tray 100, but the trays on a pallet may contain different component types. The traylift unit 99 can remove a pallet 101 from any shelf in the stack and raise it to the position appropriate to allow access by a gripper 90. A tray swap, the operation of lowering a pallet reinserting it into its shelf and retrieving another and presenting it to the manipulator, takes time which, is considered in developing a layout and charge map. In general, the manipulator 88 will move to a location on one of the feeder bars 83, for example, feeder bar 83-a where one of the placement heads 90 (90-a in this example) picks up a component. Optionally, the manipulator 88 then moves to another location on one of the feeder bars on the same side for efficiency, in this example feeder bar 83-b, where the other placement head 90-b on the same side of the manipulator picks up a second component. The manipulator 88 next moves to a part of the vision alignment system 94, in this example the CA part 95-a on the same side of the ACM 78. The manipulator 88 next moves to the PCB 81 and places one of the parts as specified (optionally imaging one or more local fiducials) and then, if applicable, places the other part as specified, the placement considering information attained from the vision alignment system 94. This operation is called a "charge". This sequence will continue, with the manipulator moving to both sides of the ACM 78 to pick-and-place all components for the PCB 81. A tray swap can be performed simultaneously while other functions are being performed, for efficiency. Due to the ability to exchange nozzles on the placement heads 90 during machine operation, optimization must consider making nozzle assignment and exchange decisions while striving for feasibility. Preferably, a minimum required feeder bar space of each appropriate nozzle is a determining factor for optimization although minimum numbers of PMs 90 assigned to each nozzle type could be considered. Nozzle assignment decisions are also considered based on a prorated share of the pick-and-place workload each PM can accomplish, although consideration could also be based on a target number of PMs 90. Constraints must be met for a charge-map to be valid. Tall trays can block neighbouring slots on the tray stacker. Appropriate nozzles of specified types must be used to pick up a component; certain nozzles can be used to pick up only appropriate parts and thus, certain nozzles can be used to pick up only from certain feeders or trays. Placement of trays within a tray stacker must be considered so that parts can be retrieved within a required time frame. Often not all grippers can reach all positions on the feeder bars, so reachability must be taken into account when determining which placement heads to use to pick particular parts. Constraints as to different speeds and accelerations when handling different package types must be considered. For the ACM machine, the manipulator can move only as fast as the slowest part picked-up. Execution times can be estimated for an FCM machine based on travel to pick location, pick-up time, travel to place location, and place time and estimated for an ACM machine based on several precomputed elements such as travel to pick location, pick-up time, travel to alignment camera, travel to place location, place time, coplanarity check, check for right location, etc.. For the FCM machines, these constraints are easier to meet as each head only handles one part at a time and the estimated execution times are simpler to calculate. For the ACM, desirability calculus used when making nozzle assignment decisions is altered from that of the FCM system. Earlier desirability calculus was based on minimum numbers of placement heads assigned to each nozzle type, whereas the present invention is based on a minimum required feeder bar space of each appropriate nozzle. Further, decisions about which nozzles are most desirable for each PM are now based on more factors than for the FCM that uses index stepping which exposes only part of the PCB to each pipette at each step, while the entire PCB is reachable on the ACM 78. Also, the weighting of these factors had to be adjusted so that the greater amount of feeder bar space on the ACM 78 does not dominate these decisions. Assigning feeders to feeder bars and part types to feeders also considers travel time from a pick location to a component alignment part. How a tray stacker is filled to stay within reachability constraints and optimize efficiency is also considered. In addition, sharing of feeder bar space between placement heads is considered. The present invention generates a near-optimal layout and charge maps for the component placement machine(s), given a list of parts to be placed and taking into account the above considerations. The apparatus may be embodied in computer program(s). For example, a parts list may optionally specify for each part to be placed, any combination of the following: a) a unique part number, b) a part type, c) package type (external dimensions), d) its location (x, and y ), e) local component fiducials, f) orientation for placement (phi rotation) and g) which members of a PCB combined products need this part. The invention includes two major items: a) HLG: a heuristic layout (charge-map) generator 31; and b) CHC: an adaptive search algorithm (genetic algorithm) for searching parameters that control HLG 30. CHC 30 generates trial solutions in the form of parameter values, i.e., trial parameter sets, and HLG 31 interprets or uses these trial solutions (for a given set of parts and placement machines) to generate layouts and charge maps, returning to CHC 30 a merit measure of each charge map's merit (in this example, an estimate of time to execute the solution) as shown in Figure 4. A merit measure may be a single value, a vector of values, or a matrix of values, for example, indicating a measure of the chromosomes merit for prespecified criterion or criteria. The heuristic layout generator (HLG) is an algorithm for solving configuration problems whose behaviour can be altered by altering a set of input parameters. HLG takes a sequential approach to generating a layout and charge-map. HLG first assigns grippers to PMs and optionally, assigns nozzles of the assigned grippers to slots in a nozzle exchange unit which it then associates with particular PMs. HLG then packs feeders (tapes, stacks, trays, ...) into available space (slot(s)) on the feeder bars and packs optional tray stackers, honouring restrictions imposed by gripper assignments already made. HLG then assigns each individual part to a gripper (with the appropriate PM and nozzle type) and to a feeder (of the appropriate type within reach of the chosen gripper), and groups the parts into charges. Once the layout and charge-map are complete, a timing model is executed to calculate the merit measure(s), in this example, a cycle time. In principle any algorithm which can generate new solutions in a parameter solution space for testing by HLG can be used with HLG. However, a parameter search algorithm should not be easily trapped by local minima, and should be able to quickly identify and concentrate upon regions of the search space that are likely to contain plausible solutions. Genetic algorithms (GA) have both of these characteristics. Here, a variant of the GA, CHC is used as the parameter search algorithm. The apparatus of the invention performs the following steps: 1. Create a machine readable file containing the parts list and a file containing problem descriptors representing a definition of the flowline or production line which may include, for example, the number and types of machines, preassignments of grippers, slots on feeder bars, feeders, etc., and constraints on machine hardware, etc. Also needed are machine readable files containing the definitions of all hardware (e.g. , feeder types, feeder bar types, grippers, machines, package types, ...) available for the task at hand and constraints on the hardware if these exist, i.e., how the hardware may interact. 2. Run one-time code in a preprocessor portion of the HLG, which examines the given problem and computes problem-specific descriptors which are used by HLG. 3. Run the problem solver which includes CHC and HLG which work together to find layouts and charge-maps with low execution times. CHC treats parameter sets as chromosomes in a simulation of an evolutionary search for high performance sets. HLG serves as an evaluator of a "fitness" of each chromosome. One-time Code: Certain tasks are performed once upon task initiation. The tasks may include reading information defining the problem and computing a number of task descriptors that will be used repeatedly while searching for a good solution. After reading the parts list that defines the PCB to be assembled and the files defining the production line and hardware available, the one-time code computes an accommodation matrix. An example accommodation matrix for a particular PCB is shown in Table 1. PPU: PIP LPIP LVPIP VPIP VPIP LPIP LPIP noz: Nl Nl Nl N5 N6 N5 N6 pkt p_types N-parts 0402 18 56 1 1 1 0 0 0 0 0603 8 150 1 1 1 0 0 0 0 QFP100 11 12 0 0 0 1 1 0 0 SO16 6 6 0 0 0 1 0 1 1 Table 1 - An example accommodation matrix For this matrix, a row exists for each package type (pkt) to be placed on a given PCB. A package type defines external dimensions of the envelope of a chip and the properties of the packaging that determine tooling requirements for picking and placing, but does not generally define electrical properties of the circuit inside. For Table 1 , the first column of the accommodation matrix lists the package type under the heading pkt, for example 0402, 0603, QFP100, and SO16. The second column, p ypes, is the number of different part_types of that package type, where each part_type is a specific type of circuit element (say a 5 Ohm resistor). The third column, n_parts, lists the total number of parts of the package type required. The remaining columns define the grippers available for the task where a gripper includes a phi placement unit (PPU) and a nozzle (noz). In this example, a " 1 " indicates that the gripper (PPU and noz) of that column can handle the row package type; a "0" indicates that it cannot. Using the accommodation matrix, the one-time code determines a composition of "phantom grippers" or phantoms for the given task. A phantom is a set of grippers that are to some extent interchangeable for handling a set of package types. In Table 1, phantom 1 includes the three grippers using the Nl nozzle and the three different PPU types, (handling the 0402 and 0603 package types) and phantom 2 includes the grippers using N5 or N6 nozzles and the VPIP and LPIP type PPUs. Note that the interchangeability of grippers within a phantom may be complete (e.g. phantom 1) or not (phantom 2); however, phantoms cannot be interchanged. Use of phantoms represents a way to partition the task into sub tasks. Two problem descriptors are then computed for each phantom: an estimate of minimum feeder bar space needed and an estimate total pick-and-place workload. The minimum feeder bar space needed is estimated a different way for FCM and ACM machines. On the FCM, feeder bars are short, allowing a limited number of ways feeders to be placed. By examining geometries of the feeder bars and the feeders available, the one-time code computes all the unique ways the feeders can be packed onto the feeder bars. Using these packings and a requirement that, at a minimum, a feeder must be available for each part type, a linear programming problem can be defined and solved to determine the minimum number of each feeder bar type needed on FCMs for each phantom. On ACMs, the feeder bars are generally longer than those on an FCM. A simple sum of widths of the feeders needed gives a reasonable estimate of minimum feeder bar space needed on ACMs for each phantom. Pick-and-place workload is also considered. This can be estimated conservatively as a lower bound on the FCM by summing round trip travel times (from pick to place and back to pick position) for each part, since FCM PMs pick and place one part at a time. These estimates are generally more complex for ACMs. Nevertheless, conservative estimates can be made for various segments of the motion of the ACM head for each part including: move to pick location, move to camera align location, move to fiducial marks, move to coplanarity checker, move to place location, move to nozzle exchange unit to remove current nozzle and pick up new nozzle, and move to next pick location. These pick-up-place work load estimates are computed by one-time code and saved for later use when building charge maps. They are combined in different ways depending on whether the charge is placing one part alone or is picking and placing two parts in tandem. For example, a first part could be picked, then a second part could be picked, the manipulator would move to a CA location, then the first part could be placed and lastly, the second part could be placed. Additionally, the manipulator could move to fiducial marks of the PCB before placing a part to insure correct location of the placement. Again, this time could be estimated. Another problem descriptor computed in one-time code is PM desirability for each gripper type for each PM in the production line. PM desirability is a heuristic number representing a relative ability to do useful work if gripper G were assigned to each PM. This measure takes into account preassigned feeders on the feeder bars accessible to each PM, possible differences in PCB exposure to the PM because of the index stepping scheme (FCM) and preassigned nozzles in the accessible NEUs (ACM). PM desirability is computed by summing an "opportunity value" for each part handled by gripper G for each feeder bar slot on the PM for each index step. This opportunity value is described in Table 2a. When this precomputed PM desirability is used on an ACM, it is multiplied by a factor that reflects the availability of the chosen hole in the NEU. The highest applicable value is used from those listed in Table 2b. Given a slot (S) on a preassigned fbar (feeder bar), a PM, a gripper_type (G) and a part (P), return, as the nozzle slot opportunity value: -B if S is preassigned a feeder preassigned only parts not covered by G 0 if S is BLOCKED to P 1 if S is empty and P's feeder ype will fit (for TRAY_STACKER, return 2 if PM & fbar on same end, else 1) B if S is preassigned P's feeder_type and there's a free pick (a pick position is available and can be used) 2X if S is preassigned P's feeder_type and one pick is preasssigned P's partjype R is a ceiling of a ratio of number of parts covered by G whose partjype differs from P's partjype (pg) to the number of parts (n jarts) whose partjypes are the same as P's R = ceil ( (grippers[G].n_parts - part ypes[pg] . n j>arts)/part Jypes[pg] . n jarts) B is approximately the slots covered by P's feeder type plus one B = (int)( (feederjype. width * n_slots/fbar. width) + 0.5 ) -1- 1 X = R * B BLOCKED to P means: S is empty, but P's feederjype won't fit, or S is unreachable, or S is BLOCKED by a feeder in a neighbouring slot, or S is occupied by a feeder preassigned another partjype covered by G, or S is occupied by a feederjype that cannot feed P Table 2a. The heuristic nozzle slot "opportunity" value 1.0 for a preassigned nozzle on the correct side 0.8 for an empty slot on the correct side 0.6 for a preassigned nozzle on the wrong side 0.4 for an empty slot on the wrong side 0.0 if nothing is available Table 2b: Attenuation values for PM desirability on ACM Machines For the ACM Machine, each PM is associated with a side of the machine and its respective feeder bars, to which it is closest (correct side). The other side which is farther away, is considered the wrong side. The Genetic Algorithm (GA) or CHC for the present example and the general workings of CHC are described in detail in a paper published by L.J. Eshelman which appeared in Foundations of Genetic Algorithms, edited by Gregory Rawlins and published by Morgan Kaufmann, San Mateo, California (1991) and presented at a meeting in Bloomington, IN, July 15-18, 1990, and the paper "The CHC Adaptive Search Algorithm: How to Have Safe Search When Engaging in Nontraditional Genetic Recombination" (hereinafter, Eshelman "The CHC Adaptive Search Algorithm"). The workings of the modified genetic algorithm (GA) or CHC is described in detail in U.S. Patent No. 5,390,283. In the present invention, genes (parameters) represented by bits or sets of bits of a chromosome string and which guide or control how a layout and a charge map are generated for controlling machine operation and which generally are machine dependent. The chromosomes or parameters of Figure 4 can take any form, but usually are in the form of a bit string 35 of ones and zeros, shown schematically in Figure 5. The bit string 35 is made long enough so that sequential groups of bits can unambiguously be used by the HLG to generate a specific machine configuration. In this example, the chromosome layout is as follows: chromosome format: all values are initially randomly assigned for each phantom if there are ACMs 4 bits fbar_share_weight if bar_choice not forced (for example, bar choice is forced if all parts go on trays or parts only go on one feeder bar type) 4 bits feeder bar weight for each feeder bar type if more than 1 feederjype 4 bits feeder type weight (one per feeder type) for each gripper type 4 bits PM weight 1 bit PM preference bit 2 bit target_fudge bit (one time code makes estimates based on pick and place workload - those estimates are used; however, GA may fudge these estimates to develop a more optimal solution) for each ACM machine n bits for NEU_ceiling (n is determined by examining each ACM - how many free NEU slots are on the NEU, taking into account preassigned slots) for each partjype not already specified to be placed by a specific machine 2 bits for machine Jype (ACM, FCM, or other) 1 bit for each ACM feeder bar (zig zag bit) 4 bits for sort option (5 for combined products) 4 bits for sort_bits (ascending/descending) (5 for combined products) 1 bit for each part (possibles :hoice) (if bit is "set" will try to conserve feeders by not giving away a new feeder, if not, will not try to conserve) The task of the HLG is to produce a complete feasible solution to a layout problem. If it succeeds, cycle time for the solution found is returned to the GA or CHC. If a feasible solution is not found, the HLG returns a numeric value, heuristically determined, that should reflect how close the HLG came to finding a feasible solution. This heuristic value is chosen so that all feasible solutions should score lower (better) than all infeasible ones, and that among infeasible solutions, those closer to feasibility score better. The charge map generator, HLG, executes a program having an algorithm that uses the following steps and parameters to generate a layout and charge map. The terms "charge map generator" and "heuristic layout generator" refer to the algorithm HLG because that algorithm generates both a layout and charge maps. Step 1: Assign grippers to PMs and/or nozzles to slots if nozzle exchange unit are being used; Step 2: Assign feeder types to feeder slots; Step 3: Assign parts to charges which include which gripper and feeder are to be used; Step 4: Run timing model to produce merit measures. Each step makes irrevocable decisions, possibly guided by parameters in the chromosome (steps 1-3), employing heuristics and using proxy performance measures. In addition, certain assignments may be preset by a user if desired. For example, certain grippers may be assigned to specific PMs, certain components to a trays in specified slots in tray stackers, or certain components to feeders in specified slots. Step 1 : Assign grippers. Pseudo code for this routine assign_grippers is shown below (HI and H2 refer to heuristics explained below) in Table 3: assign_grippers determine number_of_grippers_to_assign = number of FCM PMs + for each ACM number of NEU (Nozzle Exchange Unit) slots to use (determined by the chromosome) WHILE (number_of_grippersJo_assign > 0) { Compute the desirability of each gripper (HI) For the most desirable gripper, compute the desirability of each PM and NEU slot not yet assigned (H2) Assign the most desirable gripper to the most desirable PM placing the respective nozzle in the most desirable NEU slot if it's an ACM PM tally phantom fbar shares (H3) decrement number )f_grippersJo_assign } Table 3: Pseudo Code for Assign Grippers The desirability of each gripper (heuristic HI), is computed two different ways corresponding to two different phases of assign_grippers' operation. Each gripper has a gripper type. In phase one, assign_grippers tries to establish minimum conditions for a feasible layout. This means that every gripperjype has access to sufficient feeder bar space that at least one feeder can be accommodated for every partjype needed. This is accomplished by computing an estimated feeder_bar_shortfall (the difference between the minimum feeder bar space needed (computed in one-time code) and the amount currently assigned) for each nozzle and updating these estimates as each assignment is made. Each nozzle's desirability is a product of the feeder )ar_shortfall (neediness) and a chromosome-supplied weight (greediness). Greediness is supplied by the chromosome, with the GA learning a value for this variable. Once all feeder_bar_shortfalls are zero, indicating feasibility is enabled, phase two begins in which assign_grippers tries to establish an allocation of grippers that enables optimal levelling of the workload. For this, each gripper has a target number of PMs. The target is a number precomputed in one-time code and reflects estimates of pick-and-place workload, but it is modified by genes from the chromosome (target_fudge bit) (possibly adding a small increment). This allows the GA to compensate for poor estimates. Once a gripper is selected, the most desirable PM is selected (heuristic H2). In one-time-code a basic desirability is computed for each gripper for each FREE PM (pipette modules not assigned a specific nozzle). The basic desirability can be attenuated by chromosome-supplied weights that allow the GA to "encourage" assignments towards PMs that have access to feeder bar types which the gripper currently "needs" (depending on feeder_bar_shortfalls) . Heuristic H3 tallies feeder bar shares for each phantom. On ACMs, phantoms can "share" feeder bars. Feeders for two or more phantoms (Contending Phantoms) are placed on feeder bars which can be reached by nozzles belonging to those phantoms. A needy phantom can take the entire feeder bar space (prime, reachable areas) not leaving enough feeder bar space for its co-sharing but less demanding phantoms. No reasonable combination of feeder weights may be able to overcome this tendency. Therefore, to overcome this tendency, contending phantoms are considered together and "neediness" is determined in comparison with members of the group. A minimum space needed is reserved and allocated before extra space is given to the most greedy phantom. Each of the contending phantoms gets a prorated share of the feeder bar based on the respective fbar_share_weights, referred to as total_bar_space_allowed for the respective phantom. A fbar_share_weight is assigned for each phantom in this example, in 4 bits of a gene, representative of how "aggressive" a phantom is. For each bar, the fbar_share_weights of the phantoms sharing the bar are summed. Each phantom is then given a percentage of the feeder bar based on its percentage of the summed fbar_share_weights. This concept is illustrated in Figure 6, which provides an example of phantom bar shares for a combination of an FCM and an ACM machine. In this example, Bar 1 is shared by Phantom 1 and Phantom 2. Phantoms 1 and 2 have been assigned fbar_share_weights of 0.75 and 0.5, respectively. These fbar_share_weights are summed for shared Bar 1: 0.75 + 0.5 = 1.25. Each phantom is then given a percentage of the feeder bar based on its percentage of the summed fbar_share_weights. Thus, in this example, Phantom 1 is given (0.75/1.25)% = 60% of Bar 1 and Phantom 2 is given (0.5/1.25)% = 40% of Bar 1. Feeder bars which are assigned exclusively (100%) to one Phantom, such as, Bars 2, 5, 6 and 7. In addition to fbar sharing, another aspect of the ACM that differs from the '283 patent includes the nozzle exchange capability which called for genes to control the extent to which available NEU slots are utilized (NEU_ceiling) and special heuristics to include preassigned nozzles in NEUs in the gripper desirability calculus. In the present embodiment, nozzles in the NEU may not migrate, i.e. , each is committed to be used by only a single PM. This imposes an unnecessary restriction on the flexibility of the ACM. This restriction is relaxed by introducing an additional gene for each NEU slot that specifies that the nozzle therein may: not migrate (one allele), may migrate between PMs on the same side of the ACM (a second allele), or may migrate to any PM on the machine (a third allele). Another difference is that feeder bars need not be preassigned unless nozzles were also preassigned. Therefore, the assign_grippers function is modified, including a more elaborate tracking of preassigned feeders, since it may be unknown at problem initialization which gripper will access each feeder. Through the information acquired by the one-time code, a gripper can be preassigned to a PM. In the preferred embodiment, a nozzle preassigned to an ACM PM will not be changed with one in a NEU. In addition, the present embodiment will not recognize the PM to which the nozzle is preassigned as being free to have any other nozzles assigned to it. More specifically, nozzles preassigned to PMs are considered permanently fixed. If a PM does not have a preassigned nozzle, the invention can use all possible preassigned or unassigned slots in a NEU. This gives the user a certain control over the layout. Step 2: Assign feeder- types will now be discussed. Pseudo code for this step (the routine is called assign_feederjypes) is shown below (Fl, F2 and F3 refer to heuristics explained below) in Table 4. In Step 2, empty feeders are assigned to bars unless the feeders and/or part-types are already preassigned by the user; in which case it properly accounts for these preassignments. Feederjypes may include sticks, trays and tapes. Feeder bar types include feeder bars and tray stackers . assign_feederjypes For each feeder group (Fl) WHILE (feeder_bar_space_available > 0) { Compute the desirability of each phantom (pi) (F2) For the most desirable phantom (pbest), compute the desirability of each feederjype (F3) Choose a slot/pick combination on a feeder bar assigned to the phantom (pbest) in Step 1 (F4) Assign the most desirable feederjype to the most desirable slot/pick and tally it to the respective phantom (pbest) Update feeder_bar_space_assigned (pbest) = feeder_bar_space_assigned (pbest) + width of the feeder assigned Recalculate flowline feeder_bar_space_available = feeder J>ar_space_available - width of the feeder assigned } Table 4. Assigning feeder types. The heuristic Fl classifies the different feeder types into "groups" based on the part types specified in the part list and fixes a specific order for processing these groups: GROUP 1 preassigned feeders (by the user) which are at least partially empty GROUP 2 feeders for part types that are constrained by the user to go on FCMs GROUP 3 feeders for part types that need TRAY type feeders GROUP 4 feeders for part types that are constrained by the user to go on ACMs GROUP 5 Specialist feeders that will go on only one Feeder Bar Type GROUP 6 Generalist feeders that will go on more than one Feeder Bar Type GROUP 7 The set of all feeders Heuristic Fl regulates the order in which the available space on all the feeder bars is used up in the process of assigning feeder types. Heuristic Fl also prevents the algorithm from self-deadlocking by ensuring that constraints placed by the user are honoured and that feederjypes that are given a higher desirability by the chromosome (see Heuristic F3 as explained below) do not pre-empt less desirable feeder-types. Heuristic F2 selects the most desirable phantom to give feeder bar space. Phantoms, as discussed earlier, are determined based on the parts list. Pseudo code to determine the desirability calculus is shown in Table 5 : Given the set of phantoms (pi, p2, ..., pn) that contend for a set of feeder bars (fl, f2, ... fm) based on the assignment of grippers to PMs in Step 1 (H3) For each phantom in the contending set (pi) determine the desirability = total_bar_space_allowed (pi) from H3 - feeder_bar_space_assigned (pi) Select the phantom (pi) with the maximum desirability Table 5: Pseudo Code for Selecting Most Desirable Phantom Heuristic F3 selects the best feeder type to place based on FT (feederjype) weight (Feeder_Wt(fi)) specified by the chromosome. The desirability calculus is as shown in Table 6: For Feeder Type fi, Feeder_Group_gi If (n )icks_assigned < min )icks_needed) desirability (fi) = 1.0 + Feeder_Wt(fi) * (min ήcksjieeded - n )icks_assigned) / min )icks_needed else desirability(fi) = Feeder_Wt(fi) * (maxj)icks θssible_on_flowline - nj>icks_assigned )/ (maxj)icks )ossible_on_flowline - min ncksjieeded) Select the Feeder type with maximum desirability Table 6: Pseudo Code for Best Feeder Type Desirability Calculus Heuristic F4 selects the best slot/pick 84 on a feeder bar 83 on which to place the next feeder type. The desirability is designed to spread the feeders 85 as much as possible between feeder bars 83 but pack them as tightly as possible within a given feeder bar 85. Slotj is the slot for which desirability is being determined. Figure 7 illustrates an example of a feeder bar 83 having slots 84. Each feeder bar 83 has at least one slot 84 for accepting a feeder 85. Also shown are examples of max(left_distance, right iistance). The calculation is shown in Table 7: For BAR type Feeders: For FCM Bars: desirability (slotj) = max (left iistance, right_distance) where left (or right) distance = distance from the left (or right, respectively) edge of the feeder at slotj to the next feeder on the left (or right, respectively) side or the edge of the feeder bar, whichever comes first For ACM Bars: if (slotj is reachable by the gripper) desirability (slotj) = timeJo_CA else desirability (slotj) = 0 where time_to_CA = time to move gripper from slot to CA camera For TRAY type Feeders: if (slotj is reachable by the gripper) desirability (slotj) = lower jiistance * Wtl + time Jo ϋ A *Wt2, where Wtl and Wt2 are constants designed to make a first term (lower iistance * Wtl) one order of magnitude larger than the second term (timejo_CA * Wt2) else desirability (slotj) = 0 where lower_distance = distance from the bottom edge of the tray feeder at slotj to the next tray feeder below it ON THE SAME PICK (left or right pick on a pallet) or the edge of the feeder bar, whichever comes first If the chromosome bit "zigzag" bit is turned on for a particular tray stacker, then modulate the desirability to encourage a zigzag assignment of trays, otherwise, modulate it to assign trays in a "out" to "in" or columnar pattern with respect to pipette module reachability Table 7: Pseudo Code for Desirability Calculus for Slots As shown in Figure 7, left_distance 121 and right jiistance 122 are determined for each slot for which desirability is being determined. For a feeder bar of an ACM, the time to move the gripper to the CA 95 (timejo_CA) is considered. Assignment of trays 100 to pallets may be in either a zig zag pattern as shown in Figure 8A indicated in increasing numerical order. In Figure 8B, trays 100 are assigned in a columnar pattern as indicated in increasing numerical order. Those tray assignments shown are for access by a left gripper due to the construction of the tray stacker. If the tray stacker were placed for access by a right gripper (generally on the right end of the ACM machine), then the tray assignments would mirror those shown in Figures 8 A and 8B. For example, Figure 8C illustrates tray assignment for a zig-zag pattern. A zig zag bit is added to the chromosome to indicate whether a zig zag pattern should be followed when assigning trays to pallets or levels on the tray stacker when each pallet has at least two trays. Another alternative is to have a columnar assignment of trays. Alternative patterns for assigning trays help in situations where tray assignment is complicated by reachability considerations. Due to inaccuracy inherent in the estimation, assign eederjypes has a mechanism to raise the minimum for a particular phantom should the CHC algorithm find it exceedingly difficult to find a feasible solution in Step 2 for a particular phantom. Step 3: Level is now discussed. Pseudo code for this routine called level is shown below in Table 8 where LI and L2 refer to heuristics explained below. The concept of a bucket is inherited from the '283 patent and refers to a quantum of time- space. On the FCM, a bucket is assigned for each PM-index step combination. A bucket corresponds to an interval of time during which each PM may place parts. A goal of a balanced line will be approached as the amount of pick-and-place work done by every PM during each index step approaches the same amount. Since the ACM has no index stepping, there is one bucket for each ACM machine. Each FCM bucket has one opportunity to become a "possible" if certain conditions are met as described below. Because the ACM has multiple PM's and potentially even more nozzles, each eligible combination can be a "possible. " sort the parts as directed by the chromosome while (there are parts to place) select the next part on the list find all "possibles" (LI) if no "possibles" exist return(parts remaining to place) select a possible (L2) for an ACM "possible", further select — the closest available feeder to the CA (or an existing feeder) — point of insertion of part in charge map — which nozzle and if a nozzle exchange is needed — pick sequence, place sequence, and fiducial imaging sequence place the part in the chosen "possible" return (zero) Table 8: Pseudo Code for level The sorting of parts under chromosome control, by and large, occurs as described in the '283 patent. However, a significant additional functionality is controlled by the machinejype genes. With more than one machine type in a production line, the user must specify for each part which machine type shall be used to place it. In the current embodiment, there are three choices: A, F, or E, where A specifies that the part must be placed by an ACM machine, F specifies FCM, and E specifies that either machine type may be used. The one-time-code identifies the E parts, if any, and creates a gene in the chromosome for each one called the machinejype gene. At present these genes have four alleles (two bits): one for ACM, one for FCM, and two for either. Clearly, additional machines may be added. When the list of parts is sorted, and if the machinejype_genes are used, then the major (first) sort field is the machine types. Often, this approach yields superior solutions than not doing so. An exception is when the production line has many preassignments of nozzles and or feeders. These are likely to constrain the feasible choices of which machine type to use, and in these cases the machine _type_genes are not used. Conditions (LI) for a bucket to be eligible for placing a part, i.e., to become a "possible" are: - An appropriate nozzle must be available (either preassigned to one of the PMs or assigned by Step 1 in the NEU), An appropriate feeder type or tray must be available (either free, assigned by Step 2, or assigned to the right part type). The decision of which feeder to employ is also made in the FCM case, but the choice is much simpler. On the ACM, there may be two feeder bars or tray stackers, or a combination, to choose between. Of the set of all free feeders, the one closest to the camera (shortest pick travel) is chosen. In a manner analogous to that used in the '283 patent (L2), a simple greedy algorithm selects where adding the given part will make the minimum impact on the line heartbeat time. This selection may, under chromosome control, be from all eligibles possible or only from among those where an available feeder has already been committed to the required part type. The comparisons may include FCM as well as ACM possibles. In an FCM possible or bucket the "impact on the line heartbeat time" is a simple calculation because an FCM PM places one part at a time. An FCM bucket includes a list of parts and for each part the round-trip time to pick and place the part. These times are calculated in one-time code and may add together to come up with the total time for the bucket. The "impact on the line heartbeat time" of adding one more part to the possible is machine_slack plus bucket_slack minus the round-trip time to pick and place the part. The ordering of parts in the bucket has little or no impact on the total time. Bucket_slack is a difference between heartbeat time and bucket time needed to do its work (FCM). Machine jime is a sum of all heartbeats (FCM) or charge map execution time (ACM). Machine_slack is the respective machine's machine Jime minus a slowest machine time. Figure 9 illustrates an example of buckets on an FCM, some of which are "possibles". Each step represents a period of time or each index step, when each PM (in this example, 0-15) may place parts. Some parts have already been assigned to some buckets. For example, in step 0, PMs 0, 1, 3, and 5 all place parts resulting in a heartbeat indicated by heartbeat 0. A heartbeat represents the maximum time for part placement of parts assigned to the slowest PM in the line. For this example, in step 2, PM 5 has been assigned placement of parts which require the most time for placement with respect to the other PMS. Heartbeat 2 indicates this maximum time. Slack time in bucket (0,2) indicates the free time that PM 0 has in step 2. All buckets and possibles in a same index step share a same heartbeat time or execution time of the slowest PM. A true cycle time must account for movement of the transport system and movement of the grippers between pick positions, but can deduct gripper movement times that occur simultaneously with transport movement. All possibles must be balanced. This is further discussed in patent '283. In contrast, ACMs often pick up more than one part at a time before moving to place the parts. Additional features, such as performed by various parts of the vision alignment system, require additional time. Unlike the FCM, ACMs are given one charge map for the entire machine. Pseudo code for computing the desirability of an ACM possible is shown below in Table 9. Al and A2 refer to heuristics used to make the associated decisions. Given a part and an ACM PM for each compatible nozzle assigned to this PM for the most desirable slot on either fbar (Al) compute possible desirability (A2) retain it if it is best Table 9: Pseudo code for computing desirability of ACM possible ACM PMs can access two feeder bars (fbars) or tray stackers, but a compatibility check with the part is performed before trying to select a slot. The desirability (Al) of each slot is a precomputed (in one-time code) value called slotjravel and is the travel time to the CA 95 by the given PM 106, provided a compatible feeder is available in the slot. The smallest number is the most desirable, with preference being given to a feeder that may already have been assigned the appropriate part type. "Possibles" desirability (A2) is an estimate of machine_slack minus the amount by which the charge-map execution time would be increased if the part were placed by the given PM. The ACM charge map includes charges. Each charge includes one or two parts picked from the front or rear side of the ACM machine. Pseudo code of heuristic A2 is shown below in Table 10, also determines the most desirable position in the charge map for a given part. A new part could include a new one-part charge in the charge map or could be paired with an existing one-part charge to create a two-part charge. This is done given constraints on the swapping in and out of nozzles needed for this part and of sequencing of pick and place actions. Given a part and an ACM PM, feeder slot and nozzle index Check if the PM/nozzle combination is already used in the charge map If so jump to the first charge that uses that PM/nozzle combination If not, jump to the first break point (i.e., where the initial nozzle is first swapped out of this PM) and subsequent break points (where subsequent nozzle swaps occur). * the previous nozzle (if any) on this PM must be returned to its slot and the new nozzle must be picked up : a nozzle exchange penalty is incurred. Loop through the list of subsequent charges Check if this is a compatible one-part charge — the "other" PM is used for the existing part ~ the existing part is picked from a feeder on the same "side" If compatible, determine the time effect of making this a 2-part charge * effect on the next charge in the charge map. * effect of an optimized pick sequence, place sequence and fiducial imaging sequence to use in the two part charge * if the first part is fed on trays or on programmable index feeders, account for the tray exchange or feeder indexing If incompatible, determine time effect to insert a new 1-part charge * effect on the next charge in the charge map. * if the part is fed on trays or on programmable index feeders, account for the tray exchange or feeder indexing If nozzle/PM combination has not been used in the charge map compute time penalty * of picking up the nozzle * creating a one part charge and inserting it or appending it to the charge map Table 10: Pseudo code of Heuristic A2 Heuristic A2 is designed to have the following effects; however, these are not explicitly programmable into Heuristic A2 unless otherwise noted. a) A charge map is a sequence of charges where each charge includes one or two parts picked and placed by PMs on the same "side" of the ACM. In general, a timing model of the charge map favours construction of two-part charges where both PMs pick up parts, have them aligned at the CA unit, check fiducial marks, and place parts. (The sequence within a charge map may vary, i.e., a coplanarity unit may be visited before a part is placed.) Under some circumstances, however, based on the criteria to be optimized, one-part charges may be better. b) Consecutive charges in the charge map tend to pick from opposite "sides" of the ACM to minimize travel. Under some circumstances, however, based on the criteria to be optimized, same side charges may be better. c) Following a "pick up" of a nozzle from the NEU by a certain PM, a series of charges are created where parts are picked and placed using that nozzle. Eventually that nozzle may be "swapped out" and a new different nozzle may be "swapped in" by the PM. In the present embodiment, a restriction built into the heuristic for minimizing nozzle exchanges is that a nozzle once swapped in by the PM, used to pick parts, and then swapped out will not be swapped in again later in the charge map. If the same nozzle type is present twice or more in the NEU, this restriction would not apply. d) A two-part charge has a pick sequence and a placement sequence. Pick sequence defines a sequence in which parts are picked and similarly, place sequence defines a sequence in which parts are placed. An optimal pick sequence is determined by analyzing which produces a more desirable sequence, based on shortest time, by determining the timing of both alternatives (i.e., pick by PM1 followed by pick by PM2 and then on to the CA unit, and vice versa.) The shorter time of the two alternatives is chosen for "picking" for the particular charge. The same analysis is performed for the placement sequence. A fiducial imaging sequence defines in what sequence fiducial marks are checked. Fiducial marks 151 and 152 are present on the PCB 81 as a means of providing information regarding the location at which the manipulator is. As shown in Figure 10, fiducial marks may exist on various locations on the PCB 81. If a part is to be placed, for example, at location Y 153, the manipulator 80 (not shown) will move to a location so that an appropriate fiducial alignment (FA) part 92 (not shown) may measure the global and/or local fiducial. In this example, the manipulator may be moved so that the FA part 92 may measure fiducial S 151 and then fiducial T 152 or vice-versa. This sequence is determined to speed-up the fiducial checking and parts placing actions and is one of the time estimates calculated in one-time code, e) If delays due to tray exchanges require a PM to wait in place, a time penalty is added to the charge. This, discourages such solutions. This is also true of tape feeders (generally large tape feeders) which involve significant tape index time. These charges are then combined to form a charge map for each machine. When prespecified criteria have been met, an optimal or near optimal solution is developed as discussed in Eshelman, "The CHC Adaptive Search Algorithm."

Claims: CLAIMS: 1. An optimizer for generating layout and charge maps of a flowline of component placement machines, said optimizer comprising: means for creating an initial population of chromosomes, each chromosome representing a set of parameters that control how a layout and charge maps are generated; means for generating problem descriptors based on one time code; an adaptive searcher for searching parameters and generating trial solutions as chromosomes; and a heuristic layout generator interpreting these chromosomes to generate the layout and charge maps using the problem descriptors, determining a merit measure for each generated layout and charge map and returning the merit measure to the adaptive searcher, said adaptive searcher generating new chromosomes based on the merit measure and prior chromosomes, and said heuristic layout generator providing final optimized charge maps and a layout when prespecified criteria based on the merit measures are met. 2. An optimizer as recited in Claim 1 , wherein said heuristic layout generator comprises: means for assigning grippers to pipette modules and, if a nozzle exchange unit is present in any of said component placement machines, assigning nozzles to slots in the nozzle exchange unit. 3. An optimizer as recited in Claim 1, wherein said heuristic layout generator comprises: means for assigning feeder bars to specific component placement machines, feeders to available slots on feeder bars and, if a tray stacker is present in any of said component placement machines, assigning pallets and trays to available slots on the tray stackers. 4. An optimizer as recited in Claim 1 , wherein said heuristic layout generator comprises: means for assigning each part to be placed on a printed circuit board, to a gripper of a plurality of grippers having an appropriate pipette module and a nozzle of a plurality of nozzles. 5. An optimizer as recited in Claim 1 , wherein said heuristic layout generator comprises: means for assigning grippers to pipette modules and, if a nozzle exchange unit is present in any of said component placement machines, assigning nozzles to slots in the nozzle exchange unit and associating each nozzle to a respective pipette module; means for assigning feeders to available slots on feeder bars and, if a tray stacker is present in any of said component placement machines, assigning pallets and trays to available slots on tray stackers; means for assigning each part to be placed on a printed circuit board, to a gripper of a plurality of grippers having an appropriate pipette module and a nozzle of a plurality of nozzles; and means for calculating a merit measure. 6. An optimizer for generating layout and charge maps of a flowline of component placement machines, said optimizer comprising: a pre-processor creating problem descriptors based on at least one file containing a parts list, a definition of the flowline, said flowline including a number and types of machines, and specifications of all hardware based on specified information; a problem solver including an adaptive searcher and a heuristic layout generator, for finding a layout and charge maps meeting prespecified criteria. 7. An optimizer as recited in Claim 6, wherein said adaptive searcher analyzes chromosomes based on initially randomly assigned chromosomes, and produces new chromosomes in a simulation of an evolutionary search for high performance sets. 8. An optimizer as recited in Claim 7, wherein: said heuristic layout generator evaluates a fitness of each chromosome and communicates at least one fitness value of each chromosome to said adaptive searcher; and said adaptive searcher produces new chromosomes in response to the fitness values received. 9. An optimizer as recited in Claim 6, wherein: said charge map specifies which parts are to be placed, by which gripper and in what order; said file sets forth problem descriptors, for each part type, a package type and a number of those parts required to be placed; each said preprocessor produces an accommodation matrix based on the file produced by said processor, said accommodation matrix setting forth nozzles and phi placement units useable by each package type. 10. An optimizer as recited in Claim 9, wherein: said problem solver determines a composition of phantom grippers based on the accommodation matrix; problem descriptors are computed for each phantom gripper; said heuristic layout generator comprises: a calculator calculating gripper desirability for each gripper in the flowline and assigns grippers to pipette modules; a first analyzer analyzing feeder types and feeder slots and assigning each feeder type to a feeder slot; a second analyzer assigning parts to charges including which gripper and feeder are to be used; and a timing processor running a timing model to produce merit measures. 11. An optimizer as recited in claim 10, wherein the first analyzer includes: means for establishing minimum conditions for a feasible layout; and means for establishing an allocation of grippers to enable an optimal levelling of workload. 12. An optimizer as recited in claim 11 , wherein: means for establishing minimum conditions for a feasible layout comprises: a) means for determining a number of grippers to assign; b) means for determining for each gripper, a desirability of each gripper; c) means for determining for a most desirable gripper based on the desirabilities determined, a desirability of each pipette module not yet assigned; d) means for assigning the most desirable gripper to a most desirable pipette module including tallying feeder bar shares for each phantom gripper; and e) means for ascertaining that each gripper has been assigned. 13. An optimizer as recited in claim 11 , wherein: at least one component placement machine comprises a nozzle exchange unit for holding nozzles, the nozzle exchange unit having slots for holding nozzles; and means for establishing minimum conditions for a feasible layout comprises: a) means for determining a number of grippers to assign; b) means for determining for each gripper, a desirability of each gripper; c) means for determining for a most desirable gripper based on the desirabilities determined, a desirability of each pipette module not yet assigned; d) means for assigning the most desirable gripper to a most desirable pipette module including tallying feeder bar shares for each phantom gripper; and e) means for ascertaining that each gripper has been assigned. 14. An optimizer as recited in claim 13, wherein: each feeder bar has slots and each gripper is one of a plurality of gripper types; said calculator for calculating the desirability of each gripper includes: a summer for summing a nozzle slot opportunity value for each part handled by a gripper for each feeder bar slot on the pipette module comprising: means for determining for a given slot on a preassigned feeder bar, a pipette module, a gripper type and a part, a status of a given slot; means for calculating a ceiling of a ratio of a number of parts covered by the gripper whose part type differs from the given part's part type; and means for calculating the nozzle slot opportunity value using the ceiling of the ratio the number of parts and a slot value representing an approximation of slots covered by the feeder type of the given part plus one. 15. An optimizer as recited in Claim 6, wherein prespecified criteria include at least one of low execution times, minimum feeders, and minimum amount of hardware. 16. An optimizer as recited in Claim 10, wherein said calculator performs desirability calculations to make gripper assignment decisions based on a minimum required feeder bar space. 17. An optimizer as recited in Claim 10, wherein said calculator performs desirability calculations to make gripper assignment decisions based on a prorated share of a pick and place workload each gripper can accomplish. 18. An optimizer as recited in Claim 10, wherein said calculator comprises: means for computing a desirability of each gripper; means for determining a most desirable gripper and a respective machine of the most desirable gripper, and computing a desirability of each pipette module not assigned and a desirability of each nozzle exchange unit slot not assigned, if a nozzle exchange unit is present on a component placement machine of the flowline; means for assigning the most desirable gripper to the most desirable pipette module, placing a respective nozzle in the most desirable nozzle exchange unit slot, if a nozzle exchange unit is present on the respective machine; and means for tallying phantom feeder bar shares. 19. A method for operating an optimizer as claimed in Claim 1.

Inventors: MANI MURALI, SCHAFFER JAMES DAVID, MANI, MURALI, SCHAFFER, JAMES, DAVID
Applicants: PHILIPS ELECTRONICS NV, PHILIPS NORDEN AB, PHILIPS ELECTRONICS N.V.
Application year: 1997
Main classification: H05K13
IPC codes: G06F15, G06N3, H05K13