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

Abstract: A method 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. BACKGROUND OF THE INVENTION Electronic component placement machines or pick-and-place machines, are used to load chip components or parts onto a printed circuit board (PCB) for subsequent processing such as soldering the components to PCB traces. 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 components may be provided on reels of tape supplied to the feeders or as stick or bulk feeders. Components may also be provided in trays. The 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 gripper which typically is a vacuum nozzle or a mechanical gripper and some means to align the part precisely on the gripper. Grippers are typically only able to pick up parts within some range of size, shape and/or weight. To improve production throughput, it is desirable to reduce time to load or populate the PCB while maintaining 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 occur with modern machines such as a Philips Fast Component Mounter (FCM) which, in one embodiment 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. Also other constraints on machine configuration have to be taken into account. For example, 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, 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, as for the FCM, have to be taken into account. In addition, constraints such as, for example, each level 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 must be considered. 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 to the extent possible. Further, nozzles may have to be exchanged so that a matching nozzle is available for gripping each part type. Manual solutions, on a trial and error basis, or computer software with manual improvements are normally used to establish a machine configuration for each new PCB layout. This method is time consuming and does not necessarily produce efficient results. It is also difficult to judge, whether the configuration chosen is optimal. A near-optimal configuration for placement on a PCB layout for the FCM has been disclosed in U.S. Patent 5,390,283 (hereinafter '283 patent). However, component placement machines which provide greater accuracy of placement, such as the Philips Advanced Component Mounter (ACM) may also be required for part placement. Accordingly, a good computer-controlled algorithm capable of providing a near-optimal configuration for use with ACM machines, FCM machines and combinations of ACMs and FCMs is needed, as is such an algorithm which one skilled in the art may alter 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 better understanding of the invention, operating 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 The method of the invention is generally applicable to electronic component placement machines having at least one pipette module to which at least one or more grippers are attached, movable in at least four dimensions sequentially or simultaneously. The invention allows for use of one or more FCM machines, one ore more ACM machines or a combination of FCM and ACM machines. The invention is not limited to particular machines but instead, will be generally applicable to any machines in the class as defmed. A top view of one example of an FCM machine with 16 pipette modules and Figure 1A and a perspective view of one pipette module in Figure IB. Transport system 60 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 such as tapes, sticks, or bulk feeders. 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 reachable. No interference between PMs is permitted. Feeders are placed within the reachable zone on the feeder bar 63 by attaching 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 (left to right), y (front to back), z (up/down), 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 a vision system to compute alignment offset. A nozzle and phi placement unit combination is called a gripper and 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, specifying the x, y, and phi location of each part to be placed 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), produce a layout and charge maps that will, minimize cycle time required to populate the PCBs with all their parts. Other merit measures may be substituted or added, such as minimizing set-up and/or changeover time or minimum cycle time while minimizing a number of feeders. The optimization should allow a user to 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. Additionally, 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 includes a combined products problem. A combination of products of PCBs includes a family of closely related boards (family members) with the same external dimensions and perhaps similar parts. Some parts may be unique to a subset of family members. The optimization goal for a combined products problem is to find the best solution based on merit measures. As one example, the best solution could be minimum 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 essentially 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. The FCM uses index stepping and exposes only part of the PCB to each PM at each step, but in the ACM machine 78 the entire PCB 81 is reachable by all PMs. The ACM 78 shown has a single movable manipulator 88 with at least one pipette module and gripper 90. The manipulator 88 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 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. As shown 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. Placing more pipette modules 106 on the manipulator 88, will extend machine flexibility. The ACM 78 in the example shown in Figure 2A, 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. Here, two feeder bars 83 are on a front of the ACM 78 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; a user may invent a new feeder bar and attach it to a machine in the line configuration. Each feeder bar 83 has a set of feeders 85 that are used for presenting parts to a gripper for pick-up and disposing of the packaging. 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 a single side of the machine. For example, grippers 90-a and 90-b can share feeders 85 on the front of the ACM 78. Depending on the machine, not all feeders 85 may be reachable by all grippers 90 on the same side of the machine. For example head 90 on the extreme right side of manipulator 88 may not be able to reach feeders 85 at the extreme left end of feeder bar 83. 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. As shown, 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 of this example 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. One or more nozzles may be used to "pick" a particular component part for placement. Each nozzle exchange unit 102 has a number of slots for holding nozzles required for placing all or specified parts. 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 may place many more package types than if the grippers had nozzles assigned and fixed. A 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 the following: 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 to check 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. Here, two cameras are included in each CA 95; each camera of each CA 95 may have a same or different lens. Optionally, a coplanarity part 93, is 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 contain a matrix of cells; each cell can contain a component. Trays 100 can be of varying heights and can hold various types of components. The components are all the same type within a single tray, but various 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. Of course, 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, in the present invention 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, such as feeder bar 83-a where one of the placement heads 90 such as 90-a 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 if applicable, places the other part as specified, the placement considering information that has been 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. An optimal solution for picking-and-placing all components on a PCB 81 is desired. For the ACM, optimization considerations include reachability constraints in that not all placement heads can reach all positions on the feeder bars. Feasible solutions must be found that do not require more space than is available on feeder bars. Further, the manipulator 88 must not exceed various accelerations in different directions when handling different components. Due to the ability to exchange nozzles on the placement heads 90 during machine operation, optimization must consider making nozzle assignment and exchange decisions. In the embodiment, a minimum required feeder bar space for each appropriate nozzle is used in optimizing 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 as to different speeds and accelerations when handling different package types must be considered for both ACM and FCM machines. 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, and other possible factors, such as coplanarity check and checks for right location. 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, as set forth in the '283 patent. User constraints, such as assigning a specific nozzle to a pipette module and/or a specific feeder or part type to a specific slot on a feeder bar or traylift unit, also must be considered. Differences in structure and function between ACMs and FCMs may impact the approach. To account for the structure of the ACM, desirability calculus used when making nozzle assignment decisions while striving for feasibility is altered from that of the FCM system of the '283 patent. In the '283 system, desirability calculus was based on minimum numbers of placement heads assigned to each nozzle type. In the present invention, it is based on a minimum required feeder bar space of each appropriate nozzle. In addition, the desirability calculus used when making nozzle assignment decisions while striving for optimum balance was changed from being based on a target number of pipette modules to being based on a prorated share of the pick-and-place workload each nozzle can accomplish. Further, decisions about which nozzles are most desirable for each PM are now based on more factors than when using the '283 FCM, since the FCM 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 is 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. Use of trays and tray stackers is also considered. Pairing and packing trays of varying heights, widths and depths for example, on different levels of the tray stacker to minimize the disparity between heights, widths and depths of trays on each level and arranging the trays within the stack to minimize the number of tray exchanges and time between exchanges are also factors considered in developing a charge map. Further, for which machine, FCM or ACM, or a combination of machines, should be used for each part type is also 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 method 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 present 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), such as a resulting cycle time. In principle any algorithm which can generate new solutions in a parameter solution space for testing by HLG can be used in conjunction with HLG. 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 these characteristics. In the configuration algorithm, a variant of the GA, CHC is used as the parameter search algorithm. The method of the invention includes 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 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 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. These tasks may include reading of information defining the problem to be solved 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 VPLP 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 The accommodation matrix has a row for each package type (pkt) to be placed on a given PCB. A package type is a designation known in the industry that defines external dimensions of the envelope of a chip and the properties of the packaging that determine tooling requirements for picking and placing; however, this designation does not generally define electrical properties of the circuit inside. For the example of 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_types, 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, in the body of the accommodation matrix, 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 gripper is a set of grippers that are to some extent interchangeable for handling a set of package types. In the example of Table 1, two phantoms are present: a first one (phantom 1) including the three grippers using the Nl nozzle and the three different PPU types, (handling the 0402 and 0603 package types) and a second one (phantom 2) including 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, interchangeability between phantoms is not present. 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 can 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 one 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. The pick-and-place workload can be estimated conservatively (i.e. 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, among others. These pick-up-place workload 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. 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 feederjype will fit (for TRAY_STACKER, return 2 if PM & fbar on same end, else 1) B if S is preassigned P's feederjype and there's a free pick (a pick position is available and can be used) 2X if S is preassigned P's feederjype 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_parts) whose part_types are the same as P's R = ceil ( (grippers [G].n_parts - part_types[pg] .n j)arts)/part_types[pg] .n_parts) B is approximately the slots covered by P's feeder type plus one B = (int)( (feeder_type.width * n_slots/fbar. width) + 0.5 ) + 1 X = R * B BLOCKED to P means: S is empty, but P's feeder_type 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 feeder_type 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 one side of the machine and its respective feeder bars, to which it is closest (correct side). The other side is farther away, and considered the wrong side. The Genetic Algorithm (GA) or CHC its general are described in a paper by L.J. Eshelman 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, the paper entitled "The CHC Adaptive Search Algorithm: How to Have Safe Search When Engaging in Nontraditional Genetic Recombination" (hereinafter, Eshelman "The CHC Adaptive Search Algorithm"). The modified genetic algorithm (GA) or CHC is described in U.S. Patent 5,390,283. Genes or parameters are represented by bits or sets of bits of a chromosome string and guide or control, how a generally machine dependent layout and charge map are generated for controlling machine operation. While the chromosome or parameters of Figure 4 can take any form, for simplicity it is usually 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. Here, the chromosome layout is as follows, although one skilled in the art could modify the chromosome or create a new chromosome chromosome format, 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 machinejype (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 oice) (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, the cycle time for the solution found is returned to the GA or CHC. If no feasible solution is 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 is 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; and 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 trays in specified slots in tray stackers, or certain components to feeders in specified slots. The operation of each step will be described in detail. Step 1: Assign grippers is now described. Pseudo code for this routine assign_grippers, is shown (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_of_grippers_to_assign } Table 3: Pseudo Code for Assign Grippers The desirability of each gripper (heuristic HI), is computed in 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_bar_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 (not assigned a specific nozzle). The basic desirability can be lowered 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 )ar_shortfalls) . Heuristic H3 tallies feeder bar shares for each phantom. On ACMs, phantoms can "share" feeder bars. Feeders for two or more phantoms (called 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, reacheable 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. 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 away 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. Figure 6 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. Certain feeder bars such as, Bars 2, 5, 6 and 7, are assigned 100% to a single Phantom. However Phantom sharing for a particular feeder bar based is feasible. Another aspect of the ACM requires a step different from those in the '283 patent to include 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, but, 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 differing aspect from the '283 patent is the relaxation of he requirement that feeder bars may 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 embodiment, a nozzle preassigned to an ACM PM will not be changed with one in a NEU. In addition, the 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, all possible preassigned or unassigned slots in a NEU may be used. This gives the user a certain control over the layout that will be considered. Different conventions are feasible. Step 2: Assign feeder-types will now be discussed. Pseudo code for this routine is called assign_feeder_types 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_feeder_types 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_bar_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 It is possible to assign feeders based on part types' package types where the feeder is not explicitly specified. 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 feeder_types that are given a higher desirability by the chromosome (see Heuristic F3) do not pre-empt less desirable feeder-types. Heuristic F2 selects the most desirable phantom to give feeder bar space. Phantoms are determined as 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 (njpicks_assigned < min_picks_needed) desirability (fi) = 1.0 + Feeder_Wt(fi) * (minjpicks ieeded - nj>icks_assigned) / minjήcks ieeded else desirability(fi) = Feeder_Wt(fι) * (maxjpicks_possible_on_flowline - n jπcks_assigned )/ (maxj)icksj)ossible_on_flowline - minjήcksjieeded) 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_distance). Further, left_distance 121 and right_distance 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 (time_to_CA) is considered. Table 7 calculates desirability: For BAR type Feeders: For FCM Bars: desirability (slotj) = max (left_distance, right_distance) where left (or right) distance = distance from the left (or right, respectively) edge of the feeder at slot to the next feeder on the left (or right, respectively) side or the feeder bar edge, whichever comes first For ACM Bars: if (slotj is reachable by the gripper) desirability (slotj) = time_to_CA else desirability (slotj) = 0 where time_to_CA = time taken to move the gripper from the slot to the CA camera For TRAY type Feeders: if (slot is reachable by the gripper) desirability (slotj) = lower_distance * Wtl + time_to_CA *Wt2 where Wtl and Wt2 are constants designed to make a first term (lower_distance * Wtl) one order of magnitude larger than the second term (time_to_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 Assignment of trays 100 to pallets may be in a zig zag pattern as shown in Figure 8A in increasing numerical order. Alternatively, 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. For access by a right gripper (generally on the right end of the ACM machine), the tray assignments would minor those shown in Figures 8A 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, as in this example, 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 need consider reachability. Due to inaccurate estimation, assign_feeder_types has a mechanism to raise the minimum for a particular phantom should the CHC algorithm find it too difficult to find a feasible solution in Step 2 for a particular phantom. Step 3: Level is now discussed. A pseudo code routine called level is shown 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 may be thought of as 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. 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, 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 has by and large been described in the '283 patent. A significant extra 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 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 machine_type gene. At present these genes have four alleles (two bits): one for ACM, one for FCM, and two for either, although 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. Experience has shown that usually, this approach tends to yield superior solutions, except 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. Just as in the '283 patent (L2), a simple greedy algorithm selects the "possible" where adding the given part will make the minimum impact on the line heartbeat time. Under chromosome control this may be selected from all eligible "possibles" or only from among those where an available feeder has already bar 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 are added together to get 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 "possible" total time. Bucket_slack is a difference between heartbeat time and bucket time needed to do its work (FCM). Machine_time is a sum of all heartbeats (FCM) or charge map execution time (ACM). Machine_slack is the respective machine's machine_time 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 placement of parts assigned to the slowest PM in the line. In step 2, PM 5 has been assigned the placement of parts which requires the most time 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. Balance between all possibles is desired, as 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 value in one-time code called slot_travel 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, to determine 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 not compatible, check the 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 the nozzle/PM combination has not been used in the charge map check the 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 programmed into Heuristic A2 unless otherwise noted. a) A charge map is a sequence of charges where each charge includes, in this example, 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. Certain circumstances, based on the criteria sought to be optimized, may cause one-part charges to be better. b) Consecutive charges in the charge map tend to pick from opposite "sides" of the ACM to minimize travel. Under some circumstances, based on the criteria sought 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 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, such as 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 determines which sequence 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 to provide information on the actual location of the manipulator. 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. 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 based on minimizing execution time of 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 solutions where a tray needs to be exchanged while the PM waits. This is also true of (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. A method for generating layout and charge maps of a flowline of component placement machines, said optimizer comprising: a) creating an initial population of chromosomes, each chromosome representing a set of parameters that control how a layout and charge maps are generated; b) generating problem descriptors based on one time code; c) searching parameters and generating trial solutions as chromosomes; and d) 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, wherein said step c) further generates new chromosomes based on the merit measure and prior chromosomes, and said step d) further provides final optimized charge maps and a layout when prespecified criteria based on the merit measures are met. 2. A method as recited in Claim 1, wherein said step d) further comprises: 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. A method as recited in Claim 1, wherein said step d) further comprises: 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. A method as recited in Claim 1, wherein said step d) further comprises: 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. A method as recited in Claim 1, wherein said step d) further comprises: i) 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; ii) 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; iii) 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 iv) calculating a merit measure. 6. A method for generating layout and charge maps of a flowline of component placement machines, said method comprising the steps of: 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; b) problem solver including an adaptive searcher and a heuristic layout generator, for finding a layout and charge maps meeting prespecified criteria. 7. A method as recited in Claim 6, wherein the adaptive searching of step b) analyzes chromosomes based on initially randomly assigned chromosomes, and produces new chromosomes in a simulation of an evolutionary search for high performance sets. 8. A method as recited in Claim 7, wherein: the heuristic layout generating of step b) evaluates a fitness of each chromosome and communicates at least one fitness value of each chromosome to said adaptive searcher; and the adaptive searching produces new chromosomes in response to the fitness values received. 9. A method 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; said preprocessor of step b) 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. A method as recited in Claim 9, wherein: said problem solving of step b) determines a composition of phantom grippers based on the accommodation matrix; problem descriptors are computed for each phantom gripper; said heuristic layout generating of step b) comprises the further steps of: calculating gripper desirability for each gripper in the flowline and assigns grippers to pipette modules; analyzing feeder types and feeder slots and assigning each feeder type to a feeder slot; assigning parts to charges including which gripper and feeder are to be used; and running a timing model to produce merit measures. 11. A method as recited in claim 10, wherein the step of analyzing feeder types includes: establishing minimum conditions for a feasible layout; and establishing an allocation of grippers to enable an optimal levelling of workload. 12. A method as recited in claim 11, wherein establishing minimum conditions for a feasible layout comprises the steps of: a) determining a number of grippers to assign; b) determining for each gripper, a desirability of each gripper; c) determining for a most desirable gripper based on the desirabilities determined, a desirability of each pipette module not yet assigned; d) assigning the most desirable gripper to a most desirable pipette module including tallying feeder bar shares for each phantom gripper; and e) ascertaining that each gripper has been assigned. 13. A method 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 said step of establishing minimum conditions for a feasible layout comprises: a) determining a number of grippers to assign; b) determining for each gripper, a desirability of each gripper; c) determining for a most desirable gripper based on the desirabilities determined, a desirability of each pipette module not yet assigned; d) assigning the most desirable gripper to a most desirable pipette module including tallying feeder bar shares for each phantom gripper; and e) ascertaining that each gripper has been assigned. 14. A method 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: summing a nozzle slot opportunity value for each part handled by a gripper for each feeder bar slot on the pipette module comprising: 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; 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 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. A method as recited in Claim 6, wherein prespecified criteria includes at least one of low execution times, minimum feeders, and mimmum amount of hardware. 16. An apparatus arranged for executing a method 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