[PYTHON] Enquête Star avec optimisation des combinaisons

Qu'est-ce que c'est

Essayez de résoudre

Il peut être considéré comme un problème de sac à dos. Résolvons-le avec Python. Voir le lien de référence pour l'optimisation mathématique avec Python.

python3


import numpy as np
from pulp import *
np.random.seed(1)
Nombre d'étoiles= 1000
Heure de l'enquête= np.random.randint(10,100,Nombre d'étoiles)
Probabilité de découverte= np.random.random(Nombre d'étoiles)/100000
m = LpProblem(sense=LpMaximize)
x = [LpVariable('x%.4d'%i, cat=LpBinary) for i in range(Nombre d'étoiles)]
m += lpDot(Probabilité de découverte,x)
m += lpDot(Heure de l'enquête,x) <= 10000
m.solve()
print(value(m.objective)) #Somme des probabilités de découverte
>>>
0.0022822674119170536

En fait, les fusées ont une portée de croisière maximale. Ici, le nombre maximum de sauts + 1 est mx, pas simplement la distance. Voyons ce qui arrive à la fonction objectif lorsque nous changeons mx. L'axe horizontal est mx et l'axe vertical est la fonction objectif.

python3


r = []
for mx in range(4,17):
    m = LpProblem(sense=LpMaximize)
    x = [LpVariable('x%.4d'%i, cat=LpBinary) for i in range(Nombre d'étoiles)]
    m += lpDot(Probabilité de découverte,x)
    m += lpDot(Heure de l'enquête,x) <= 10000
    for i in range(Nombre d'étoiles-mx+1):
        m += lpSum(x[i:i+mx]) >= 1 #Rechercher au moins un emplacement dans mx
    m.solve()
    r.append(value(m.objective))

%matplotlib inline
import matplotlib.pyplot as plt
plt.plot(range(4,17),r)
plt.hlines(0.0022822674119170536,4,16);

image

Essayez d'agrandir.

python3


plt.plot(range(4,17),r)
plt.hlines(0.0022822674119170536,4,16)
plt.xlim((9,16))
plt.ylim((0.00227,0.0023));

image

Avec le solveur gratuit par défaut CBC, en raison d'erreurs, plus la solution est restrictive, mieux c'est.

Le solveur commercial a été résolu plus précisément.

image

Lien de référence

c'est tout

Recommended Posts

Enquête Star avec optimisation des combinaisons
Utiliser l'optimisation des combinaisons
Trouver la main de "Millijan" par l'optimisation des combinaisons
Optimisation du regroupement par combinaison
Jeux de regroupement avec optimisation des combinaisons
Introduction à l'optimisation non linéaire (I)
Optimisation combinée avec recuit quantique
Introduction à l'optimisation bayésienne
Résolution de "cubes en cubes" avec optimisation des combinaisons
Résolvez le problème des 4 couleurs grâce à l'optimisation des combinaisons
Maximisez les ventes des restaurants grâce à l'optimisation combinée
Allez voir les baleines avec l'optimisation des combinaisons
Paver la route avec l'optimisation des combinaisons
Déterminer le programme enregistré par optimisation de combinaison
La puissance des solveurs d'optimisation combinée
Méthode de planification des expériences et optimisation des combinaisons
Résolution de la théorie des jeux avec l'optimisation des combinaisons
Techniques d'optimisation combinées vues dans les puzzles
Divisez en équipes par optimisation de combinaison
Penser les menus par l'optimisation des combinaisons