Vous êtes sur la page 1sur 4

http://safelinking.

net/p/c9a97c0e3e d/dx1: 62*( (x2)+(2*x1)+ ((30*x1*cos( ((x1^2)+(x2^2))/(10*Pi) )/(Pi))) + (1/67)*(15*cos (x1) - ((2*x1) -30))*exp( ( 15*sin(x1) + 15*sin(x2) -((x1^2)- (30*x1) + (x2^2) (30*x2) - 60) )/67 ) ) + 135*( -sin(x1+x2) - ( (2*x1 -1)/(1000*exp( ((x1^2)-x1-( x2^2)-x2-7300 )/1000 ) ) ) ) d/dx2: 62* ( (2*x2)+ ((30*x2*cos( ((x1^2)+(x2^2))/(10*Pi) )/(Pi))) +(1/67)*(15*cos(x2) - ((2*x2) -30))*exp( ( 15*sin(x1) + 15*sin(x2) -((x1^2)- (30*x1) + (x2^2) -(30*x 2) - 60) )/67 )) + 135*( (2*x1) -sin(x1+x2) - ( ((2*x2)-1) /(1000*exp( ((x1^2)-x 1-(x2^2)-x2-7300 )/1000 )) ) ) 'Matriz que contine los puntos del vecindario Dim vecindario2() As Variant 'funciones objetivo para graficar Dim funcionesobjetivo2() As Variant 'Numero de puntos a generar Dim n As Integer Dim xx1 As Variant 'posicion x2 Dim xx2 As Variant Dim lambda2 As Variant Dim betax As Variant Dim puntos2 As Variant Sub iteracionpunto5() Sheets("Busqueda Local 2").Activate Call generarvecindario2 Call evaluarvecindario2 Call escribir(vecindario2, 1 * betax, 7, 9, 17) 'fila 9 columna 1 actualizacion = True End Sub 'generar puntos en el vecindario Sub generarvecindario2() n = 8 xx1 = Cells(3, 5) xx2 = Cells(4, 5) Cells(5, 2) = evaluarFO2(xx1, xx2) lambda2 = Cells(6, 5) betax = Cells(7, 5) puntos2 = (lambda2 / betax) ReDim vecindario2(betax, 7) ReDim funcionesobjetivo2(10 * n * betax, 1) Pi = Cells(1, 2)

For h = 1 To betax 'd/dx2 vecindario2(h, 2) = 62 * (xx1 + (2 * xx2) + ((30 * xx2 * Cos(((xx1 ^ 2) + (xx2 ^ 2)) / (10 * Pi)) / (Pi))) + (1 / 67) * (15 * Cos(xx2) - ((2 * xx2) - 30)) * Exp((15 * Sin(xx1) + 15 * Sin(xx2) - ((xx1 ^ 2) - (30 * xx1) + (xx2 ^ 2

) - (30 * xx2) - 60)) / 67)) + 135 * ((2 * xx1) - Sin(xx1 + xx2) - (((2 * xx2) 1) / (1000 * Exp(((xx1 ^ 2) - xx1 - (xx2 ^ 2) - xx2 - 7300) / 1000)))) 'd/dx1 vecindario2(h, 1) = 62 * ((xx2) + (2 * xx1) + ((30 * xx1 * Cos(((xx1 ^ 2) + (xx2 ^ 2)) / (10 * Pi)) / (Pi))) + (1 / 67) * (15 * Cos(xx1) - ((2 * xx1 ) - 30)) * Exp((15 * Sin(xx1) + 15 * Sin(xx2) - ((xx1 ^ 2) - (30 * xx1) + (xx2 ^ 2) - (30 * xx2) - 60)) / 67)) + 135 * (-Sin(xx1 + xx2) - ((2 * xx1 - 1) / (1000 * Exp(((xx1 ^ 2) - xx1 - (xx2 ^ 2) - xx2 - 7300) / 1000)))) m = Sqr((lambda2 ^ 2) / ((vecindario2(h, 1) ^ 2) + (vecindario2(h, 2 ) ^ 2))) vecindario2(h, 3) = xx1 + ((h) * (m / betax) * vecindario2(h, 1)) vecindario2(h, 4) = xx2 + ((h) * (m / betax) * vecindario2(h, 2)) Next h End Sub Sub evaluarvecindario2() f_01 = evaluarFO2(xx1, xx2) For i = 1 To betax vecindario2(i, 5) = evaluarfactibilidad2(vecindario2(i, 3), vecindario2(i , 4)) vecindario2(i, 7) = evaluarFO2(vecindario2(i, 3), vecindario2(i, 4)) vecindario2(i, 6) = vecindario2(i, 7) - f_01 Next i End Sub 'funcion para evaluar factibilidad Function evaluarfactibilidad2(xx1 As Variant, xx2 As Variant) As String Pi = Cells(1, 2) If (xx1 >= 0 And xx2 >= 0) Then If (((xx1 - 18.5) ^ 2 + (xx2 - 15.4) ^ 2 > 1.5 ^ 2) And ((xx1 - 21.7) ^ 2 + (xx2 - 3.7) ^ 2 > 0.45 ^ 2) And ((xx1 - 9.2) ^ 2 + (xx2 - 26.7) ^ 2 > 0.12 ^ 2) And ((xx1 - 5) ^ 2 + (xx2 - 22.1) ^ 2 > 1.7 ^ 2) And ((xx1 - 28.2) ^ 2 + (xx 2 - 7.2) ^ 2 > 0.5 ^ 2) And (xx1 <= 30) And (xx2 <= 30) And (xx1 >= 0) And (xx2 >= 0) And (5 * Cos((-10 * xx1) / (WorksheetFunction.Pi)) - xx2 + (3 * xx1 * (Wor ksheetFunction.Pi)) <= 260) And (xx2 <= 27 + (1 / (0.15 + (xx1 - 0.01) ^ 6)) * S in((xx1 * Pi + 3 * Pi) / 2) + Sin(Pi * ((xx1 - 4) / 4)) + Exp((6 * xx1) - (xx1 ^ 2) - 7))) Then evaluarfactibilidad2 = "factible" Else evaluarfactibilidad2 = "infactible" End If Else evaluarfactibilidad2 = "infactible" End If End Function 'funcion para evaluar FO Function evaluarFO2(xx1 As Variant, xx2 As Variant) As Double evaluarFO2 = 62 * (2000 + (xx1 * xx2) + (xx1 ^ 2) + (xx2 ^ 2) + (150 * (((xx 1 ^ 2) + (xx2 ^ 2)) / (10 * WorksheetFunction.Pi)))) + (135 * ((2 * xx1 * xx2) + (Cos(xx1 + xx2)) + (Exp((xx1 + xx2 - (xx1 ^ 2) - (xx2 ^ 2) + 7300) / 1000)))) End Function 'imprimir la matriz Sub escribir(mmatriz, ffilas As Integer, ccolumnas As Integer, ffi As Integer, c ci As Integer) For i = 1 To ffilas Cells(ffi + i, cci) = i For j = 1 To ccolumnas

