Patent Publication Number: US-8976696-B2

Title: Methods and systems for integrating batch scheduling with external beamforming

Description:
RELATED APPLICATION INFORMATION 
     This application claims priority to provisional application Ser. No. 61/559,880 filed on Nov. 15, 2011, incorporated herein by reference. 
    
    
     BACKGROUND 
     1. Technical Field 
     The present invention relates to wireless communication methods and systems and, more particularly, to allocation of channel resources and beam pattern selection. 
     2. Description of the Related Art 
     Beamforming is supported by certain Orthogonal Frequency-Division Multiple Access (OFDMA) standards, where multiple beam patterns (one per client) are applied in the digital signal space for each client scheduled in the frame. This is called user-level beamforming and the beam patterns are only allowed for application to the data payload in the frame. Another limitation of user-level beamforming is that the standards only specify a limited number of antenna elements, limiting the directionality of beam patterns. External beamforming (or frame-level beamforming) on the other hand applies a beam pattern (common to all clients in the frame) at the radio frequency (RF) level on the entire frame, including the preamble and control payload. In addition, the number of antenna elements is not limited since this is an application of beamforming that is agnostic of the standards support. This permits for the use of a larger number of antenna elements than what is defined in the standards and hence, enables more directional (i.e., focused) beams. 
     In OFDMA systems, the base stations (e.g., femtocells) carry out the scheduling for both the downlink and the uplink. In the uplink, the clients indicate the amount of data in their transmission buffers to their base station. The base station then allocates sufficient resources for each client. This scheduling is traditionally carried one frame after another (called per-frame scheduling). On the contrary, batch scheduling aggregates client requests over multiple frames and performs the resource allocation accordingly. Batch scheduling allows for more careful optimization at the base station and also reduces the signaling overhead for uplink scheduling requests from clients. 
     SUMMARY 
     One embodiment of the present principles is directed to a method for simultaneous determination of channel resource allocations and beam vectors for uplink frames. The method includes receiving batch information from client devices indicating amounts of data to be transmitted on the uplink by the client devices. Further, signal quality can be measured on channel resources for each of the client devices and for each of a plurality of beam vectors in addition, rate information for the channel resources for each of the client devices is determined based on signal quality measurements. Moreover, the method includes computing, based on the batch information and the rate information, utilities for allocations of the channel resources to the client devices and for the beam vectors for at least one uplink frame and selecting, based on the utilities, at least one of the beam vectors and at least one of the allocations for transmission of the data on the uplink frame(s). 
     Another embodiment is directed to a base station system for simultaneous determination of channel resource allocations and beam vectors for uplink frames. The system includes a receiver, a signal quality measurement module, a controller and a scheduler. The receiver is configured to receive batch information from client devices indicating amounts of data to be transmitted on the uplink by the client devices. In addition, the signal quality measurement module is configured to measure signal quality on channel resources for each of the client devices and for each of a plurality of beam vectors. Further, the controller is configured to determine rate information for the channel resources for each of the client devices based on signal quality measurements. Moreover, the scheduler is configured compute, based on the batch information and the rate information, utilities for allocations of the channel resources to the client devices and for the beam vectors for at least one uplink frame. The scheduler is further configured to select, based on the utilities, at least one of the beam vectors and at least one of the allocations for transmission of the data on the uplink frame(s). 
     Another embodiment is directed to a communication system including a plurality of client devices and a base station. The client devices are configured to transmit batch information indicating amounts of data to be transmitted on a communication uplink by the client devices and to transmit pilot signals on the uplink. In addition, the base station is configured to receive the batch information from the client devices and to measure signal quality on channel resources for each of the client devices and for each of a plurality of beam vectors from the pilot signals. The base station is further configured to determine rate information for the channel resources for each of the client devices based on signal quality measurements. The base station is also configured to compute, based on the batch information and the rate information, utilities for allocations of the channel resources to the client devices and for the beam vectors for at least one uplink frame and to select, based on the utilities, at least one of the beam vectors and at least one of the allocations for transmission of the data on the uplink frame(s). 
     These and other features and advantages will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
       The disclosure will provide details in the following description of preferred embodiments with reference to the following figures wherein: 
         FIG. 1  is a block diagram of an exemplary communication system in which embodiments of the present principles can be implemented; 
         FIG. 2  is a block/flow diagram of an exemplary base station system for simultaneous determination of channel resource allocations and beam vectors for uplink frames in accordance with exemplary embodiments of the present principles; 
         FIG. 3  is a block/flow diagram of a more specific exemplary base station system for simultaneous determination of channel resource allocations and beam vectors for uplink frames in accordance with exemplary embodiments of the present principles; 
         FIG. 4  is a flow diagram of a method for simultaneous determination of channel resource allocations and beam vectors for uplink frames in accordance with exemplary embodiments of the present principles; and 
         FIG. 5  is a block diagram of an exemplary uplink frame in accordance with exemplary embodiments of the present principles. 
     
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     The integration of frame-level (external) beamforming with downlink scheduling can be accomplished by extending existing solutions. User-level beamforming has been jointly optimized with per-frame scheduling for OFDMA systems. However, the notion of frame-level beamforming and its various benefits have not been explored or contemplated. Its integration with uplink batch scheduling and the challenges associated with the integration have also not been previously considered. The embodiments of the present principles described herein are directed to the design and implementation of an efficient uplink scheduler that integrates frame-level beamforming with uplink batch scheduling for OFDMA. 
     In the exemplary embodiments described herein, external beamforming is integrated with uplink batch scheduling for OFDMA femtocells. As part of the broad scheme, the present principles allocate sub-channels to mobile stations (clients) across a batch of OFDMA uplink frames, and at the same time determine a beam pattern, common to all clients scheduled in a frame, to be applied on each frame in the batch. The solutions described herein are applicable to OFDMA wireless broadband technologies such as World Wide Interoperability for Microwave Access (WiMAX) and Long Term Evolution (LTE). 
     The methods and systems described herein maximize the amount of uplink data that can be delivered by the clients of an OFDMA femtocell (base station). In general, exemplary embodiments can solve the problem in four steps: 1) the base station measures the client signal-to-noise ratios (SNRs) for each beam pattern, scheduling each client using all the sub-channels in an OFDMA frame. The SNR represents the signal-to-noise ratio (a metric of wireless link quality) for the signals transmitted by the clients (i.e., in the uplink). 2) The base station constructs a client SNR table for each number of sub-channels. SNR values can be interpolated from the measurements in step 1 and each SNR is mapped to a modulation and coding scheme (MCS). 3) The base station polls each client for the amount of uplink data that needs to be scheduled over a batch of frames. 4) The base station determines the number of sub-channels allocated to each client for each frame in the batch, together with the beam pattern applied to each frame in the batch in accordance with various methods described herein below. 
     The methods and systems are advantageous in that they provide practical frame-level beamforming solutions that are agnostic of the OFDMA standards. The number of antennas present in the beamforming antenna array is not limited by the standards, in contrast to user-level beamforming. Further, they provide uplink scheduling solutions, which maximize the amount of uplink data delivered by the clients of an OFDMA femtocell that employs frame-level beamforming in accordance with exemplary embodiments. 
     It should be understood that embodiments described herein may be entirely hardware or may include both hardware and software elements, which includes but is not limited to firmware, resident software, microcode, etc. In a preferred embodiment, the present invention is implemented in hardware and software. 
     Embodiments may include a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. A computer-usable or computer readable medium may include any apparatus that stores, communicates, propagates, or transports the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be magnetic, optical, electronic, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. The medium may include a computer-readable storage medium such as a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk, etc. 
     A data processing system suitable for storing and/or executing program code may include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code to reduce the number of times code is retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) may be coupled to the system either directly or through intervening I/O controllers. 
     Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters. 
     Referring now to the drawings in which like numerals represent the same or similar elements and initially to  FIG. 1 , an exemplary communication system  100  in which embodiments of the present principles can be implemented is illustratively depicted. The system  100  includes a base station system  102 , including, for example, a femtocell, that serves a plurality of client devices or mobile stations  104  in accordance with, for example, an OFDMA scheme, in a service area  106 . Here, the base station  102  can transmit data to clients on a downlink and the clients  104  can in turn transmit data to the base station on an uplink. In accordance with exemplary aspects, the base station  102  can implement batch scheduling on the uplink. In batch scheduling, given a polling interval (F frames) and the buffer occupancies of the clients, the problem is to effectively pack (schedule) the out-standing client data jointly over F frames, with potentially different schedules across frames. When batch scheduling is integrated with beamforming in accordance with aspects of the present principles, in addition to packing, a beam is determined for each frame in the batch. Picking a beam for a frame and a subset of clients (for data packing) are intertwined here, as the beam choice for a frame will affect the rate supported by clients in that frame and, hence, the amount of data that can be packed. Similarly picking a subset of clients will influence the beam choice, as the sub-optimality of beamforming will vary with the subset of clients. 
     Two aspects make the integrated scheduling problem challenging: power pooling and beamforming. With regard to power pooling, in OFDMA, when multiple clients are multiplexed in the same uplink frame, they pool their powers on a smaller set of sub-channels, thereby potentially supporting higher rates per sub-channel. Batch scheduling across multiple frames enhances power pooling further—spreading a client&#39;s data across multiple frames will involve fewer sub-channels per frame, resulting in higher power pooling gain per frame. With regard to beamforming, spreading data across multiple frames for each client will maximize the power pooling gain. However, this results in more clients being scheduled in the same frame, making it harder to find a good common beam for each frame; this increases the sub-optimality of beamforming. In accordance with exemplary aspects, the scheduler&#39;s objective is to strike the right trade-off between these two components. 
     Referring now to  FIGS. 2-3 , more specific implementations of systems configured to simultaneously determine channel resource allocations and beam vectors for uplink frames are illustratively depicted. For example, as illustrated in  FIG. 2 , an exemplary base station system  102  can include a controller  202 , a scheduler  206 , a signal quality measurement module  208  and a transmitter/receiver  210 . As discussed in more detail herein below, the transmitter/receiver  210  can be employed to communicate with client devices  104  to obtain batch information indicating the amount of data to be transmitted on the uplink, and to enable a signal quality measurement module  208  to obtain signal quality measures, such as SNRs. In addition, the controller  202 , based on the signal quality measurements, can determine rate information, while the scheduler  206  can determine channel resource allocations and can select beam patterns for uplink transmissions from the client devices  104  in accordance with the methods described herein below. The system may also include a storage medium  204  that is configured to store software instructions to implement computation aspects of method embodiments described herein. 
       FIG. 3  illustrates one architecture in which the base station  102  can be implemented. Here, the base station  102  can be composed of a gateway  302 , a beamforming antenna array  304 , and a femtocell  306 . Here, the transmitter/receiver  210  and the signal quality measurement module  208  can be implemented by the femtocell  306  and the antenna array  304 , while the gateway  302  can implement the scheduler  206  and the controller  202  and can include the storage medium  204 . It should be understood that the architecture of  FIG. 3  is merely one example and that the base station system  102  can be implemented in accordance with different schemes. For example, the scheduler  206 , the controller  202 , and the storage medium  204  can be included in the femtocell  306 , although this may incur relatively high computation overhead at the femtocell. In the architecture of  FIG. 3 , the femtocell measures the clients&#39; SNRs and sends the SNRs to the gateway  302 , which computes the schedule and sends the schedule to the femtocell  306 . While computing the schedule, the gateway  302  can simultaneously compute the beam patterns and can apply the beam patterns to the antenna array  304  using an antenna control link  310 . In turn, the femtocell  306  may include an RF connection  308  with the antenna array  304 . 
     With reference now to  FIG. 4 , with continuing reference to  FIGS. 1-3 , an exemplary method  400  for simultaneously determining channel resource allocations and beam vectors for uplink frames is illustratively depicted. The method  400  can begin at step  402 , at which the measurement module  208  measures signal quality on channel resources for each client device and for each of a plurality of beam vectors applied to the antenna array  304  on the uplink. For example, if there are | | beam patterns, | | frames are used for measurement (one for each pattern). On the uplink part of each frame, the base station (BS) schedules all the active users (client devices) such that their data or pilot signals spans all the sub-channels (number of time symbols allocated varies across users). The resulting SNR (ρ) for each user with each beam is measured directly at the BS and corresponds to that when power is split on all sub-channels (ρ(i, N, l), ∀i,l), where i denotes the client or user, where N denotes the number of available sub-channels available for allocation in a frame and where l denotes a given beam of the set of available beams  . Thus, here, at step  402 , the measurement module  208  of the base station can measure the uplink SNRs from its clients for each beam pattern of a plurality of beam patterns based on pilot signals transmitted by the clients. The measurements are conducted by allocating all sub-channels (over OFDMA symbols) to the clients in a frame. The allocation can be visualized as illustrated in  FIG. 5 , where a frame  500  is represented as OFDMA sub-channels  506  provided along the vertical direction and OFDMA symbols  508  provided in the horizontal direction. As shown in  FIG. 5 , the frame can include resources  502  dedicated for preamble and control elements, while remaining resources  504 - 1  to  504 -K are allocated for client  1  to client K, respectively. The frame allocation illustrated in  FIG. 5  is repeated for every beam pattern and the SNRs are recorded for each client device. 
     At step  404 , the transmitter/receiver  210 , which can be implemented by the femtocell  306  and the array  304 , can receive batch information from client devices indicating amounts of data to be transmitted on the uplink by the client devices. For example, the base station can poll the clients to learn about the amount of data waiting to be scheduled at each client&#39;s transmit buffer for transmission on the uplink. Here, the BS can poll all its clients towards the end of the current polling interval to estimate their buffer occupancies for scheduling during the next polling interval. Note that if the total buffer occupancy of all clients is less than the total frame resources in the polling interval, then there will be under-utilization. Further, the schedules computed for the polling interval will be relevant only if the SNRs are relatively static during that interval. Hence, the polling interval is decided based on both the coherence time of SNR values (reasonably high for in-door static clients) and the typical transmission buffer size of clients. 
     At step  406 , the femtocell  306  can optionally send the client transmit buffer (batch) information and the signal quality measurements to the gateway  302 . For example, step  406  can be performed if the system  102  is not implemented entirely at the femtocell  306 . 
     At step  408 , the controller  202 , which can be implemented at the gateway  302 , can extrapolate measured client signal qualities (measured using all sub-channels) to account for link quality for each number of sub-channels. As indicated above, with a smaller number of sub-channels, the clients pool their transmit power on a smaller subset of the spectrum, resulting in higher power per sub-channel (an effect called power pooling). Hence, higher SNR is measured at the base station. Power pooling can be modeled with the following formula: 
                 ρ   ⁡     (     i   ,     N   α     ,   ℓ     )       =       ρ   ⁡     (     i   ,   N   ,   ℓ     )       +     10   ⁢           ⁢       log   10     ⁡     (   α   )             ,     α   ∈     ⌊     1   ,     N     N   -   1       ,   …   ⁢           ,     N   1       ⌋             
