J'essaie d'implémenter la programmation en nombres entiers pour un classificateur de type Nearest Neighbor en Python, en utilisant les éléments suivants cvxpy
.
Brève introduction
Étant donné un ensemble de données de n
Nous voulons choisir le nombre minimal de points candidats, c'est-à-dire que pour chaque point qui n'est pas candidat, son plus proche candidat a la même couleur.
Mon flux
Étant donné un ensemble de n
des points (avec des couleurs) définissent un vecteur indicateur I
( |I| = n
),
I_i = 1 if and only if vertex i is chosen as a candidate
En outre, j'ai défini deux vecteurs supplémentaires, nommés comme suit A
y B
( |A| = |B| = n
) comme suit :
A_i = the distance between v_i to it's closest candidate with the **same** color
B_i = the distance between v_i to it's closest candidate with a **different** color
Par conséquent, j'ai n
les contraintes qui sont : B_i > A_i
pour tout i
Mon objectif est de minimiser la somme des vecteurs I
(qui représente le nombre de candidats)
Mon problème
Il semble que les vecteurs A
, B
changent parce qu'elles sont affectées par I
car lorsqu'un candidat est choisi, cela affecte son entrée dans la base de données de l'UE. I
qui affecte A
y B
et les contraintes dépendent de ces vecteurs
Des suggestions ?
Merci !