def getData(self): sql = "SELECT * FROM propriedade WHERE PropriedadeId = " + str( self) + " ORDER BY PropriedadeId" try: # buscar propriedades db = common.conexao(1) cursor = db.cursor() cursor.execute(sql) tupla = cursor.fetchone() dicionario = { 'propriedadeId': tupla[0], 'propriedadeNome': tupla[1], 'hrsConfinamento': tupla[2], 'qtdCabecaGado': tupla[3], 'precoCabecaGado': tupla[4], 'custoAlimentacao': tupla[5], 'qtdLeite': tupla[6], 'precoLeite': tupla[7], 'qtdFuncionarios': tupla[8], 'salarioFuncionarios': tupla[9], 'gastoEnergia': tupla[10], 'valorKw': tupla[11], 'orcamentoManut': tupla[12] } except: dicionario = 0 db.close() # retorna dados convertidos em dicionario return dicionario
def selecionar(i, j): # SELECIONA INDIVIDUOS DIFERENTES IsOk = False while IsOk is False: selecao = [int(rd.uniform(0, 30)), int(rd.uniform(0, 30))] if not selecao[0] == selecao[1]: # ------------------------------- -- # VERIFICA SE JÁ EXISTE FILHO COM OS PAIS SELECIONADOS sql = "SELECT COUNT(fa) FROM pop_intermediaria WHERE (indA = " + str(selecao[0]) + " OR indA = " + str( selecao[1]) + ") AND (indB = " + str(selecao[0]) + " OR indB = " + str( selecao[1]) + ") AND i = " + str(i) + " AND j = " + str(j) try: # ABRE CONEXAO COM BANCO DE DADOS db = common.conexao(1) cursor = db.cursor() cursor.execute(sql) qtdInd = cursor.fetchone() db.close() except: print('Erro selecionar') if not int(qtdInd[0]) > 0: IsOk = True return selecao
def getPopIncial(self): # STRING COM ERROS Error = 'Erros: ' tblPop = PrettyTable(['#', 'Qtd. Gado', 'Funcionario', 'Hrs Confinamento']) # ------------------------------- -- # ABRE CONEXAO COM BANCO DE DADOS db = common.conexao(1) cursor = db.cursor() # ------------------------------- -- # RECUPERA DADOS DA POPULAÇÃO INICIAL DA PROPRIEDADE sql = "SELECT id, gado, funcionario, confinamento FROM pop_inicial WHERE i = " + str(self) try: cursor.execute(sql) tupla = cursor.fetchall() for x in range(0, len(tupla)): tblPop.add_row(list(tupla[x])) except: Error += 'Propriedade Inexistente/' db.close() return tblPop
def getData(self): # buscar parametros db = common.conexao(1) cursor = db.cursor() sql = "SELECT * FROM parametro WHERE ParmId = " + str( self) + " ORDER BY ParmId" cursor.execute(sql) tupla = cursor.fetchone() db.close() dicionario = { 'parmId': tupla[0], 'qtdDejetos': tupla[1], 'qtdDiasMes': tupla[2], 'convertBiogas': tupla[3], 'convertBioFer': tupla[4], 'convertBioEne': tupla[5], 'precoBiofer': tupla[6], 'custoManutGerador': tupla[7], 'custoManutLagoa': tupla[8], 'custoManutBiod': tupla[9], 'custoManutConf': tupla[10], 'custoImplaConf': tupla[11], 'custoImplaBiod': tupla[12], 'custoImplaLagoa': tupla[13], 'custoImplaGerador': tupla[14] } # retorna dados convertidos em dicionario return dicionario
def buscaIndividuo(id, prop, i): if i == 1: # SELECIONA INDIVÍDUO DE pop_inicial sql = "SELECT gado,funcionario,confinamento FROM pop_inicial WHERE id = " + str(id) + " AND i = " + str( prop) try: # ABRE CONEXAO COM BANCO DE DADOS db = common.conexao(1) cursor = db.cursor() cursor.execute(sql) ind = cursor.fetchone() db.close() except: print('Erro selecionar individuo em pop_inicial') else: # SELECIONA INDIVIDUO DE pop_intermediaria sql = "SELECT gado,funcionario,confinamento FROM pop_intermediaria WHERE id = " + str( id) + " AND i = " + str(prop) + " AND j = " + str(i) try: # ABRE CONEXAO COM BANCO DE DADOS db = common.conexao(1) cursor = db.cursor() cursor.execute(sql) ind = cursor.fetchone() db.close() except: print('Erro selecionar individuo em pop_inicial') return ind # ----------------------------------- -- # TESTE DE CLASSE # ----------------------------------- -- # result = Populacao.setPopInicial(1) # print(result) # result = Populacao.getPopIncial(1) # print(result)
def remover(self): # ABRE CONEXAO COM BANCO DE DADOS db = common.conexao(1) cursor = db.cursor() # REMOVE REGISTROS INSUFICIENTES sql = "DELETE FROM pop_inicial WHERE i = " + str(int(self)) try: cursor.execute(sql) db.commit() resp = 'S' except: db.rollback() resp = 'N' db.close() return resp
def setData(self): db = common.conexao(1) cursor = db.cursor() # Inserir nova parametrizacao sql = "INSERT INTO propriedade (qtdDejetos, qtdDiasMes, convertBiogas, convertBioFer, convertBioEne) " \ "VALUES (" + str(self[0]) + ", " + str(self[1]) + ", " + str(self[2]) + "," + str( self[3]) + "," + str(self[4]) + ");" try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() retorno = 'Parâmetro cadastrado com sucesso.' except: # Rollback in case there is any error db.rollback() retorno = 'Erro. Confira os dados inseridos.' db.close() return retorno
def gera_pop(self): i = self[3] # Id da Propriedade j = 0 # qtd de individuos gerados QtdFunc = self[0] QtdGado = self[1] HrsConf = self[2] GadoMin = QtdGado - (QtdGado * 0.5) # Quantidade Mínima de Gado GadoMax = QtdGado + (QtdGado * 0.5) # Quantidade Máxima de Gado FuncMin = QtdFunc - (QtdFunc * 0.5 ) # Quantidade Mínima de Funcionários FuncMax = QtdFunc + (QtdFunc * 0.5 ) # Quantidade Máxima de Funcionários ConfMin = HrsConf - (HrsConf * 0.2 ) # Qtd. Mínima de Horas de Confinamento ConfMax = HrsConf + (HrsConf * 0.2 ) # Qtd. Máxima de Horas de Confinamento db = common.conexao(1) cursor = db.cursor() sql = "SELECT count(id) FROM pop_inicial WHERE i = " + str( i) + " ORDER BY id" cursor.execute(sql) listaInividuos = cursor.fetchone() qtdIndividuos = int(listaInividuos[0]) if qtdIndividuos > 0: print('\nPopulação Inicial já existe!\nDeseja atualizar os dados?') resp = (input('Sim/Nao: ')) else: resp = 'S' if resp.upper() == 'S' or resp.upper() == 'SIM': # Gerando nova população for x in range(0, 30): y = x + 1 gado = rd.uniform(GadoMin, GadoMax) funcionario = rd.uniform(FuncMin, FuncMax) confinamento = rd.uniform(ConfMin, ConfMax) # prepare a cursor object using cursor() method cursor = db.cursor() # Prepare SQL query to UPDATE required records sql = "INSERT INTO pop_inicial(id, gado, funcionario, confinamento, i) VALUES (" + str( y) + ", " + str(gado) + ", " + str( funcionario) + ", " + str(confinamento) + ", " + str( i) + ")" try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() j = j + 1 except: # Rollback in case there is any error db.rollback() # Gerando nova população print('\nPopulação Gerada com Sucesso!') else: # Mantendo População atual print('\nA população existente foi mantida.') # disconnect from server db.close()
def setPopInicial(self): # ------------------------------- -- # ABRE CONEXAO COM BANCO DE DADOS db = common.conexao(1) cursor = db.cursor() # PREPARA CONFIGURAÇÃO INICIAL COM BASE NOS DDOS DA PROPRIEDADE sql = "SELECT propriedadeId, qtdCabecaGado, qtdFuncionarios, hrsConfinamento FROM propriedade WHERE propriedadeId = " + str( int(self)) try: cursor.execute(sql) tplProp = cursor.fetchone() dicProp = {'propriedadeId': tplProp[0], 'qtdCabecaGado': tplProp[1], 'qtdFuncionarios': tplProp[2], 'hrsConfinamento': tplProp[3]} except: print('\nPropriedade Inexistente') db.close() # ------------------------------- -- # ------------------------------- -- # ABRE CONEXAO COM BANCO DE DADOS db = common.conexao(1) cursor = db.cursor() # RETORNA A QUANTIDADE DE INDIVIDUOS DA POPULACAO INCIAL DA PROPRIEDADE sql = "SELECT count(id) FROM pop_inicial WHERE i = " + str(dicProp['propriedadeId']) + " ORDER BY id" try: cursor.execute(sql) listaInividuos = cursor.fetchone() qtdIndividuos = int(listaInividuos[0]) except: print('\nErro ao contar população') db.close() # ------------------------------- -- # ------------------------------- -- # VERIFICA SE A POPULAÇÃO INICIAL ESTÁ COMPLETA - 30 INDIVIDUOS if qtdIndividuos == 30: print('\nPopulação Inicial já existe. Deseja atualizar os dados?') resp = (input('Sim/Nao: ')) # REMOVE INDIVIVUOS, CASO EXISTAM REGISTROS INSUFICIENTES elif qtdIndividuos > 0 and qtdIndividuos < 30: resp = Populacao.remover(dicProp['propriedadeId']) # CASO NÃO EXISTA NENHUMA REGISTRO PARA A POPULAÇÃO INICIAL else: resp = 'S' # ------------------------------- -- # ------------------------------- -- # GERA POPULAÇÃO INICIAL PARA A PROPRIEDADE if resp.upper() == 'S' or resp.upper() == 'SIM': # ------------------------------- -- # DEFAULT VALUE1 rmv = 'S' # ------------------------------- -- # REMOVE DADOS ANTIGOS if qtdIndividuos > 0: rmv = Populacao.remover(dicProp['propriedadeId']) else: IsOk = True if rmv == 'S': IsOk = True else: print('\nErro ao remover população população antiga :(') # ------------------------------- -- if IsOk == True: j = 0 # QTD DE INIDIVÍDUOS GERADOS # ------------------------------- -- # ABRE CONEXAO COM BANCO DE DADOS db = common.conexao(1) cursor = db.cursor() # ------------------------------- -- # ADICIONA NOVO INDIVÍDUO for x in range(0, 30): y = x + 1 indMin = dicProp['qtdCabecaGado'] - (dicProp['qtdCabecaGado'] * 0.5) indMax = dicProp['qtdCabecaGado'] + (dicProp['qtdCabecaGado'] * 0.5) gado = rd.uniform(indMin, indMax) indMin = dicProp['qtdFuncionarios'] - (dicProp['qtdFuncionarios'] * 0.5) indMax = dicProp['qtdFuncionarios'] + (dicProp['qtdFuncionarios'] * 0.5) funcionario = rd.uniform(indMin, indMax) indMin = dicProp['hrsConfinamento'] - (dicProp['hrsConfinamento'] * 0.5) indMax = dicProp['hrsConfinamento'] + (dicProp['hrsConfinamento'] * 0.5) confinamento = rd.uniform(indMin, indMax) sql = "INSERT INTO pop_inicial(id, gado, funcionario, confinamento, i)" \ "VALUES (" + str(y) + ", " + str(gado) + ", " + str(funcionario) + ", " + str( confinamento) + "," \ " " + str(dicProp['propriedadeId']) + ")" try: cursor.execute(sql) db.commit() j += 1 except: db.rollback() print('Não foi possível adicionar o indivíduo ', str(y)) # FIM DO FOR # ------------------------------- -- db.close() # ------------------------------- -- if j == 30: print('\nPopulação atualizada com sucesso!') return True return False elif qtdIndividuos == 30: print('\nPopulação mantida!') return True else: # Mantendo População atual print('\nPopulação insuficiente') return False