def formAnalysis(self, SSM, isViz = False, topk = 5): self.__TOPK = topk """ 視覺化Matrix """ if isViz: self.__SSMViz(SSM) """ 計算 SSM 中所有的 Block Family """ startTime = time.time() (self.__allFamilyM, cohesionM) = self.__allBlockFamily(SSM) endTime = time.time() print "LyricsForm: Family Matrix Construction Time = %.2fsec" % (endTime - startTime) """ 產生 Cohesion Matrix """ #self.__viz.grayMatrix(cohesionM, "Cohesion Matrix") """ Block Family Combination """ self.__allFamilyM = numpy.insert(self.__allFamilyM, 0, 0, axis = 0) startTime = time.time() ff = FormFinder(self.__allFamilyM, self.__TOPK) combineList = ff.computing() endTime = time.time() print "LyricsForm: Block Combination Time = %.2fsec" % (endTime - startTime) print """ combineList 轉換成詞式格式 """ lineNum = SSM.shape[0] formList = self.__resultForm(combineList, lineNum) return formList
def formAnalysis(self, SSM, isViz = False): """ 視覺化Matrix """ if isViz: self.__SSMViz(SSM) """ NMF test from nmf import nmf n = SSM.shape[0] r = 5 w = numpy.random.random([n, r]) h = numpy.random.random([r, n]) (wo,ho) = nmf(SSM, w, h, 0.001, 1000, 100) if isViz: self.__SSMViz(numpy.dot(wo, ho)) for k in range(r): print k wmask = numpy.zeros((n, r)) wmask[:, k] = numpy.ones(n) hmask = numpy.zeros((r, n)) hmask[k, :] = numpy.ones(n) self.__SSMViz(numpy.dot(wo * wmask, hmask * ho)) """ """ 計算 SSM 中所有的 Block Family """ startTime = time.time() self.__allFamilyM = self.__allBlockFamily(SSM) endTime = time.time() print "LyricsForm: Family Matrix Construction Time = %.2fsec" % (endTime - startTime) self.__allFamilyM = numpy.insert(self.__allFamilyM, 0, 0, axis = 0) """ Block Family Combination """ startTime = time.time() ff = FormFinder(self.__allFamilyM, self.__TOPK) combineList = ff.computing() endTime = time.time() print "LyricsForm: Block Combination Time = %.2fsec" % (endTime - startTime) print """ combineList 轉換成詞式格式 """ lineNum = SSM.shape[0] formList = self.__resultForm(combineList, lineNum) return formList
from FormFinder import FormFinder from Element import Element from Structure import Structure from Vizulization import Vizulization from Evolution import Evolution import matplotlib.pyplot as plt import numpy as np Solver = FormFinder() plt.ion() # Control Panel debug = False showViz = True updatefreq = 1 # Variables you tune #----------------------------------- population = 9 num_bars = 4 niche_radius = int(np.ceil((num_bars * 2) * 0.1)) print(niche_radius) load = 50 p_c = 0.1 #proability that you mutate the connections when you mutate p_reset = 0.1 # proability that you reset the bars when you mutate p_mutateL = 0.25 # amount of bars to mutate when you do mutate p_mutateLofCB = 0.75 #proability that you mutate a cable vs a strut when you mutate the lengths step_c = 1 step_l = 2