Cells(ffi + i, cci + j) = mmatriz(i, j) Next j Next i End Sub Sub optimo2() ReDim funcionesobjetivo2(10 * n * betax, 1) Dim validar As Boolean validar = True Call iteracionpunto5 Dim mejorpunto As Integer Dim mejorcambio As Double mejorpunto = 0 mejorcambio = 0 For i = 1 To betax If (vecindario2(i, 6) > mejorcambio And vecindario2(i, 5) = "factibl e") Then mejorcambio = vecindario2(i, 7) mejorpunto = i End If Next i If (mejorpunto <> 0) Then xx1 = vecindario2(mejorpunto, 3) xx2 = vecindario2(mejorpunto, 4) Cells(3, 5) = vecindario2(mejorpunto, 3) Cells(4, 5) = vecindario2(mejorpunto, 4) Cells(5, 5) = vecindario2(mejorpunto, 7) Else MsgBox ("No hay un mejor punto al cual moverse," & vbCrLf & "Fin de la bsqueda local") validar = False End If validar = True Dim k As Integer k = 1 While validar = True And k > 0 Call iteracionpunto5 mejorpunto = 0 mejorcambio = 0 For i = 1 To betax If (vecindario2(i, 6) > mejorcambio And vecindario2(i, 5) = "factibl e") Then mejorcambio = vecindario2(i, 7) mejorpunto = i End If Next i If (mejorpunto <> 0) Then xx1 = vecindario2(mejorpunto, 3) xx2 = vecindario2(mejorpunto, 4) Cells(3, 5) = vecindario2(mejorpunto, 3)

Cells(4, 5) = vecindario2(mejorpunto, 4) Cells(5, 5) = vecindario2(mejorpunto, 7) Else MsgBox ("No hay un mejor punto al cual moverse," & vbCrLf & "Fin de la bsqueda local") validar = False End If funcionesobjetivo2(k, 1) = Cells(5, 5) Cells(k + 9, 25) = k Cells(k + 9, 26) = funcionesobjetivo2(k, 1) k = k + 1 Wend MsgBox ("SE CONFIGUR UN SONAR PARA ALCANZAR " & lambda2 & " METROS Y " & b etax & " NMEROS DE EXPLORACIN." & vbCrLf & "" & vbCrLf & "EL NUMERO DE ITERACIONE S PARA ENCONTRAR EL PUNTO DE PESCA PTIMO FUERON: " & k & vbCrLf & "" & vbCrLf & "LA POSICIN A LA QUE DEBE NAVEGAR BARCO ES: " & vbCrLf & "x = " & xx1 & vbCrLf & "y = " & xx2 & vbCrLf & "" & vbCrLf & "EL VALOR DE LA FUNCIN OBJETIVO ES: " & ev aluarFO2(xx1, xx2)) Cells(1, 5) = k End Sub Sub reiniciar() Range(Cells(10, 1), Cells(100, 20)).ClearContents Range(Cells(3, 2), Cells(5, 2)).ClearContents End Sub

Vous aimerez peut-être aussi