0 / 0
Zurück zur englischen Version der Dokumentation
Erstellung von erweiterten benutzerdefinierten Einschränkungen mit Python in einem Decision Optimization Modeling Assistant Modell
Letzte Aktualisierung: 21. Nov. 2024
Erweiterte angepasste Integritätsbedingungen mit Python in Decision Optimization Modeling Assistant erstellen

In diesem Beispiel Decision Optimization Modeling Assistant wird gezeigt, wie erweiterte angepasste Integritätsbedingungen erstellt werden, die Pythonverwenden.

Vorbereitende Schritte

Anforderungen
Zum Bearbeiten und Ausführen von Decision Optimization -Modellen müssen die folgenden Voraussetzungen erfüllt sein:
Administrator -oder Editor -Rollen
Sie müssen über die Rolle Admin oder Editor im Projekt verfügen. Viewer von gemeinsam genutzten Projekten können nur Experimente anzeigen, aber nicht ändern oder ausführen.
watsonx.ai Laufzeitdienst
Sie müssen einen watsonx.ai Runtime-Dienst haben, der mit Ihrem Projekt verbunden ist. Sie können eine hinzufügen, wenn Sie ein Decision Optimization Experimenterstellen.
Bereitstellungsbereich
Sie benötigen einen Bereitstellungsbereich, der Ihrem Decision Optimization Experimentzugeordnet ist. Sie können einen Bereitstellungsbereich auswählen, wenn Sie ein Decision Optimization Experimenterstellen.

Öffnen Sie ein beliebiges Decision Optimization -Modell in Decision Optimization Modeling Assistant. In diesem Beispiel wird das Beispiel Shift Assignment verwendet, das in DO-samplesverfügbar ist, und das Szenario AssignmentWithOnCallDuties . Das Szenario AssignmentWithCustomRule in diesem Beispiel zeigt Ihnen das abgeschlossene Modell mit dieser angepassten Einschränkung, das bereits hinzugefügt wurde.

Informationen zu dieser Task

Modeling Assistant bietet Ihnen viele Vorschläge für Einschränkungen für Ihre Problemdomäne, die angepasst werden können. Möglicherweise möchten Sie jedoch für die Domänen andere als die vordefinierten Integritätsbedingungen angeben. Sie können dies erreichen, indem Sie erweiterte benutzerdefinierte Einschränkungen verwenden, die Python DOcplexverwenden. Dieses Beispiel veranschaulicht, wie Sie diese erstellen können.

Dieses Video enthält eine visuelle Methode zum Erlernen der Konzepte und Tasks in dieser Dokumentation. Nachdem Sie das Beispiel in Ihrem Decision Optimization Experiment geladen haben, können Sie dem Video folgen.

Video-Haftungsausschluss: Einige kleinere Schritte und grafische Schritte in diesem Video können von Ihrer Plattform abweichen. Auch die Benutzerschnittstelle wird häufig verbessert.

Weitere Informationen finden Sie in diesem Decision Optimization -Blog zu angepassten Einschränkungen mit Python auf der Seite der IBM Data Science-Community.

Vorgehensweise

