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
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
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
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
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
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
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
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
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))