Valeur du sac à dos zéro-un
Maximisez la valeur de 64 couples poids-valeur au plus avec une capacité entière de zéro à 1000, chaque objet étant utilisé une seule fois.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]Vérifiez avant d’appliquer
Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
Modèles
Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
Projet
Testez une capacité nulle et un objet trop lourd, en rejetant les poids nuls ou les opérandes non entiers avant de construire le tableau.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]Distinguez la règle de sélection du code qui l’implémente
PackSerein accompagne le développement assisté par IA dans un espace de projet sous Windows où les exigences d’optimisation se discutent avec les fichiers d’implémentation. Décrivez les éléments sélectionnables, les contraintes obligatoires et le résultat réellement attendu par l’appelant. Demandez à l’assistant d’examiner la représentation actuelle avant de modifier le solveur. Un objectif clair évite qu’une implémentation plausible résolve un problème légèrement différent.
L’exemple knapsack.py suggère une revue où chaque élément peut être choisi au plus une fois sous une limite de capacité. Vous pouvez demander si une mise à jour préserve cette règle et si l’application a besoin d’une valeur seule ou aussi des éléments choisis. Résolvez manuellement un petit cas, puis examinez le code à sa lumière. Intégrez à cette même revue les bornes d’entrée et les valeurs rejetées.
Lorsque le correctif est prêt, exécutez les tests du projet pour une sélection vide, une limite de capacité et des combinaisons concurrentes. Vérifiez le contrat de sortie avant d’adapter le consommateur. PackSerein accepte les points de terminaison compatibles OpenAI ou Anthropic pris en charge et les identifiants nécessaires. Un modèle d’IA sans filtrage peut être sélectionné si votre connexion le propose ; ses restrictions, limites de contexte et outils dépendent toujours du modèle et du serveur. L’espace aide à structurer la décision de programmation, tandis que vos vérifications déterminent si elle atteint l’objectif.
Questions pour définir une tâche d’optimisation
- Pourquoi préciser si un élément peut être sélectionné deux fois ?
Autoriser les sélections répétées change le problème et peut changer le résultat. Inscrivez cette contrainte dans la demande et testez un petit cas où la répétition donnerait une réponse différente, puis vérifiez que la modification la préserve.
- Une valeur optimale suffit-elle à l’application ?
Cela dépend de l’appelant. Certains consommateurs n’ont besoin que du score, d’autres aussi des éléments sélectionnés. Précisez la sortie requise avant de demander des modifications pour que l’assistant ne suppose pas qu’un seul nombre termine la fonctionnalité.
- Comment traiter les solutions de même valeur ?
Définissez si tout optimum valide est acceptable ou si l’application exige une règle déterministe de départage. Si les éléments sélectionnés sont renvoyés, testez explicitement les égalités et examinez la règle sans dépendre d’un ordre d’itération fortuit.
- L’exemple peut-il établir les performances d’un solveur à grande échelle ?
Non. Utilisez-le pour discuter d’une implémentation bornée, puis évaluez le projet réel aux tailles requises. Un petit cas correct et une explication d’IA n’établissent pas le comportement en temps ou en mémoire à une autre échelle.
PackSerein · Mis à jour 2026-10-25