code: def _nodalPrices(self, haveQ):
          
          # Guarantee that cleared offer prices are >= offered prices.
          gteeOfferPrice = True
          gteeBidPrice = True
  
          for offer in self.offers:
              if not offer.reactive:
                  # Get nodal marginal price from OPF results.
                  offer.lmbda = offer.generator.bus.p_lmbda
                  offer.totalQuantity = offer.generator.p *offer.generator.online
              else:
                  offer.lmbda = offer.generator.bus.q_lmbda
                  offer.totalQuantity = \
                      abs(offer.generator.q) * offer.generator.online
          for bid in self.bids:
              bus = bid.vLoad.bus
  
              if not bid.reactive:
                  # Fudge factor to include price of bundled reactive power.
                  if bid.vLoad.q_max == 0.0:
                      pf = bid.vLoad.q_min / bid.vLoad.p_min
                  elif bid.vLoad.q_min == 0.0:
                      pf = bid.vLoad.q_max / bid.vLoad.p_min
                  else:
                      pf = 0.0
  
                  # Use bundled lambdas. For loads Q = pf * P.
                  bid.lmbda = bus.p_lmbda + pf * bus.q_lmbda
  
                  bid.totalQuantity = -bid.vLoad.p * bid.vLoad.online
                  # Guarantee that cleared bids are <= bids.
                  gteeBidPrice = True
              else:
                  # Use unbundled lambdas.
                  bid.lmbda = bus.q_lmbda
  
                  bid.totalQuantity = abs(bid.vLoad.q) * bid.vLoad.online
                  # Allow cleared bids to be above bid price.
                  gteeBidPrice = False
  
          return gteeOfferPrice, gteeBidPrice
docs: Sets the nodal prices associated with each offer/bid.