Sha256: 9f338a30708259b53dce9b1826af90af7d052f6b842ea70f8e2ad089e7642a31

Contents?: true

Size: 1.85 KB

Versions: 1

Compression:

Stored size: 1.85 KB

Contents

# -*- coding: utf-8 -*-
"""
Created on Sat Feb 27 21:32:33 2016

@author: devd
"""
from __future__ import division
from createRandomString import *
#from greedyMesher import *
from meshers import *
import matplotlib.pyplot as plt
import numpy as np




def experiment(length, ones_range_min, ones_range_max, reps, numStrings):
    
    strings = []
    ones = []
    avg = []
    stddev = []
    
    for numOnes in range(ones_range_min, ones_range_max+1):
        ones.append(numOnes)
        vals = []
        for iterations in range (reps):
            for i in range(numStrings):
                strings.append(createRandomString(length, numOnes))
            b, unmatched = greedyMesher(strings)        
            pages_freed = (numStrings - len(unmatched))/2
            percentage = (pages_freed/numStrings)*100
            vals.append(percentage)
            strings = []
        v = np.asarray(vals)
        a = np.mean(v)
        avg.append(a)
        s = np.std(v)
        stddev.append(s)
    return ones, avg, stddev

def plot_it(length, ones_range_min, ones_range_max, reps, numStrings):

    ones, avg, stddev = experiment(length, ones_range_min, ones_range_max, reps, numStrings)
    
    plt.errorbar(np.asarray(ones), np.asarray(avg), np.asarray(stddev), markersize=3, lw=1, fmt='-o')
    plt.ylim([0,60])
    plt.ylabel('Percentage of pages freed')
    plt.xlabel('Number of objects per page')
    plt.title('GREEDY FIRST-MATCH MESHING RESULTS \n{}-object pages, {} pages'.format(length, numStrings))
    plt.show()
    #plt.savefig('{}p{}'.format(length, numStrings) + '.png', dpi = 1000)
    #plt.close()

#length = [32,64]
length = [32]
ones_range_min = 1
ones_range_max = 16
reps = 10
#numStrings = [80,100,150,200]
numStrings = [80]

for l in length:
    for n in numStrings:
        plot_it(l, 1, int(l/2), reps, n)
        print 'greedy plot {},{} done'.format(l,n)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mesh-rb-0.0.1 ext/mesh/mesh/theory/greedy_experiment.py