where ρ(i, k, l) denotes the SNR measured from client i using k sub-channels with beam pattern l. This way, the gateway does not have to measure the SNR for all numbers of sub-channels, which can incur significant overhead, and can just use the formula to derive other needed SNRs from the SNR measured on all sub-channels ρ(i, N, l). For example, as discussed herein below, rate tables can be determined separately to identify the best modulation and coding rate (MCS) to employ for a given SNR that yields a specific loss rate (e.g., &lt;0.1). However, since the rate would vary with the number of sub-channels allocated (due to power pooling), a direct SNR measurement for each possible set of sub-channels for each beam (ρ(i, k, l)) would constitute significant overhead. Hence, based on the SNR measurement from all sub-channels (ρ(i, N, l)), the SNR for other subsets of sub-channels can be extrapolated, taking power pooling into account. For example, if half of the sub-channels are allocated to a user, then its resulting SNR
 
               ρ   ⁡     (     i   ,     N   2     ,   ℓ     )       =       ρ   ⁢     (     i   ,   N   ,   ℓ     )       +     3   ⁢       (     in   ⁢           ⁢   dB     )     .               
Since the power gets distributed over ½ of sub-channels, the per sub-channel power is doubled, corresponding to +3 in dB scale.
 
     At step  410 , the controller  202  determines rate information for the channel resources for each of the client devices based on the signal quality measurements. For example, in accordance with one implementation, the gateway  302  can compute rate curves by using SNRs obtained at step  408  or  402 . For example, the client SNRs can be mapped to some rate that the client can achieve. From (ρ(i,k,l)), one can obtain r i ,k,l using a rate table. Essentially, every user (i) has a power-pooling rate curve (g(i,k,f)) as a function of number of sub-channels (k) and the beam chosen (l). In other words, (g(i k,l)) is the bit rate that client (i) achieves using (k) sub-channels with beam pattern. Depending on the nature of SNR-rate mapping, these curves may or may not be concave. If continuous Shannon rates are employed, then we have 
                 g   ⁡     (     i   ,   k   ,   ℓ     )       =       k   H     ·       log   2     ⁡     (     1   +       N   k     ⁢     ρ   ⁡     (     i   ,   N   ,   ℓ     )           )           ,         
