Ejemplo n.º 1
0
def main():
    desc="Compute jointLocal bids given v's, l's initial bids and parameters"
    
    parser = argparse.ArgumentParser(description=desc)
    
    parser.add_argument('-s','--samplesFile',dest='samplesFile',
                        required=True,type=str,
                        help='Samples (text file)')
    
    parser.add_argument('-v','--vfile',dest='vfile',
                        required=True,type=str,
                        help='Valuation v vector txt file.')
    
    parser.add_argument('-l','--lfile',dest='lfile',
                        required=True,type=str,
                        help='Valuation lambda txt file.')
    
    parser.add_argument('-es','--evalSamples',dest='evalFile',
                        required=True,type=str,
                        help='Evaluation samples file.')
    
    parser.add_argument('-ib','--initBidFile',dest='initBidFile',
                        required=True,type=str,
                        help='Initial Bids txt file.')
    
    parser.add_argument('-o','--odir',dest='odir',
                        required=True,type=str,
                        help='Output directory.')
    
    parser.add_argument('-mcs','--maxCandidateSamples', dest='maxCandidateSamples',
                        required=False, default=-1, type=int,
                        help='Limit the number of samples used as candidates.')
    
    parser.add_argument('-mes','--maxEvalSamples',dest='maxEvalSamples',
                        required=False, default=-1,type=int,
                        help='Limit the number of evaluation samples used.')
    
    parser.add_argument('--verbose',dest='verbose',
                        required=False,default=False,
                        type=bool,help='Output debugg information')
    
    
    
    args = parser.parse_args()
    
    args.odir = os.path.realpath(args.odir)
    
    jointSamples = numpy.loadtxt(os.path.realpath(args.samplesFile))
    initBids     = numpy.loadtxt(os.path.realpath(args.initBidFile))
    vmat         = numpy.loadtxt(os.path.realpath(args.vfile))
    lmat         = numpy.loadtxt(os.path.realpath(args.lfile))
    evalSamples  = numpy.loadtxt(os.path.realpath(args.evalFile))
    
    numSamples = jointSamples.shape[0]
    m = jointSamples.shape[1]
    
    if args.maxCandidateSamples > 0:
        if args.maxCandidateSamples < jointSamples.shape[0]:
            test = jointSamples[:args.maxCandidateSamples,:]
               
    print jointSamples.shape    
    bids = numpy.zeros(vmat.shape)
    es   = numpy.zeros(vmat.shape[0])
    
    for itr, initBid, v, l in zip(xrange(vmat.shape[0]),initBids,vmat,lmat):
        print 'iteration {0}'.format(itr)
        bundleRevenueDict = msDictRevenue(v,l)
        
        bid = downHillSS(bundleRevenueDict,
                         initBid = initBid,
                         evalSamples = jointSamples,
                         ret = 1) 
        
        print '\t bid = {0}'.format(bid)
            
            
        bids[itr,:] = bid
        es[itr] = expectedSurplus_(bundleRevenueDict, bid, evalSamples)
        
        print '\t Expected Surplus = {0}'.format(es[itr])
        
    numpy.savetxt(os.path.join(args.odir,'downHillBids.txt'), bids)
    numpy.savetxt(os.path.join(args.odir,'downHillExpectedSurplus.txt'),es)
    
    with open(os.path.join(args.odir,'downHillStats.txt'),'w') as f:
        print >> f, numpy.mean(es)
        print >> f, numpy.var(es)
Ejemplo n.º 2
0
def main():
    desc="Compute jointLocal bids given v's, l's initial bids and parameters"
    
    parser = argparse.ArgumentParser(description=desc)
    
    parser.add_argument('-s','--samplesFile',dest='samplesFile',
                        required=True,type=str,
                        help='Samples (text file)')
    
    parser.add_argument('-ms','--maxBidSamples',dest='maxBidSamples',
                        required=False,type=int, default=-1,
                        help='Maximum samples used to compute bids.')
    
    parser.add_argument('-v','--vfile',dest='vfile',
                        required=True,type=str,
                        help='Valuation v vector txt file.')
    
    parser.add_argument('-l','--lfile',dest='lfile',
                        required=True,type=str,
                        help='Valuation lambda txt file.')
    
    parser.add_argument('-ib','--initBidFile',dest='initBidFile',
                        required=True,type=str,
                        help='Initial Bids txt file.')
    
    parser.add_argument('-es','--evalSamples',dest='evalFile',
                        required=True,type=str,
                        help='Evaluation samples file.')
    
    parser.add_argument('-o','--odir',dest='odir',
                        required=True,type=str,
                        help='Output directory.')
        
    parser.add_argument('-mi','--maxitr', dest='maxitr',
                        required=False, default=100, type=int,
                        help='Maximum Update Iterations')
    
    parser.add_argument('-t','--tol',dest='tol',
                        required=False, default=1e-5,
                        type=float,help='L2 Update Stopping Tolerance')
    
    parser.add_argument('--verbose',dest='verbose',
                        required=False,default=False,
                        type=bool,help='Output debugg information')
    
    parser.add_argument('-n','--name',dest='name',
                        required=False, default='margLocalMc',
                        type=str,help='Output filename.')
    
    args = parser.parse_args()
    
    args.odir = os.path.realpath(args.odir)
    
    samples = numpy.loadtxt(os.path.realpath(args.samplesFile))
    initBids     = numpy.loadtxt(os.path.realpath(args.initBidFile))
    vmat         = numpy.loadtxt(os.path.realpath(args.vfile))
    lmat         = numpy.loadtxt(os.path.realpath(args.lfile))
    evalSamples  = numpy.loadtxt(os.path.realpath(args.evalFile))
    
    m = initBids.shape[1]
    
#    bundles = listBundles(m)
    
    if samples.shape[0] > args.maxBidSamples:
        samples = samples[:args.maxBidSamples,:]
    
    bids = numpy.zeros(initBids.shape)
    es   = numpy.zeros(initBids.shape[0])
    
    bidsFile   = os.path.join(args.odir, args.name + 'Bids.txt')
    if os.path.exists(bidsFile):
        os.remove(bidsFile)
        
    esFile    = os.path.join(args.odir, args.name + 'ExpectedSurplus.txt')
    if os.path.exists(esFile):
        os.remove(esFile)
        
    statsFile = os.path.join(args.odir, args.name + 'Stats.txt')
    if os.path.exists(statsFile):
        os.remove(statsFile)
    
    for itr, initBid, v, l in zip(xrange(vmat.shape[0]),initBids,vmat,lmat):
        print 'iteration {0}'.format(itr)
        brd = msDictRevenue(v,l)
        
        bids[itr,:], converged, nitr, d = \
            margLocalMc(brd,
                        initBid,samples,
                        maxItr = args.maxitr,
                        tol = args.tol,
                        verbose = args.verbose,
                        ret = 'all')
                             
        es[itr] = expectedSurplus_(brd, bids[itr,:], evalSamples)
        
        with open(bidsFile,'a+') as f:
            numpy.savetxt(f, bids[itr,:][None])
            
        with open(esFile,'a+') as f:
            numpy.savetxt(f,es[itr][None])
#            numpy.savetxt(f,es[itr])
        
        print '\t bid              = {0}'.format(bids[itr,:])
        print '\t converged        = {0}'.format(converged)
        print '\t nItr             = {0}'.format(nitr)
        print '\t d                = {0}'.format(d)
        print '\t Expected Surplus = {0}'.format(es[itr])
        
#    numpy.savetxt(os.path.join(args.odir, args.name +'Bids.txt'), bids)
#    numpy.savetxt(os.path.join(args.odir, args.name +'ExpectedSurplus.txt'),es)
    
    with open(os.path.join(args.odir,args.name + 'Stats.txt'),'w') as f:
        print >> f, numpy.mean(es)
        print >> f, numpy.var(es)
        
    print numpy.mean(es)
    print numpy.var(es)