So erstellen Sie eine neue erweiterte angepasste Integritätsbedingung:

  1. Sehen Sie sich in der Modell erstellen Ansicht Ihres geöffneten Modeling Assistant -Modells das Teilfenster Vorschläge an. Klicken Sie auf das Symbol Alle anzeigen neben dem Suchfeld. Alle Vorschläge werden dann nach Kategorie angezeigt. Erweitern Sie den Abschnitt Andere , um Neue benutzerdefinierte Integritätsbedingungzu suchen, und klicken Sie darauf, um sie Ihrem Modell hinzuzufügen. Alternativ dazu können Sie, ohne dass alle Vorschläge und Kategorien angezeigt werden, beispielsweise custom in das Suchfeld eingeben, um denselben Vorschlag zu finden, und darauf klicken, um ihn Ihrem Modell hinzuzufügen.
    Ihrem Modell wird eine neue angepasste Integritätsbedingung hinzugefügt.

    Neue angepasste Integritätsbedingung im Modell mit hervorgehobenen Elementen, die vom Benutzer ausgeführt werden sollen.

  2. Klicken Geben Sie Ihre Bedingung ein. [eckige Klammern] für Daten, Konzepte, Variablen oder Parameter verwenden und geben Sie die Integritätsbedingung ein, die Sie angeben wollen. Geben Sie beispielsweise No [employees] has [onCallDuties] for more than [2] consecutive days ein und drücken Sie die Eingabetaste.
    Die Spezifikation wird mit Standardparametern (parameter1, parameter2, parameter3) angezeigt, die Sie anpassen können. Diese Parameter werden an die Funktion Python übergeben, die diese angepasste Regel implementiert.

    Angepasste Integritätsbedingung erweitert, um Standardparameter und Funktionsnamen anzuzeigen

  3. Bearbeiten Sie die Standardparameter in der Spezifikation, um ihnen aussagekräftigere Namen zu geben. Ändern Sie beispielsweise die Parameter in employees, on_call_dutiesund limit und drücken Sie die Eingabetaste.
  4. Klicken Sie auf Funktionsname und geben Sie einen Namen für die Funktion ein. Geben Sie beispielsweise limitConsecutiveAssignments ein und drücken Sie die Eingabetaste.
    Ihr Funktionsname wird hinzugefügt und eine Schaltfläche Python bearbeiten wird angezeigt.

    Angepasste Regel mit angepassten Parametern und Schaltfläche Python bearbeiten.

  5. Klicken Sie auf die Schaltfläche Python .
    Es wird ein neues Fenster mit Python-Code geöffnet, den Sie bearbeiten können, um Ihre angepasste Regel zu implementieren. Ihre angepassten Parameter werden im Code wie folgt angezeigt:

    Python -Code, der den anzupassenden Block zeigt

    Beachten Sie, dass der Code mit den entsprechenden Datenrahmen und Tabellenspaltennamen dokumentiert wird, wie Sie in der angepassten Regel definiert haben. Der Grenzwert ist nicht dokumentiert, weil dies ein numerischer Wert ist.
  6. Optional: Sie können den Python -Code direkt in diesem Fenster bearbeiten. Es kann jedoch hilfreich sein, Ihren Code in einem Notebook zu bearbeiten und zu debuggen, bevor Sie ihn hier verwenden. In diesem Fall schließen Sie dieses Fenster jetzt und erweitern im Teilfenster Szenario die drei vertikalen Punkte und wählen Notebook generieren für dieses Szenario aus, das die angepasste Regel enthält. Geben Sie einen Namen für dieses Notebook ein.
    Das Notebook wird in Ihren Projektassets erstellt, die Sie bearbeiten und debuggen können. Nachdem Sie ihn bearbeitet, ausgeführt und getestet haben, können Sie den Code für Ihre angepasste Funktion zurück in dieses Python bearbeiten-Fenster in Modeling Assistant kopieren.
  7. Bearbeiten Sie den Python -Code im Fenster ' Modeling Assistant Angepasste Regel Bearbeiten Python '.
    Sie können die Regel beispielsweise für aufeinanderfolgende Tage in Python wie folgt definieren:
        def limitConsecutiveAssignments(self, mdl, employees, on_call_duties, limit):
            global helper_add_labeled_cplex_constraint, helper_get_index_names_for_type, helper_get_column_name_for_property
            print('Adding constraints for the custom rule')
            for employee, duties in employees.associated(on_call_duties):
                duties_day_idx = duties.join(Day)  # Retrieve Day index from Day label
                for d in Day['index']:
                    end = d + limit + 1  # One must enforce that there are no occurence of (limit + 1) working consecutive days
                    duties_in_win = duties_day_idx[((duties_day_idx['index'] >= d) & (duties_day_idx['index'] <= end)) | (duties_day_idx['index'] <= end - 7)]
                    mdl.add_constraint(mdl.sum(duties_in_win.onCallDutyVar) <= limit)
  8. Klicken Sie auf die Schaltfläche Ausführen (Run) , um Ihr Modell mit Ihrer angepassten Einschränkung auszuführen.
    Wenn die Ausführung abgeschlossen ist, können Sie die Ergebnisse in der Ansicht Lösung durchsuchen anzeigen.
Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen