コード例 #1
0
def lastTwo(tiles, s1, s2, s3):
    final = np.zeros((2, 2))
    points = 0
    '''
    t_1 = []
    t_2 = []
    t_3 = []
    '''
    for i in tiles:
        temp_1 = t1.Location(int(i / 100), i % 100)
        for j in tiles:
            if (i != j):

                temp_2 = t1.Location(int(j / 100), j % 100)
                cPts = connxionPts(checkConnection(temp_1)) + connxionPts(
                    checkConnection(temp_2))
                rPts = roadPts(temp_1, temp_2)
                pPts = populationPts(temp_1, temp_2)
                total = (cPts - 11.44) / 3.8995 * s1 + (
                    rPts - 64.18) / 2.295 * s2 + (pPts - 641.6) / 8.2486 * s3

                if (total > points):
                    final = [[temp_1.x, temp_1.y], [temp_2.x, temp_2.y]]
                    points = total
    return final
コード例 #2
0
def populationPts(l1, l2):
    pts = 0
    popMap = removeBonuses(dt.get_populaton_map(), lastP)
    for i in range(25):
        for j in range(72):
            temp = t1.Location(i, j)
            if (temp.getDistance(l1) <= 52.7):
                pts += popMap[i][j]
    popMap = removeBonuses(popMap, l1)
    for i in range(25):
        for j in range(72):
            temp = t1.Location(i, j)
            if (temp.getDistance(l2) <= 52.7):
                pts += popMap[i][j]
    return pts
コード例 #3
0
def removeBonuses(map, loc):
    for i in range(25):
        for j in range(72):
            temp = t1.Location(i, j)
            if (temp.getDistance(loc) <= 52.7):
                map[i][j] = 0
    return map
コード例 #4
0
def removeImpedence(adjPar, loc):
    for i in adjPar:
        y = i % 100
        x = int(i / 100)
        tarTile = t1.Location(x, y)
        adjPar[i] = adjPar[i] / (np.exp(-tarTile.getDistance(loc)) + 1)
    return adjPar
コード例 #5
0
def downToFifty(tiles):
    adjPar = {}  #initialize adjust parameters
    lastFifty = {}
    counter = 1
    for i in tiles:
        adjPar[i] = 1

    keys = list(tiles.keys())
    random.shuffle(keys)
    for i in keys:
        print(counter)
        '''
        if(counter == 135):
            print ('1/4 DONE!!')
            printTiles(lastFifty)
        if(counter == 270):
            print ('HALF DONE!!!')
            printTiles(lastFifty)
        if(counter == 405):
            print ('3/4 DONE!!!!')
            printTiles(lastFifty)
        '''

        counter += 1
        y = i % 100
        x = int(i / 100)
        tarLoc = t1.Location(x, y)

        if (len(lastFifty) < 50):
            lastFifty[i] = getAddedImped(tarLoc)
            adjPar = adjImpedence(adjPar, tarLoc)

        else:
            temp = adjedTile(lastFifty, adjPar)
            #print (i)
            ff = getAddedImped(tarLoc)
            if (temp[getMax(temp)] > ff * adjPar[i]):
                adx = getMax(temp) % 100
                ady = int(getMax(temp) / 100)
                delLoc = t1.Location(adx, ady)
                del lastFifty[getMax(temp)]
                lastFifty[i] = ff
                adjPar = adjImpedence(adjPar, tarLoc)
                adjPar = removeImpedence(adjPar, delLoc)
    return lastFifty
コード例 #6
0
def roadPts(l1, l2):
    pts = 0
    roadMap = removeBonuses(dt.get_highway_map(), lastP)
    # print (roadMap)
    for i in range(25):
        for j in range(72):
            temp = t1.Location(i, j)
            if (temp.getDistance(l1) <= 52.7):
                if (roadMap[i][j] != 0):
                    pts += 1
    roadMap = removeBonuses(roadMap, l1)
    for i in range(25):
        for j in range(72):
            temp = t1.Location(i, j)
            if (temp.getDistance(l2) <= 52.7):
                if (roadMap[i][j] != 0):
                    pts += 1
    return pts
コード例 #7
0
def pickOneEtile(tiles):
    lastOne = {}
    for i in tiles:
        y = i % 100
        x = int(i / 100)
        tarLoc = t1.Location(x, y)
        curMin = getMinWeight(dt.destruction_wind_rainfall_analysis(), eHos,
                              tarLoc)
        if (len(lastOne) == 0):
            lastOne[i] = curMin
        elif (lastOne[list(tiles.keys())[0]] > curMin):
            lastOne.clear()
            lastOne[i] = curMin
    return lastOne
コード例 #8
0
def pickEhosTiles(map, percentile):
    size = int(percentile / 100 * 72 * 25)
    dict = {}
    for i in range(0, 25):
        for j in range(0, 72):
            loc = t1.Location(i, j)
            if (loc.getDistance(eHos) <= 52.7):
                if (loc.getDistance(dHos) <= 52.7
                        or loc.getDistance(cHos) <= 52.7):
                    if (len(dict) < size):
                        dict[i * 100 + j] = map[i][j]
                    else:
                        if (map[i][j] < dict[getMax(dict)]):
                            del dict[getMax(dict)]
                            dict[i * 100 + j] = map[i][j]

    return dict
コード例 #9
0
import math
import matplotlib.pyplot as plt
import matplotlib.image as img
import numpy as np
import scipy as sp
import scipy.stats as st
import pickle as pkl
import csv as csv
import database as dt
import task1 as t1
import routinePlanning as rp
import random

eHos = t1.Location(1, 22)
dHos = t1.Location(4, 48)
cHos = t1.Location(2, 53)
bHos = t1.Location(13, 54)
aHos = t1.Location(7, 71)
lastP = t1.Location(3, 34)
locBest1 = t1.Location(3, 50)
locBest2 = t1.Location(8, 54)
locBest3 = t1.Location(3, 34)

print(locBest1.getDistance(aHos))
print(locBest2.getDistance(aHos))

print(locBest1.getDistance(dHos))
print(locBest2.getDistance(dHos))

print(locBest1.getDistance(bHos))
print(locBest1.getDistance(cHos))