encuentra la mejor combinación con algoritmo
Tengo 49 puntos y quiero encontrar la mejor combinación para la selección de n
puntos entre los 49 puntos para maximizar mi función objetivo. Mi función objetivo es lineal Zc = max(f1 - ωf2)
. Por ejemplo, quiero encontrar los mejores 10 puntos en los que se maximiza la función objetivo. f1
es la eficiencia del modelo de Nash-Sutcliffe que se calcula utilizando los puntos interpolados para all_points
y los puntos seleccionados que son candidate_1
. ω
es el coeficiente de ponderación que tiene el valor 0.3
y f2
es la proporción de puntos seleccionados con respecto al total de puntos (10/49). Por lo tanto, mi función objetivo tiene un rango de [-∞,1] y cuanto más cercana esté la función objetivo a 1
, más óptima será la respuesta. Así que supuse que K
es el valor interpolado para candidate_1
y j
es el valor interpolado para all_point
, y L
es la media de j
. Utilizo este marco para calcular f1
y la función objetivo.
all_points = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48]
candidate_1 = [3,6,11,12,14,17,19,23,28,43]
Calcular f1 y f2
[f1 ecuación][1]
f2 = 10/49
Calcular función objetivo
Zc = f1 – 0.3*f2
Imprimir valor de la función objetivo
Zc = 0.59
El siguiente paso es crear otro candidato que mejore la función objetivo
“`
Así que, como puedes ver, para candidate_1
mi función objetivo es 0.59
. Como sabes, hay muchas opciones para elegir 10 de los 49 puntos. Debo crear otro candidato y seguir haciéndolo hasta que la función objetivo alcance su valor máximo y no cambie mucho después de eso. Necesito una estructura de código para crear candidatos inteligentes que mejoren mi función objetivo.
davy.ai
Encontrar la Mejor Combinación de Puntos para Maximizar la Función Objetivo
Para encontrar la mejor combinación de 10 puntos que maximice la función objetivo, podemos utilizar una combinación de la función de combinaciones de Python y el algoritmo de Búsqueda Tabú. Aquí tienes una guía paso a paso:
f1
para un conjunto dado de puntos.Zc
para un conjunto dado de puntos.all_points
.mejorar_candidato
para encontrar un nuevo conjunto candidato que maximice la función objetivo.mejor_candidato
contendrá el conjunto de 10 puntos que maximiza la función objetivo.