which is a concave function. Here, k H  denotes the bandwidth (in Hz) that corresponds to k sub-channels in the considered OFDMA system. If a discrete rate table that maps a given SNR to a modulation and coding scheme (MCS) is used, then g(i,k,l)=k·r i,k,l  results in a piece-wise linear (between SNR thresholds) function, where the mapping
 
               r     i   ,   k   ,   ℓ       ←       N   k     ⁢     ρ   ⁡     (     i   ,   N   ,   ℓ     )               
is determined by the rate table. Here, r i ,k,l denotes the number of bits that the mapped MCS can encode per-sub-channel. Depending on the rate-SNR thresholds, g(i,k,l) may still be concave or not. As discussed further herein below, depending on the nature of g(i,k,l) (concave or arbitrary), different algorithms will be applied. While the Shannon rate function is concave, the g( ) function with rate tables can be concave or not depending on the rate table mapping.
 
     At step  412 , the scheduler  206  can compute, based on the batch information and the rate information, utilities for allocations of the channel resources to the client devices and for the beam vectors for at least one uplink frame and can select, based on the utilities, at least one of the beam vectors and at least one of the allocations for transmission of the client data on the uplink frame(s). For example, the scheduler  206  can determine the schedule and beam patterns in different ways, depending on the type of the g(i,k,l) function (for example, depending on whether g(i,k,l) is concave or not). Here, the scheduler can obtain the information from the controller on whether g(i,k,l) is concave. If g(i,k,l) is concave, the scheduler  206  can select and apply Algorithm 1 and/or Algorithm 2, described herein below. If g(i,k,l) is not concave, then the scheduler  206  can select and apply Algorithm 3, also described herein below. The integrated uplink scheduling problem can be formally expressed as the following non-linear integer program: 
             I   ⁢           ⁢   S   ⁢           ⁢   P   ⁢     :     ⁢           ⁢   Maximize   ⁢           ⁢       ∑   i     ⁢           ⁢       U   i     ⁡     (     R   i     )                         R   i     =         ∑     j   ,   k       ⁢           ⁢       x     i   ,   j   ,   k       ⁢     {       ∑   ℓ     ⁢           ⁢       y     j   ,   ℓ       ·   k   ·     r     i   ,   k   ,   ℓ           }         ≤     B   i         ,     ∀     i   ∈   κ                         ∑   ℓ     ⁢           ⁢     y     j   ,   ℓ         ≤   1     ,     ∀     j   ∈   ℱ                         ∑     i   ,   k       ⁢           ⁢       x     i   ,   j   ,   k       ·   k       ≤   N     ,     ∀   j                       ∑   k     ⁢           ⁢     x     i   ,   j   ,   k         ≤   1     ,     ∀   i     ,   j         
