Wert des Null-Eins-Rucksacks
Maximiere den Wert von höchstens 64 Gewicht-Wert-Paaren bei einer ganzzahligen Kapazität von null bis 1000, wobei jedes Objekt einmal verwendet wird.
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]Vor dem Anwenden prüfen
Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.
Modelle
Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen.
Projekt
Prüfe Kapazität null und ein zu schweres Objekt, und lehne Nullgewichte oder nicht ganzzahlige Operanden vor dem Tabellenaufbau ab.
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]Auswahlregel und implementierenden Code unterscheiden
PackSerein unterstützt KI-gestützte Softwarearbeit in einem Windows-Projektarbeitsbereich, in dem Optimierungsanforderungen neben Implementierungsdateien besprochen werden können. Beschreiben Sie, was ausgewählt werden darf, welche Bedingungen verbindlich sind und welches Ergebnis der Aufrufer tatsächlich benötigt. Lassen Sie den Assistenten die aktuelle Darstellung prüfen, bevor Sie den Lösungsalgorithmus ändern. Ein klares Ziel verhindert, dass eine plausible Implementierung ein unmerklich anderes Problem löst.
Das Beispiel knapsack.py legt eine Prüfaufgabe nahe, bei der jeder Gegenstand unter einer Kapazitätsgrenze höchstens einmal gewählt werden darf. Sie könnten fragen, ob eine vorgeschlagene Änderung diese Regel bewahrt und ob die Anwendung nur einen Wert oder auch die gewählten Gegenstände benötigt. Rechnen Sie einen kleinen Fall von Hand durch und prüfen Sie den Code daran. Beziehen Sie Eingabegrenzen und zurückgewiesene Werte in dieselbe Prüfung ein.
Führen Sie nach Fertigstellung des Patches die Projekttests für eine leere Auswahl, eine Kapazitätsgrenze und konkurrierende Kombinationen aus. Prüfen Sie den Ausgabevertrag, bevor Sie den verarbeitenden Code anpassen. PackSerein akzeptiert unterstützte OpenAI-kompatible oder Anthropic-Endpunkte und bei Bedarf Zugangsdaten. Ein ungefiltertes KI-Modell kann gewählt werden, wenn Ihre Verbindung es anbietet; Einschränkungen, Kontextgrenzen und Werkzeugunterstützung hängen weiterhin von Modell und Server ab. Der Arbeitsbereich strukturiert die Programmierentscheidung; Ihre Prüfungen bestimmen, ob sie das Ziel erfüllt.
Fragen zur Definition einer Optimierungsaufgabe
- Warum angeben, ob ein Gegenstand zweimal gewählt werden darf?
Wiederholte Auswahl verändert das Problem und möglicherweise das Ergebnis. Schreiben Sie diese Bedingung in den Auftrag und testen Sie einen kleinen Fall, in dem Wiederholung eine andere Antwort erzeugen würde. Prüfen Sie dann, ob die Änderung die Bedingung bewahrt.
- Genügt der Anwendung ein optimaler Wert?
Das hängt vom Aufrufer ab. Manche benötigen nur den Wert, andere auch die ausgewählten Gegenstände. Legen Sie die benötigte Ausgabe vor Änderungswünschen fest, damit der Assistent nicht annimmt, eine einzelne Zahl vervollständige die Funktion.
- Wie gehe ich mit gleichwertigen Lösungen um?
Definieren Sie, ob jedes gültige Optimum akzeptabel ist oder eine deterministische Gleichstandsregel benötigt wird. Werden ausgewählte Gegenstände zurückgegeben, testen Sie Gleichstände ausdrücklich und prüfen Sie die Regel, statt sich auf zufällige Iterationsreihenfolgen zu verlassen.
- Kann das Beispiel die Leistung eines Lösers im großen Maßstab belegen?
Nein. Besprechen Sie damit eine begrenzte Implementierung und bewerten Sie dann das tatsächliche Projekt unter den erforderlichen Größen. Ein kleiner korrekter Fall und eine KI-Erklärung belegen weder Laufzeit noch Speicherverhalten in anderem Maßstab.
PackSerein · Aktualisiert 2026-10-25