0 / 0
영어 버전 문서로 돌아가기
Python으로 고급 사용자 지정 제약 조건 생성하기 Decision Optimization Modeling Assistant 모델에서
마지막 업데이트 날짜: 2024년 11월 21일
Decision Optimization Modeling Assistant 에서 Python 을 사용하여 고급 사용자 정의 제약조건 작성

Decision Optimization Modeling Assistant 예제는 Python을 사용하는 고급 사용자 정의 제약조건을 작성하는 방법을 보여줍니다.

시작하기 전에

요구사항
Decision Optimization 모델을 편집하고 실행하려면 다음 전제조건이 있어야 합니다.
관리 또는 편집자 역할
프로젝트에서 관리 또는 편집자 역할이 있어야 합니다. 공유 프로젝트의 뷰어는 실험을 볼 수만 있고 수정하거나 실행할 수는 없습니다.
watsonx.ai 런타임 서비스
프로젝트와 연결된 watsonx.ai 런타임 서비스가 있어야 합니다. Decision Optimization 실험을 작성할 때 하나를 추가할 수 있습니다.
배치 공간
Decision Optimization 실험과 연관된 배치 공간이 있어야 합니다. Decision Optimization 실험을 작성할 때 배치 영역을 선택할 수 있습니다.

Decision Optimization Modeling Assistant에서 Decision Optimization 모델을 여십시오. 이 예에서는 DO 샘플에서 사용 가능한 Shift Assignment 샘플을 사용하고 AssignmentWithOnCallDuties 시나리오를 사용합니다. 이 동일한 샘플의 AssignmentWithCustomRule 시나리오는 이 사용자 정의 제약조건이 이미 추가된 완료된 모델을 표시합니다.

이 태스크에 대한 정보

Modeling Assistant 는 사용자 정의할 수 있는 문제점 도메인에 대한 많은 제한조건 제안사항을 제공합니다. 그러나 지정된 도메인에 대해 사전 정의된 제한조건 이상으로 제한조건을 표현할 수 있습니다. Python DOcplex를 사용하는 고급 사용자 정의 제한조건을 사용하여 이를 수행할 수 있습니다. 이 예제에서는 이를 작성하는 방법에 대해 설명합니다.

이 비디오는 이 문서의 개념 및 태스크를 학습하기 위한 시각적 방법을 제공합니다. Decision Optimization 실험 에서 예제를 로드한 후 비디오를 관심 대상으로 등록할 수 있습니다.

비디오 면책사항: 이 비디오의 일부 사소한 단계 및 그래픽 단계는 플랫폼과 다를 수 있습니다. 사용자 인터페이스도 자주 개선됩니다.

Decision Optimization 블로그 에서 IBM Data Science 커뮤니티 페이지에 있는 Python 을 사용한 사용자 정의 제한조건에 대한 자세한 정보를 읽으십시오.

프로시저

새 고급 사용자 정의 제한조건을 작성하려면 다음을 수행하십시오.

  1. 열린 Modeling Assistant 모델의 모델 빌드 보기 에서 제안사항 분할창을 보십시오. 검색 필드 옆에 있는 모두 표시 아이콘을 클릭하십시오. 그러면 모든 제안사항이 카테고리별로 표시되어 나열됩니다. 기타 섹션을 펼쳐 새 사용자 정의 제한조건을 찾은 후 클릭하여 모델에 추가하십시오. 또는 모든 제안 및 카테고리를 표시하지 않고 검색 필드에 custom 등을 입력하여 동일한 제안을 찾고 클릭하여 모델에 추가할 수 있습니다.
    새 사용자 정의 제한조건이 모델에 추가됩니다.

    사용자가 완료하도록 강조표시된 요소가 있는 모델의 새 사용자 정의 제한조건입니다.

  2. 클릭 제한조건을 입력하십시오. 데이터, 개념, 변수 또는 매개변수에 [대괄호]를 사용합니다. 을(를) 입력하고 지정하려는 제한조건을 입력하십시오. 예를 들어, No [employees] has [onCallDuties] for more than [2] consecutive days 를 입력하고 Enter를 누르십시오.
    사용자 정의할 기본 매개변수(parameter1, parameter2, parameter3)와 함께 스펙이 표시됩니다. 이러한 매개변수는 이 사용자 정의 규칙을 구현하는 Python 함수로 전달됩니다.

    사용자 정의 제한조건이 확장되어 기본 매개변수 및 함수 이름을 표시합니다.

  3. 스펙에서 기본 매개변수를 편집하여 보다 의미 있는 이름을 지정하십시오. 예를 들어, 매개변수를 employees, on_call_dutieslimit 로 변경하고 Enter를 클릭하십시오.
  4. 함수 이름을 클릭하고 함수의 이름을 입력하십시오. 예를 들어, limitConsecutiveAssignments 를 입력하고 Enter를 클릭하십시오.
    함수 이름이 추가되고 Python 편집 단추가 표시됩니다.

    사용자 정의된 매개변수 및 Python 편집 단추를 표시하는 사용자 정의 규칙입니다.

  5. Python편집 단추를 클릭하십시오.
    사용자 정의 규칙을 구현하기 위해 편집할 수 있는 Python 코드를 표시하는 새 창이 열립니다. 다음과 같이 코드에서 사용자 정의된 매개변수를 볼 수 있습니다.

    사용자 정의할 블록을 표시하는 Python 코드

    코드는 사용자 정의 규칙에서 정의한 대로 해당 데이터 프레임 및 테이블 컬럼 이름으로 문서화됩니다. 이 한계는 숫자 값으로 문서화되지 않습니다.
  6. 선택사항: 이 창에서 Python 코드를 직접 편집할 수 있지만 여기서 사용하기 전에 노트북에서 코드를 편집하고 디버그하는 것이 유용할 수 있습니다. 이 경우에는 지금 이 창을 닫고 시나리오 분할창에서 세 개의 세로 점을 펼치고 사용자 정의 규칙을 포함하는 이 시나리오에 대해 노트북 생성 을 선택하십시오. 이 노트북의 이름을 입력하십시오.
    편집 및 디버그할 준비가 된 프로젝트 자산에 노트북이 작성됩니다. 편집한 후에는 모델링 지원 프로그램의 이 Python 편집 창에 사용자 정의 함수의 코드를 다시 복사할 수 있습니다.
  7. Modeling Assistant 사용자 정의 규칙 Python 창에서 Python 코드를 편집하십시오.
    예를 들어, 다음과 같이 Python에서 연속 일에 대한 규칙을 정의할 수 있습니다.
        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. 실행 단추를 클릭하여 사용자 정의 제한조건으로 모델을 실행하십시오.
    실행이 완료되면 솔루션 탐색 보기에서 결과를 볼 수 있습니다.
일반적인 AI 검색 및 응답
이러한 응답은 제품 문서의 컨텐츠를 기반으로 하는 watsonx.ai 의 대형 언어 모델에 의해 생성됩니다. 자세히 알아보기