0 / 0
Go back to the English version of the documentation
Python
Last updated: 12 Eki 2023
Decision Optimization Modeling Assistant olanağında Python ile gelişmiş özel kısıtlamalar oluşturma

Bu Decision Optimization Modeling Assistant örneği, Pythonkullanan gelişmiş özel kısıtlamaları nasıl oluşturacağınızı gösterir.

Başlamadan önce

Decision Optimization Modeling Assistantiçindeki herhangi bir Decision Optimization modelini açın. Bu örnek, DO-samplesiçinde bulunan Shift Assignment örneğini kullanır ve AssignmentWithOnCallDuties senaryosunu kullanır. Bu aynı örnekteki AssignmentWithCustomRule senaryosu, bu özel kısıtlamaya sahip tamamlanmış modeli gösterir.

Bu görev hakkında

Modeling Assistant , sorun etki alanınıza ilişkin uyarlanabilecek birçok kısıt önerisi sağlar. Ancak, belirtilen etki alanları için önceden tanımlanmış olan sınırlamaları ifade etmek isteyebilirsiniz. Bunu Python DOcplexkullanan daha gelişmiş özel kısıtlamaları kullanarak gerçekleştirebilirsiniz. Bu örnek, bunları nasıl oluşturabileceğinizi gösterir.

Video sorumluluğun reddi: Bu videodaki bazı küçük adımlar ve grafik adımlar platformunuza göre farklı olabilir. Kullanıcı arabirimi de sık sık iyileştirilir.

IBM Data Science topluluk sayfasında bulunan Python ile özel kısıtlamalar hakkında bu Decision Optimization web günlüğünde daha fazla bilgi edinin.

Not: Optimizasyon modelleri oluşturmak ve çalıştırmak için projenize hem Machine Learning hizmeti, hem de denemenizle ilişkili bir devreye alma alanı eklenmiş olmalıdır:
  1. Projenize bir Machine Learning hizmeti ekleyin. Bu hizmeti proje düzeyinde ekleyebilir (bkz. Watson Machine Learning Hizmet eşgörünümü) ya da yeni bir Decision Optimization Deneyyarattığınızda ekleyebilirsiniz: Machine Learning serviceöğesini seçin ya da Yeni hizmetoluşturun, İlişkilendirseçeneğini tıklatın ve pencereyi kapatın.
  2. Bir konuşlandırma alanını Decision Optimization deneme ile ilişkilendirin (bkz. Konuşlandırma alanları). Yeni bir Decision Optimization deneyiyarattığınızda bir konuşlandırma alanı yaratılabilir ya da seçilebilir: Konuşlandırma alanı yaratöğesini tıklatın, konuşlandırma alanınız için bir ad girin ve Yaratöğesini tıklatın. Var olan modeller için, Genel Bakış bilgi bölmesinde bir alan oluşturabilir ya da seçebilirsiniz.

Yordam

Yeni bir gelişmiş özel kısıtlama oluşturmak için:

  1. Açık Modeling Assistant modelinizin Oluşturma modeli görünümünde Öneriler bölmesine bakın. Kategoriye göre görüntüle seçeneğini belirlediyseniz, Yeni özel kısıtlama' ı bulmak için Diğerleri bölümünü genişletin ve modelinize eklemek için bu kısıtlamayı tıklatın. Diğer bir seçenek olarak, kategori görüntülenmeden, arama alanına custom girerek aynı öneriyi bulabilir ve modelinize eklemek için bu öneriyi tıklatabilirsiniz.
    Modelinize yeni bir özel kısıtlama eklenir.

    Modelde, kullanıcı tarafından tamamlanacak öğeler vurgulanmış olarak yeni özel kısıtlama.

  2. Tıklatın Kısıtınızı girin. Veri, kavram, değişken ya da değiştirge için [ köşeli ayraç] kullanın ve belirtmek istediğiniz koşulu girin. Örneğin, No [employees] has [onCallDuties] for more than [2] consecutive days yazın ve Enter tuşuna basın.
    Belirtim, özelleştirmeniz için varsayılan parametrelerle (parameter1, parameter2, parameter3) görüntülenir. Bu parametreler, bu özel kuralı uygulayan Python işlevine geçirilir.

    Özel kısıtlama, varsayılan parametreleri ve işlev adını gösterecek şekilde genişletildi.

  3. Belirtim içindeki varsayılan parametreleri düzenleyerek daha anlamlı adlar verin. Örneğin, parametreleri employees, on_call_dutiesve limit olarak değiştirin ve Enter tuşuna basın.
  4. İşlev adını tıklatın ve işlev için bir ad girin. Örneğin, limitConsecutiveAssignments yazın ve Enter tuşuna basın.
    İşlev adınız eklenir ve Düzenle Python düğmesi görüntülenir.

    Özelleştirilmiş parametreleri gösteren özel kural ve Python düğmesini düzenle.

  5. Düzenle Python düğmesini tıklatın.
    Özel kuralınızı uygulamak için düzenleyebileceğiniz Python kodunu gösteren yeni bir pencere açılır. Kodda uyarlanmış değiştirgelerinizi aşağıdaki gibi görebilirsiniz:

    Özelleştirilecek öbeği gösteren Python kodu

    Kodun, özel kuralda tanımladığınız şekilde, karşılık gelen veri çerçeveleriyle ve tablo sütun adlarıyla belgelendiğine dikkat edin. Bu bir sayısal değer olduğundan sınır belgelenmedi için mı var var!!?!
  6. İsteğe bağlı: Python kodunu doğrudan bu pencerede düzenleyebilirsiniz, ancak burada kullanmadan önce bir not defterinde kodunuzu düzenleyip hata ayıklamanız yararlı olabilir. Bu durumda, bu pencereyi şimdilik kapatın ve Senaryo bölmesinde üç dikey noktayı genişletin ve özel kuralı içeren bu senaryo için Not defteri oluştur seçeneğini belirleyin. Bu not defteri için bir ad girin.
    Not defteri, düzenlemeniz ve hata ayıklamanız için hazır proje varlıklarınızda oluşturulur. Düzenledikten, çalıştırdıktan ve hata ayıkladıktan sonra özel işlevinize ilişkin kodu Modeling Assistantiçindeki bu Python dosyasını düzenle penceresine kopyalayabilirsiniz.
  7. Modeling Assistant özel kuralı Düzenle Python penceresinde Python kodunu düzenleyin.
    Örneğin, Python ' da ardışık günler için aşağıdaki gibi bir kural tanımlayabilirsiniz:
        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. Modelinizi özel kısıtınızla çalıştırmak için Çalıştır düğmesini tıklatın.
    Çalıştırma tamamlandığında, sonuçları Çözümü keşfedin görünümündegörebilirsiniz.
Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more