def NAG(U0, X0, vt): #----------------------------------------------------------- #variáveis globais #----------------------------------------------------------- glob = GlobalVariables() ganhoAlpha = glob.getGanhoAlpha() gamma = glob.getGamma() #global ganhoAlpha, gamma #----------------------------------------------------------- #cálculando o valor com o ganho anterior #----------------------------------------------------------- y1 = U0[0, 0] - gamma * vt[0, 0] y2 = U0[1, 0] - gamma * vt[1, 0] y3 = U0[2, 0] - gamma * vt[2, 0] y4 = U0[3, 0] - gamma * vt[3, 0] y5 = U0[4, 0] Y0 = np.array([[y1], [y2], [y3], [y4], [y5]]) #----------------------------------------------------------- #cálculo do gradiente da função #----------------------------------------------------------- G = gradienteFuncao(X0, Y0) g1 = G[0, 0] g2 = G[1, 0] g3 = G[2, 0] g4 = G[3, 0] #----------------------------------------------------------- #cálculando o valor com o ganho atual #----------------------------------------------------------- vt[0, 0] = gamma * vt[0, 0] + ganhoAlpha * g1 vt[1, 0] = gamma * vt[1, 0] + ganhoAlpha * g2 vt[2, 0] = gamma * vt[2, 0] + ganhoAlpha * g3 vt[3, 0] = gamma * vt[3, 0] + ganhoAlpha * g4 u1 = U0[0, 0] - vt[0, 0] u2 = U0[1, 0] - vt[1, 0] u3 = U0[2, 0] - vt[2, 0] u4 = U0[3, 0] - vt[3, 0] u5 = U0[4, 0] #----------------------------------------------------------- #Valor atualizado #----------------------------------------------------------- U = np.array([[u1], [u2], [u3], [u4], [u5]]) return U, vt
def SGDMomento(U0, X0, vt): #----------------------------------------------------------- #variáveis globais #----------------------------------------------------------- glob = GlobalVariables() ganhoAlpha = glob.getGanhoAlpha() gamma = glob.getGamma() #global ganhoAlpha, gamma #----------------------------------------------------------- #cálculo do gradiente da função #----------------------------------------------------------- G = gradienteFuncao(X0, U0) g1 = G[0, 0] g2 = G[1, 0] g3 = G[2, 0] g4 = G[3, 0] #----------------------------------------------------------- #cálculo do momento da função #----------------------------------------------------------- vt = np.zeros((4, 1)) vt[0, 0] = gamma * vt[0, 0] + ganhoAlpha * g1 vt[1, 0] = gamma * vt[1, 0] + ganhoAlpha * g2 vt[2, 0] = gamma * vt[2, 0] + ganhoAlpha * g3 vt[3, 0] = gamma * vt[3, 0] + ganhoAlpha * g4 #----------------------------------------------------------- #atualizando o valor do vetor de controle - U #----------------------------------------------------------- u1 = U0[0, 0] - vt[0, 0] u2 = U0[1, 0] - vt[1, 0] u3 = U0[2, 0] - vt[2, 0] u4 = U0[3, 0] - vt[3, 0] u5 = U0[4, 0] #----------------------------------------------------------- #Valor atualizado #----------------------------------------------------------- U = np.array([[u1], [u2], [u3], [u4], [u5]]) return U, vt
glob = GlobalVariables() #massa do corpo m = glob.getM() #tamanho da perna L = glob.getL() #gravidade g = glob.getG() #posição do pé de suporte em MS pfa = glob.getPfa() #----------------------------------------------------------- #Numero maximo de iterações para o metodo do gradiente #----------------------------------------------------------- #global maxNGrad, ganhoAlpha, gamma, h, hEdo maxNGrad = glob.getMaxNGrad() #número máximo de iterações método ganhoAlpha = glob.getGanhoAlpha() #ganho do fator de ganho para cada passo gamma = glob.getGamma() #ganho para os método gradiente(momento) h = glob.getH() #passo para o calculo das derivadas #calculado (comparado com a função do matlab) hEdo = glob.getHEDO() #passo para o calculo das derivadas #----------------------------------------------------------- #condição inicial para MS #----------------------------------------------------------- #hubo 2 + velocidade maxima 0.4 m/s # xod = 0.00 # yod = 0.05 # zod = 0.6 # dxod = 0.4 # dyod = 0.00 # dzod = 0.00