where x i,j,k  and y i,l  are binary indicator (output) variables indicating the assignment of k contiguous sub-channels in frame j to user i and the assignment of beam l to frame j respectively. κ,  ,   indicate the set of users, frames in the batch and the available beams, respectively. The objective is to maximize the aggregate client utility, where the utility function can be any concave function (e.g., logarithmic function captures proportional fairness) of the data scheduled and can vary from one client to another. The first constraint limits the net allocation to a user to the buffer occupancy B i  (in bits) of the user. Further, it indicates the inter-dependence of power pooling (# sub-channels assigned, k) and beam chosen (l) on the user&#39;s rate per sub-channel (r i,k,l  in bits). The remaining constraints are all conservation constraints indicating the (a) assignment of a single beam per frame, (b) net allocation of sub-channels being limited to N in a frame, and (c) assignment of one contiguous set of sub-channels to a user in a frame, respectively.
 
     Thus, after the BS obtains the signal quality information and the rate information to determine the batch schedule, it executes its algorithms. The batch schedule consists of two parts. The first part is a schedule for F−| |frames (| |&lt;&lt;F), where the ISP problem is solved over F−| |frames. The latter part is a schedule for the remaining | |frames, and serves as the measurement interval to obtain the SNR information for the next polling interval. Hence, in the latter part, the beam choices for the | |frames are fixed (one beam each) during measurement, and allocation is done only across time symbols in this example by employing the same algorithm used for solving ISP, albeit with some fixed variables. While the main purpose of the second part is measurement, one can also optimize the packing of client data that remains after the first | | frames, given the beam choices. Solving the ISP problem, i.e., determining data packing along with the beam choices over a given set of frames, forms the core of the solution. 
     For concave rate curves, the problem can be solved in accordance with Algorithm 1, provided in Table 1 below, or Algorithm 2, provided in Table 2, below. 
     
       
         
           
               
             
               
                 TABLE 1 
               
               
                   
               
               
                 Algorithm 1 Integrated Scheduler 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
            
               
                 1: INPUT: Buffer occupancy B i, ∀i   ε      ; rates g(i,k,l) , ∀i,k ε[1,N], l ε L 
               
               
                 2: OUTPUT: Beam choices l  j  , ∀  j  ε      ; per-frame user allocation A ij  , ∀i, j 
               
               
                 3: for f ε [1:|    |] do 
               
               
                 4: O max  = 0 
               
               
                 5: for l  f  ε[1:|L|] do 
               
               
                 6:   D i  ← B i ,∀ i ; a ij  = A ij ,∀i, j ε [1, f − 1]and a ij  = 0 
               
               
                     ∀i, j = f 
               
               
                 7:     for k = 1:N do 
               
               
                 8:     i *  = arg      {U i (Σ j=1   f  g(i, a ij , l  j )+ min(g(i,a if  +1, l  f ) 
               
               
                       − g(i,a if  ,l  f  ), D i ) )−U i (Σ j=1   f g(i,a ij , l  j ))} 
               
               
                 9:     if i *  ≠ 0 then 
               
               
                 10:     D i · ← D i · − min (g(i *  ,a i ·  f  + 1, l  f )  
               
               
                        − g(i *  , a i ·  f  , l  f  ), D i · ) 
               
               
                 11:     a i ·  f  ← a i ·  f  + 1 
               
               
                 12:     else break endif 
               
               
                 13:   end for 
               
               
                 14:   O  f  =      U i (Σ j=1   f g(i,a ij , l  j )) 
               
               
                     −U i (Σ j=1   f−1 g(i, a ij ,l  j )) 
               
               
                 15:   if O  f  &gt; O max  then  
               
               
                 16.   O max  = O  f  ;l  max  = l  f  ;A if  = a if ,  ∀i 
               
               
                 17:   endif 
               
               
                 18:  end for 
               
               
                 19:  l  f  = l max ;; B i   ←B i  − min(g(i, A if  , l  f  ),B i ),∀i 
               
               
                 20: end for 
               
               
                   
               
            
           
         
       
     
     In Algorithm 1, resource allocation and beam selection are considered one frame at a time in the batch, sequentially. For example, for an arbitrary number of frames,  , the channel resources for a given frame in the batch are allocated separately from allocations of channel resources of other frames in the batch. Further, a beam vector is selected for the given frame separately from selections of beam vectors for the other frames. Algorithm 1 computes utilities for each of the beam vectors of a plurality of beam vectors and, for each of the beam vectors, assigns each subchannel of the channel resources to a respective client device yielding a highest respective utility. For example for a given frame (iteration), based on the remaining data available for the users, resource allocation is considered for every choice of the beam, and the beam yielding the best aggregate marginal utility for the frame is chosen (steps 14-16). For resource allocation within each frame given a beam (steps 6-13), Algorithm 1 assigns each sub-channel to the user who yields the highest marginal utility taking the users&#39; buffer status into account (step 8). For concave utility functions, the allocation implemented by Algorithm 1 is indeed optimal. Further, allocation based on the marginal utility also helps multiplex multiple users in the same frame, thereby maximizing the benefits of power pooling. Once the best beam and its corresponding resource allocation are determined (steps 14-17) for the current frame, the user buffers are updated (step 19) and the procedure is repeated for the remaining frames in the batch, sequentially. In general, a given client is allocated data from a single frame. However, there are cases in which resources remaining in a given frame will accommodate only a portion of the client&#39;s data. In this case, and also in the cases in which the algorithm does not even allocate resources to the given client in the current frame, the algorithm keeps considering this client for allocation for the remaining frames (by accounting for what is already allocated to this client in the previous iterations, i.e., by updating the remaining data in the buffer). Thus, it is possible in Algorithm 1 for a client to be allocated resources across multiple frames for the transmission of its data on the uplink. Algorithm 1 has a time complexity of O( | | |N), where   is the number of frames in the batch,   is the number of frames used for measuring the SNRs (one frame per beam pattern where   denotes the number of beam patterns),   is the number of clients and N is the number of sub-channels. 
     Table 2, below illustrates an integrated scheduling scheme in accordance with Algorithm 2, which can also be used for concave rate functions. Algorithm 2 results in better performance, but incurs additional computational complexity. 
     
       
         
           
               
             
               
                 TABLE 2 
               
               
                   
               
               
                 Algorithm 2 Integrated Scheduler 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
            
               
                 1: INPUT: Buffer occupancy B i , ∀i ε     ; rates g(i,k,l),∀i,k ε 
               
               
                  [1,N], l ε L 
               
               
                 2: OUTPUT: Beam choices l  j , ∀j ε     ; per-frame use allocation A ij ,∀i, j 
               
               
                 3: for f ε[1:|    |] do 
               
               
                 4:  O  max  = 0 
               
               
                 5:  for l  f   ε [1:|L]do 
               
               
                 6:   D i  ← B i ,∀i; A ij  = 0∀i, j = [1, f];k  j  = N, ∀j ε[1, f] 
               
               
                 7:   while k  j  ≠ 0,∃j ε[1, f ] do  
               
               
                 8:    (i* ,j* )= arg      , jε [ 1, f ]{U i (Σ m=1   f g(i, A im , l  m ) 
               
               
                      + min{g(i, A ij  + 1, l  j  )− g(i, A ij , l  j  ),D i }) 
               
               
                      −U i (Σ m=1   f g(i, A im , l  m ))} 
               
               
                 9:    if(i* , j* )≠ 0 then 
               
               
                 10:    D i*  ←D i*  −min(g(i* , A i* j*  + 1, l  j* ) 
               
               
                      − g(i* ,A i* j*  , l  j* ), D i*  ) 
               
               
                 11:    A i* j*  ← A i* j*  +1; k  j*  ←k  j*  −1 
               
               
                 12:    else break endif 
               
               
                 13:   end while 
               
               
                 14:  end for 
               
               
                 15:  O  f  =      U i (Σ j=1   f g(i, A ij , l  j  )) 
               
               
                 16:  if O  f   &gt; O  max  then 
               
               
                 17:  O  max  = O  f  ; l max  = l  f   
               
               
                 18:  endif 
               
               
                 19:  l  f  = l  max   
               
               
                 20: end for 
               
               
                   
               
            
           
         
       
     
     The key difference between Algorithm 1 and Algorithm 2 is that while Algorithm 1 performs resource allocation within each frame in isolation, Algorithm 2 performs joint resource allocation across all frames considered in an iteration. Hence, in addition to enabling power pooling within each frame, it allows data of one or more clients to be spread across multiple frames on the uplink thereby pooling the client&#39;s power across frames as well. This in turn results in a more efficient data packing and hence, higher aggregate throughput. Specifically, when considering a beam for a given frame (f) during a considered iteration, resource allocation is performed for all frames till the current frame jointly (steps 6-13) to determine the resulting utility for the beam. In other words, to select a beam vector of a current frame, channel allocations are performed across previous frames and the current frame in a given iteration. The beam vector yielding the highest utility is then chosen for that frame (steps 15-19). Hence, each iteration of resource allocation now involves determining not only the user or client to whom a sub-channel should be allocated but also in which frame (∈[1,f], step 8). Note that once the beam is chosen for a given frame, user buffers do not have to be updated for the next frame since resource allocation will then be re-performed. Thus, for every newly considered frame, user buffers are re-initialized (step 6). Essentially, resource allocation for all frames till the one under consideration is done mainly for the purpose of determining the beam yielding the highest utility for the considered frame. The actual re-source allocation is the one that is computed during the final frame of iteration, where the allocation for all the frames in the batch is jointly determined along with the beam for that frame. In other words, a plurality of the allocations for transmission of the data on uplink frames in the batch is computed and selected from the iteration of the last frame of the uplink frames in the batch. While Algorithm 2 enables power pooling both within and across frames, the joint resource allocation across frames results in an additional time complexity of O(| |) and hence a net time complexity of O(| | 2 | | N). 
     For arbitrary (non-concave) power pooling rate curves, the resource allocation and beam selection can be determined in accordance with Algorithm 3, provided in Table 3, below, which is a modified version of Algorithm 1. 
     
       
         
           
               
             
               
                 TABLE 3 
               
               
                   
               
               
                 Algorithm 3 Integrated Scheduler 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
            
               
                 1: INPUT: Buffer occupancy B i , ∀i ε     ; rates g(i,k,l),∀i,k ε [1,N],l ε L  
               
               
                 2: OUTPUT: Beam choices l  j , ∀j ε   ; per - frame use allocation A ij ,∀i, j 
               
               
                 3: for f ε [1:|    |]do 
               
               
                 4: O max  = 0 
               
               
                 5: for l  f  ε [1:|L]do 
               
               
                 6:   D i   ← B i ,∀i; a ij  = A ij , ∀i, j ε [1, f − 1]and a ij  = 0 
               
               
                     ∀i, j = f 
               
               
                 7:   Run an FPTAS for multiple-choice knapsack problem 
               
               
                     FA(f, l  f ); Obtain a if , ∀i 
               
               
                 8:   O  f  =     U i (Σ j=1   f   g(i,a ij ,l  j )) 
               
               
                     −U i (Σ j=1   f −1 g(i,a ij , l  j )) 
               
               
                 9:  if O  f  &gt; O max  then 
               
               
                 10:  O max  = O  f  ; l  max  = l  f  ; A if  = a if , ∀i 
               
               
                 11:  endif 
               
               
                 12: end for 
               
               
                 13: l  f  = l  max ;; B i  ← B i  − min(g(i, A if  , l  f  ), B i ), ∀i 
               
               
                 14: end for 
               
               
                   
               
            
           
         
       
     
     Specifically, Algorithm 3 is similar to Algorithm 1 in picking the beam yielding the highest marginal utility for each frame. However, its frame allocation for a given beam choice is significantly different. This is because if the power pooling rate curves are not concave, then allocations based on marginal utilities will not work. Hence, allocations to users in each frame should be made as a subset of continuous sub-channels instead of individual sub-channels. Thus, Algorithm 3 models the allocation problem for a given frame and beam choice (f, l f ) with arbitrary rate curves as the following multiple choice knapsack problem (MCKP), which is a NP-hard problem in itself. 
     
       
         
           
             
               
                 
                   
                     
                       FA 
                       ⁡ 
                       
                         ( 
                         
                           f 
                           , 
                           
                             ℓ 
                             f 
                           
                         
                         ) 
                       
                     
                     : 
                     
                         
                     
                     ⁢ 
                     
                       Maximize 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         
                           ∑ 
                           i 
                         
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         
                           
                             ∑ 
                             
                               k 
                               ∈ 
                               
                                 𝒩 
                                 i 
                               
                             
                           
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           
                             
                               
                                 u 
                                 
                                   i 
                                   , 
                                   k 
                                 
                               
                               ⁡ 
                               
                                 ( 
                                 
                                   f 
                                   , 
                                   
                                     ℓ 
                                     f 
                                   
                                 
                                 ) 
                               
                             
                             ⁢ 
                             
                               
                                 x 
                                 ik 
                               
                               ⁡ 
                               
                                 ( 
                                 f 
                                 ) 
                               
                             
                           
                         
                       
                     
                   
                   ⁢ 
                   
                     
 
                   
                   ⁢ 
                   
                     
                       s 
                       . 
                       t 
                       . 
                       
                           
                       
                       ⁢ 
                       
                         
                           ∑ 
                           i 
                         
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         
                           
                             ∑ 
                             
                               k 
                               ∈ 
                               
                                 𝒩 
                                 i 
                               
                             
                           
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           
                             k 
                             · 
                             
                               
                                 x 
                                 
                                   i 
                                   , 
                                   k 
                                 
                               
                               ⁡ 
                               
                                 ( 
                                 f 
                                 ) 
                               
                             
                           
                         
                       
                     
                     ≤ 
                     N 
                   
                   ⁢ 
                   
                     
 
                   
                   ⁢ 
                   
                     
                       
                         
                           ∑ 
                           
                             k 
                             ∈ 
                             
                               𝒩 
                               i 
                             
                           
                         
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         
                           
                             x 
                             
                               i 
                               , 
                               k 
                             
                           
                           ⁡ 
                           
                             ( 
                             f 
                             ) 
                           
                         
                       
                       = 
                       1 
                     
                     ; 
                     
                       ∀ 
                       i 
                     
                   
                   ⁢ 
                   
                     
 
                   
                   ⁢ 
                   
                     
                       where 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         
                           x 
                           ik 
                         
                         ⁡ 
                         
                           ( 
                           f 
                           ) 
                         
                       
                     
                     ∈ 
                     
                       
                         { 
                         
                           0 
                           , 
                           1 
                         
                         } 
                       
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       and 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         𝒩 
                         i 
                       
                     
                     ∈ 
                     
                       
                         { 
                         
                           0 
                           , 
                           1 
                           , 
                           … 
                           ⁢ 
                           
                               
                           
                           , 
                           N 
                         
                         } 
                       
                       . 
                     
                   
                 
               
               
                 
                   ( 
                   1 
                   ) 
                 
               
             
           
         
       
     
     Essentially, there are N+1 allocations (   i ) possible for each user or client and the MCKP problem is to pick exactly one allocation for each user or client such that the total frame allocation does not exceed N. The client&#39;s profit or utility for each allocation is computed based on the current and previous frames&#39; allocations as follows: 
     
       
         
           
             
               
                 u 
                 
                   i 
                   , 
                   k 
                 
               
               ⁡ 
               
                 ( 
                 
                   f 
                   , 
                   
                     ℓ 
                     f 
                   
                 
                 ) 
               
             
             = 
             
               
                 ∑ 
                 
                   i 
                   ∈ 
                   𝒦 
                 
               
               ⁢ 
               
                   
               
               ⁢ 
               
                 
                   U 
                   i 
                 
                 ⁡ 
                 
                   ( 
                   
                     
                       
                         ∑ 
                         
                           j 
                           = 
                           1 
                         
                         
                           f 
                           - 
                           1 
                         
                       
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         g 
                         ⁡ 
                         
                           ( 
                           
                             i 
                             , 
                             
                               a 
                               ij 
                             
                             , 
                             
                               ℓ 
                               j 
                             
                           
                           ) 
                         
                       
                     
                     + 
                     
                       min 
                       ⁢ 
                       
                         { 
                         
                           
                             g 
                             ⁡ 
                             
                               ( 
                               
                                 i 
                                 , 
                                 
                                   
                                     x 
                                     ik 
                                   
                                   ⁡ 
                                   
                                     ( 
                                     f 
                                     ) 
                                   
                                 
                                 , 
                                 
                                   ℓ 
                                   f 
                                 
                               
                               ) 
                             
                           
                           , 
                           
                             B 
                             i 
                           
                         
                         } 
                       
                     
                   
                   ) 
                 
               
             
           
         
       
       
         
           
             where 
             , 
             
               
                 a 
                 ij 
               
               = 
               
                 
                   k 
                   : 
                   
                     s 
                     . 
                     t 
                     . 
                     
                         
                     
                     ⁢ 
                     
                       x 
                       ikj 
                     
                   
                 
                 = 
                 1 
               
             
             , 
             
               ∀ 
               i 
             
             , 
             
               j 
               ∈ 
               
                 [ 
                 
                   1 
                   , 
                   
                     f 
                     - 
                     1 
                   
                 
                 ] 
               
             
           
         
       
     
     Note that the user&#39;s or client&#39;s buffer occupancy is automatically accommodated in its profit. Now an FTPAS (Fully Polynomial Time Approximation Scheme) based on dynamic programming can be employed to efficiently solve FA(f, l f ) to within (1−ε) of the optimal at a time complexity of 
               O   ⁡     (            𝒦        ⁢   N     ɛ     )       .         
This results in a net time complexity of
 
             O   ⁡     (              ℱ   ⁢        ℒ        ⁢   𝒦          ⁢   N     ɛ     )           
for Algorithm 3.
 
     The algorithms described above provide an approximation guarantee of half for both concave and arbitrary power pooling rate curves. It can be shown that their performance is close-to-optimal performance in practice, on average, as compared to their worst case guarantees of half. 
     After determination of the resource allocations and the selection of the beam pattern for the uplink frames in the batch, the base station  102  can transmit indications of the resource allocations to the client devices  104 . In turn, the clients  104  transmit data in their buffers on the uplink frame(s) on the allocated channel and symbol resources, while the base station  102  can apply the selected beam vector to the antenna array  304  for receipt of the client data on the uplink frame(s). 
     Having described preferred embodiments of methods and systems for integrating batch scheduling with beamforming (which are intended to be illustrative and not limiting), it is noted that modifications and variations can be made by persons skilled in the art in light of the above teachings. It is therefore to be understood that changes may be made in the particular embodiments disclosed which are within the scope of the invention as outlined by the appended claims. Having thus described aspects of the invention, with the details and particularity required by the patent laws, what is claimed and desired protected by Letters Patent is set forth in the appended claims.