def _runAuction(self, gteeOfferPrice, gteeBidPrice, haveQ):
        """ Clears an auction to determine the quantity and price for each
            offer/bid.
        """
        pOffers = [offer for offer in self.offers if not offer.reactive]
        pBids = [bid for bid in self.bids if not bid.reactive]

        # Clear offer/bid quantities and prices.
        auction = Auction(self.case, pOffers, pBids, self.auctionType,
                          gteeOfferPrice, gteeBidPrice, self.limits)
        auction.run()

        # Separate auction for reactive power.
        if haveQ:
            qOffers = [offer for offer in self.offers if offer.reactive]
            qBids = [bid for bid in self.bids if bid.reactive]

            # Too complicated to scale with mixed bids/offers (only
            # auction_types LAO and FIRST_PRICE allowed)
            qAuction = Auction(self.case, qOffers, qBids, self.auctionType,
                                gteeOfferPrice, gteeBidPrice, self.limits)
            qAuction.run()