모델 준비

    소개

    이제 슬롯 커뮤니티 모델을 MIRO 앱으로 전환해 보겠습니다. 언제 슬롯 커뮤니티 MIRO를 개발하면서 우리는 이를 자동화하는 데 중점을 두었습니다. 아주 적은 조정만으로 가능하게 만드는 것입니다. 당신의 모델에. 시작하려면 좋은 생각입니다. 슬롯 커뮤니티 코드를 살펴보겠습니다.데모 애플리케이션.

    모델운송이 데모 중 하나입니다 슬롯 커뮤니티 MIRO 설치와 함께 제공되는 애플리케이션. 그러나 설명을 위해 이제 다음을 사용합니다. 원본trnsport.gms슬롯 커뮤니티의 모델모델 라이브러리.

    당신이 우리와 함께 한걸음 한걸음 나아가고 싶다면 "원시" 모델을 첫 번째 MIRO 앱에 다운로드하고 모델 라이브러리에서 해당 파일을 가져와서 원하는 디렉토리를 선택하세요.

    대소문자 구분:

    MIRO 특정 파일 및 디렉토리 (conf_<모델 이름>, data_<모델 이름>, static_<모델 이름>, renderer_<모델 이름>, scripts_<모델 이름>그리고<모델 이름&gt_files.txt)는 더 낮아야 합니다. 경우!

    슬롯 커뮤니티 모델을 슬롯 커뮤니티 MIRO 앱으로 전환

    모델 조정

    모든 슬롯 커뮤니티 모델은 단 한번에 MIRO와 함께 배포될 수 있습니다. 몇 걸음. 먼저, 귀하가 사용하는 슬롯 커뮤니티 기호 인터페이스에 표시되려면 선언했다. 이 작업은 다음을 래핑하여 수행할 수 있습니다. 해당기호 선언태그 포함$onExternalInput / $offExternalInput입력 데이터용 및$onExternalOutput / $offExternalOutput출력 데이터용. 이 태그는 여러 번 사용할 수 있습니다. 모델 내 시간. 태그가 지정되지 않은 기호 웹 인터페이스에는 표시되지 않습니다.

    아래 코드는 작은 예를 보여줍니다:

    $onExternalInput
    슬롯 커뮤니티
        Symbol_1(dim1,dim2) 'MIRO에 표시됨(모델 입력 데이터)'
        Symbol_2(dim3) 'MIRO에 표시됨(모델 입력 데이터)';
    $offExternalInput
    
    슬롯 커뮤니티
        Symbol_3(dim4) 'MIRO에 표시되지 않음';

    여기서 슬롯 커뮤니티symbol_1그리고symbol_2선언되었습니다 태그 사이$onExternalInput그리고$offExternalInput. MIRO에 표시됩니다(예: 테이블).
    symbol_3, 에 반면에 키워드 외부에 선언되었습니다. 이 매개변수는 MIRO에 표시되지 않습니다(그러나 물론 여전히 슬롯 커뮤니티 기호로 사용할 수 있습니다. 귀하의 모델).

    모든 GAMSPy 모델은 MIRO와 함께 배포될 수 있습니다. 몇 단계만 거치면 됩니다. 첫째, 슬롯 커뮤니티 기호는 인터페이스에 표시되려면 주석이 달린. 이는 다음을 추가하여 달성할 수 있습니다.is_miro_input=참입력 데이터의 경우is_miro_output=TrueGAMSPy 생성자의 출력 데이터용 기호. 이러한 인수가 없는 기호는 웹 인터페이스에 표시됩니다.

    아래 코드는 작은 예를 보여줍니다:

    symbol_1 = 슬롯 커뮤니티(m, name="symbol_1", domain=[dim1, 희미한2], is_miro_input=True)
    Symbol_2 = 슬롯 커뮤니티(m, name="symbol_2", domain=[dim3], is_miro_input=True)
    Symbol_3 = 슬롯 커뮤니티(m, name="symbol_3", domain=[dim4])

    여기서 슬롯 커뮤니티symbol_1그리고symbol_2정의됨 사용 중is_miro_input=참. MIRO에 표시됩니다(예: 테이블).symbol_3않을 것입니다 MIRO에서는 볼 수 있지만(물론 여전히 모델에서 슬롯 커뮤니티 기호로 사용 가능).

    다음 슬롯 커뮤니티 기호는 슬롯 커뮤니티 MIRO에서 사용할 수 있습니다:

    슬롯 커뮤니티 옵션 및 이중 대시 구성 매개변수는 다른 기호와 다릅니다. 자세히 알아보기 이것에 대해여기.

    파일 인코딩:

    슬롯 커뮤니티 모델 파일은 UTF-8로 인코딩되어야 합니다. 슬롯 커뮤니티 Studio에서는 인코딩을 변경할 수 있습니다. 파일을 통해편집인코딩다음으로 변환... →UTF-8. 기타 파일 슬롯 커뮤니티 MIRO에서는 인코딩이 지원되지 않습니다!

    슬롯 커뮤니티 Studio의 파일 인코딩

    예:
    모델에 이것을 시도해 봅시다trn스포츠지금. 입력데이터는 이렇습니다 모델의 섹션은 로드했을 때와 같습니다. 슬롯 커뮤니티 모델 라이브러리에서 가져온 것입니다.

    설정
       i '통조림 식물' / 시애틀, 샌디에이고 /
       j 'markets' / 뉴욕, 시카고, 토피카 /;
    
    슬롯 커뮤니티
       a(i) '경우에 따라 식물 i의 용량'
            /시애틀 350
              샌디에이고 600 /
    
       b(j) '경우에 따라 시장 j의 수요'
            / 뉴욕 325
              시카고 300
              토피카 275 /;
    
    테이블 d(i,j) '거리(천 마일)'
                  뉴욕 시카고 토피카
       시애틀 2.5 1.7 1.8
       샌디에고 2.5 1.8 1.4;
    
    스칼라 f '1,000마일당 케이스당 운임(달러)' / 90 /;
    
    슬롯 커뮤니티 c(i,j) '케이스당 운송 비용(단위: 수천 달러)';

    MIRO에서 일부 데이터를 가져오겠습니다. 슬롯 커뮤니티a, b그리고d또한 스칼라f. MIRO에게 말해주기 위해서 이 기호가 거기에서 나오기를 원하신다면, 우리는 이제 언급된 주석으로 플래그를 지정하세요. 기호 선언:

    설정
       i '통조림 식물' / 시애틀, 샌디에이고 /
       j 'markets' / 뉴욕, 시카고, 토피카 /;
    
    $onExternalInput
    슬롯 커뮤니티
       a(i) '경우에 따라 식물 i의 용량'
            /시애틀 350
              샌디에이고 600 /
    
       b(j) '경우에 따라 시장 j의 수요'
            / 뉴욕 325
              시카고 300
              토피카 275 /;
    
    테이블 d(i,j) '거리(천 마일)'
                  뉴욕 시카고 토피카
       시애틀 2.5 1.7 1.8
       샌디에고 2.5 1.8 1.4;
    
    스칼라 f '1,000마일당 케이스당 운임(달러)' / 90 /;
    $offExternalInput

    여기서 고려해야 할 한 가지 사항이 있습니다: 슬롯 커뮤니티를 표시하기로 결정했습니다.a색인 포함iMIRO 및 슬롯 커뮤니티b그리고 색인j. 그러므로 그것은 우리는 MIRO 내에서 i와 j(즉, 요소 수정) i 및/또는 j). 그러나 우리가 i와 j를 선언한 것처럼 외부에서$on-/offExternalInput태그를 사용하면 도메인 위반이 발생하게 됩니다. 세트 요소를 수정하세요! 이 문제를 해결하려면 문제가 발생하면 우리는 < 연산자:

    설정
       나는 '통조림 식물'
       j '시장';
    
    $onExternalInput
    슬롯 커뮤니티
       a(i<) '경우에 따라 식물 i의 용량'
            /시애틀 350
              샌디에이고 600 /
    
       b(j<) '경우에 따라 시장 j의 수요'
            / 뉴욕 325
              시카고 300
              토피카 275 /;
    
    [...]
    $offExternalInput

    이것 < 연산자세트를 유발함i그리고j정의됨 슬롯 커뮤니티를 통해 암시적으로a그리고b(또한 참조여기). 또는 첫 번째 열을 선언할 수도 있습니다. 테이블 a와 b는 다음과 같습니다.읽기 전용도메인 위반을 방지하기 위해.

    또한 우리는 MIRO가 변수를 표시하기를 원합니다 모델의. 그렇게 하려면 간단히 태그를 지정하면 됩니다. 변수 선언문:

    $onExternalOutput
    변수
       x(i,j) '케이스의 선적 수량'
       z '총 운송 비용(천 달러)';
    $offExternalOutput
    양수 변수 x;
    
    [...]

    그렇습니다. 입력 및 출력 데이터를 모두 정의했습니다. MIRO에서 사용하기 위해. 슬롯 커뮤니티 Studio를 사용하는 경우 모델 이제 MIRO에서 출시될 준비가 되었습니다. 당신이 사용하는 경우 대신 명령줄을 따르세요.이 단계들MIRO를 시작하기 전.

    예:
    모델에 이것을 시도해 봅시다trn스포츠지금. 입력데이터는 이렇습니다 모델의 섹션은 예제와 같습니다. 신청:

    # 세트
    i = Set(m, name="i", records=["seattle", "san-diego"], Description="통조림 공장")
    j = Set(m, name="j", records=["new-york", "시카고", "topeka"], 설명="시장")
    
    [...]
    
    # 데이터
    a = Parameter(m, name="a", domain=[i], records=capacities, Description="경우에 따른 식물 i의 용량")
    b = Parameter(m, name="b", domain=[j], records=demands, Description="경우에 따라 시장 j의 수요")
    d = 슬롯 커뮤니티(m, 이름="d", 도메인=[i, j], 레코드=거리, 설명="천 마일 단위의 거리")
    f = Parameter(m, name="f", records=90, Description="1,000마일당 케이스당 화물(달러)")

    MIRO에서 일부 데이터를 가져오겠습니다. 슬롯 커뮤니티a, b그리고d스칼라도 포함f. MIRO에게 말해주기 위해서 이 기호가 거기에서 나오기를 원하신다면, 우리는 이제 언급된 인수로 플래그를 지정하세요.is_miro_input=참:

    # 세트
    i = Set(m, name="i", records=["seattle", "san-diego"], Description="통조림 공장")
    j = Set(m, name="j", records=["new-york", "시카고", "topeka"], 설명="시장")
    
    [...]
    
    # 데이터
    a = 슬롯 커뮤니티(m, name="a", domain=[i], records=capacities, is_miro_input=True, 설명="경우에 따른 식물 i의 용량")
    b = 슬롯 커뮤니티(m, name="b", domain=[j], records=demands, is_miro_input=True, 설명="경우에 따라 시장 j 수요")
    d = Parameter(m, name="d", domain=[i, j], records=distances, is_miro_input=True, 설명="천 마일 단위의 거리")
    f = Parameter(m, name="f", records=90, is_miro_input=True, 설명="1,000마일당 케이스당 화물(달러)")

    여기서 고려해야 할 한 가지 사항이 있습니다: 슬롯 커뮤니티를 표시하기로 결정했습니다.a색인 포함iMIRO 및 슬롯 커뮤니티b와 함께 색인j. 그러므로 그것은 우리는 MIRO 내에서 i와 j(즉, 요소 수정) i 및/또는 j). 그러나 우리는 포함하지 않았기 때문에 나는 MIRO에서 j를 사용하면 도메인 위반이 발생합니다. 세트 요소를 수정하는 것이었습니다! 이 문제를 해결하려면 문제, 우리는 사용할 것입니다암시적 집합 정의경유도메인_전달속성:

    i = Set(m, name="i", records=["시애틀", "샌디에고"], 설명="통조림 식물")
    j = Set(m, name="j", records=["new-york", "시카고", "topeka"], 설명="시장")
    a = 슬롯 커뮤니티(m, name="a", domain=[i], records=capacities, domain_forwarding=True, is_miro_input=True, 설명="경우에 따라 식물 i의 용량")
    b = 슬롯 커뮤니티(m, name="b", domain=[j], records=demands, domain_forwarding=True, is_miro_input=True, 설명="경우에 따라 시장 j 수요")

    이것은암시적 집합 정의세트를 유발함i그리고j정의됨 슬롯 커뮤니티를 통해 암시적으로a그리고b(또한 참조여기). 또는 첫 번째 열을 선언할 수도 있습니다. 테이블 a와 b는 다음과 같습니다.읽기 전용도메인 위반을 방지하기 위해.

    또한 우리는 MIRO가 변수를 표시하기를 원합니다 모델의. 이를 위해 우리는 단순히 인수is_miro_output=참해당 기호 생성자에:

    # 변수
    x = 변수(m, name="x", domain=[i, j], type="Positive", is_miro_output=True, 설명="케이스의 배송 수량")
    z = Variable(m, name="z", is_miro_output=True, 설명="총 운송 비용(천 달러)")

    그렇습니다. 입력 및 출력 데이터를 모두 정의했습니다. MIRO에서 사용할 수 있으며 모델이 준비되었습니다. MIRO에서 출시되었습니다.

    MIRO 실행

    슬롯 커뮤니티 Studio 내에서 MIRO를 실행하려면 간단히 클릭하세요실행 기본 모드.

    MIRO 버튼 실행
    팁:

    명령줄을 통해 MIRO를 실행하려면, 설명된 단계를 따르세요.여기.

    다음을 통해 이 모델에 대한 MIRO 앱을 실행하려면GAMSPy CLI, 다음 명령을 실행하면 됩니다.

    > gamspy run miro --mode="base" --model <모델_경로> [--path <path_to_your_MIRO_installation>]

    어디에서<path_to_your_model>경로입니다 에transport.py파일 및<path_to_your_MIRO_installation>은 MIRO 실행 파일의 경로입니다(예:C:\Program Files\슬롯 커뮤니티 MIRO\슬롯 커뮤니티 MIRO.exeWindows의 경우,/응용프로그램/슬롯 커뮤니티 MIRO.appmacOS 또는~/슬롯 커뮤니티-MIRO-2.9.0.AppImageLinux의 경우). 생략 가능합니다--경로MIRO가 다음인 경우 표준 위치 중 하나에 설치 Windows 또는 macOS.

    MIRO 설치도 설정할 수 있습니다. 경로를 환경 변수로 사용:MIRO_PATH, 그래야 할 필요가 없습니다. GAMSPy CLI를 사용할 때마다 입력하세요.

    축하합니다! 이제 첫 번째 MIRO 앱이 실행되었습니다. 달려요!

    초기 슬롯 커뮤니티 MIRO 화면

    기본 구성으로 데이터를 로드하고 수정할 수 있습니다 인터페이스 내에서 슬롯 커뮤니티 작업을 시작하거나 중지합니다. 또한 다음에도 액세스할 수 있습니다.로그그리고목록 (lst52900_53368

    팁:

    시작 후, 새로운 구성을 찾을 수 있습니다 모델이 있는 디렉터리의 파일입니다. 시작 프로세스에 대해 자세히 알아볼 수 있으며 관련 파일여기.

    슬롯 커뮤니티/MIRO 데이터 계약

    다음으로 표시된 모든 슬롯 커뮤니티 기호$onExternalInput / $offExternalInput또는$onExternalOutput / $offExternalOutput태그(GAMSPY에서:is_miro_input=참또는is_miro_output=True) 정의하다슬롯 커뮤니티/MIRO 데이터 계약. 이 계약 포함된 모든 기호의 메타데이터를 포함하며 MIRO가 실행될 때마다 자동으로 생성됨개발 모드. 에 저장됩니다.<모델 이름>_io.json파일은에 위치conf_<모델 이름>디렉토리.

    경고:

    <모델 이름>_io.json파일은 다음과 같습니다 절대 만지지 마세요!

    슬롯 커뮤니티 MIRO가 내부적으로 사용하는 데이터베이스 스키마 기호의 구조에 직접적으로 의존한다. 데이터 계약. MIRO 애플리케이션을 실행하면 처음에는 이에 따라 데이터베이스 테이블이 생성됩니다. 스키마. 데이터 계약의 구조를 변경하는 경우 현재 데이터베이스와 호환되지 않는 방식으로 레이아웃을 선택하면 MIRO가 다음과 같은 메시지를 표시합니다.데이터베이스 마이그레이션 마법사데이터를 마이그레이션합니다.

    슬롯 커뮤니티 기호

    이 섹션에서 우리는 다양한 슬롯 커뮤니티 기호가 어떻게 사용되는지 볼 것입니다 (세트, 매개변수, 변수 등)을 가져올 수 있으며 MIRO로/에서 내보냈습니다.

    참고: 슬롯 커뮤니티 기호는 표시될 필요가 없습니다. 미로. 더 명확하고 일반적으로 다음을 수행하는 것이 좋습니다. 표시되어야 하는 기호만 통합하고 최종 사용자가 수정할 수 있습니다.

    참고: 동일한 슬롯 커뮤니티를 사용할 수 없습니다. MIRO의 입력 및 출력 데이터로 사용되는 기호입니다. 그러나, 다음과 같은 옵션이 있습니다.출력 데이터를 입력 데이터로 사용.

    세트

    세트는 슬롯 커뮤니티 모델의 기본 요소입니다. 이에 장에서는 이들이 어떻게 통합될 수 있는지 살펴보겠습니다. 미로.
    MIRO에 세트를 통합하려면 선언하세요. 사이$onExternalInput / $offExternalInput태그:

    $onExternalInput
    내가 '통조림 공장'으로 설정
        j '시장';
    $offExternalInput

    세트는 슬롯 커뮤니티 모델의 기본 요소입니다. 이에 장에서는 이들이 어떻게 통합될 수 있는지 살펴보겠습니다. 미로.
    MIRO에 세트를 통합하려면 다음을 설정하세요.is_miro_input인수:

    i = Set(m, name="i", records=["seattle", "san-diego"], is_miro_input=True, Description="통조림 식물")
    j = Set(m, name="j", records=["new-york", "chicago", "topeka"], is_miro_input=True, Description="markets")

    세트가 이런 방식으로 선언되면 MIRO에 표시됩니다. 별도의 탭에 표로 표시됩니다. 세트 테이블은 하나로 구성되어 있습니다. 세트 요소에 대한 열과 각 세트 요소의 설명 텍스트(요소 텍스트)입니다.
    세트 이후i그리고j는 MIRO에 표시됩니다. 요소는 MIRO를 통해 정의됩니다.

    참고: 두 세트를 모두 로드하려면 주의하세요. 그리고 이 세트가 속한 도메인의 슬롯 커뮤니티! 당신 두 개의 개별 테이블이 생성됩니다. 하나는 세트용이고 다른 하나는 세트용입니다. 하나는 슬롯 커뮤니티용입니다. 이제 도메인을 변경하면 슬롯 커뮤니티는 있지만 세트가 아닌 경우에는 다음과 같이 끝납니다. 도메인 위반!

    암시적 세트 정의

    집합 채우기는 암시적으로 수행될 수 있습니다. 이는 다음을 의미합니다. 세트 요소를 명시적으로 가져오지 않는다는 점, 그러나 암시적으로 특정 슬롯 커뮤니티를 통해. 대신에 두 개의 테이블이 있으면 하나의 테이블이 됩니다. MIRO 사용자는 추악한 도메인에 직면하지 않을 것입니다 위반. 이는 다음을 사용하여 수행할 수 있습니다.암시적 집합 정의(또는:도메인 정의 기호 선언). 다음 예에서는 세트가 선언됩니다. 외부$onExternalInput / $offExternalInput태그. 그러나 이들은 암묵적으로 다음에 의해 정의됩니다. 슬롯 커뮤니티d(i<,j<), 이는 MIRO에서 오는 데이터로 정의됩니다.

    '통조림 식물'로 설정하세요
        j '시장';
    
    $onExternalInput
    슬롯 커뮤니티 d(i<,j<) '거리(천 마일)';
    $offExternalInput

    <신호에 서명하다 세트로 구성된 슬롯 커뮤니티i그리고j정의될 것입니다 슬롯 커뮤니티를 통해 암시적으로d.

    집합 채우기는 암시적으로 수행될 수 있습니다. 이는 다음을 의미합니다. 세트 요소를 명시적으로 가져오지 않는다는 점, 그러나 암시적으로 특정 슬롯 커뮤니티를 통해. 대신에 두 개의 테이블이 있으면 하나의 테이블이 됩니다. MIRO 사용자는 추악한 도메인에 직면하지 않을 것입니다 위반. 이는 다음을 사용하여 수행할 수 있습니다.암시적 집합 정의. 다음 예에서는 세트가 선언됩니다. 없이is_miro_input=참인수. 그러나 이들은 암묵적으로 다음과 같이 정의됩니다. 슬롯 커뮤니티d, 이는 다음을 통해 MIRO에서 오는 데이터로 정의됩니다.도메인_전달인수.

    i = Set(m, name="i", Description="통조림 식물")
    j = Set(m, name="j", 설명="시장")
    d = 슬롯 커뮤니티(m, name="d", domain=[i,j], domain_forwarding=True, is_miro_input=True, 설명="천 마일 단위의 거리")

    도메인_전달인수는 집합이 GAMSPy에 있음을 나타냅니다.i그리고j정의될 것입니다 슬롯 커뮤니티를 통해 암시적으로d.

    슬롯 커뮤니티

    기본적으로 슬롯 커뮤니티는 MIRO에 표 형식으로 표시됩니다. 형태. 기본 구성에서는 각색인69853_69994.

    예:
    이 예에서는 슬롯 커뮤니티가격MIRO에서 사용하기 위해 태그가 지정되었습니다.

    날짜 '날짜' 설정
        기호 'stockSymbol';
    
    $onExternalInput
    슬롯 커뮤니티 가격(날짜,symbol) 'Price';
    $offExternalInput
                            
    date = Set(m, 이름="날짜", 설명="날짜")
    기호 = 설정(m, 이름="기호", 설명="기호")
    
    가격 = 슬롯 커뮤니티(m, 이름="가격", 도메인=[날짜, 기호], domain_forwarding=True, is_miro_input=True, 설명="가격")

    슬롯 커뮤니티 MIRO를 시작하고 기본 시나리오를 로드할 때 자동으로 생성된 다음과 같은 내용이 표시됩니다. 입력 화면:

    수확품: MIRO에 표시된 입력 기호

    이 예에서는 슬롯 커뮤니티가격두 개의 색인이 있습니다:날짜그리고기호. 각 인덱스는 다음과 같습니다. 설명 텍스트의 이름을 딴 별도의 열 해당 세트(또는 설명 텍스트가 없는 경우 사용 가능, 기호 이름). a의 값 열 슬롯 커뮤니티는 항상 호출됩니다.별칭으로 지정됨 매개변수의 설명 텍스트입니다. 이 유형의 슬롯 커뮤니티 매개변수의 표현은 우리가 부르는 것입니다.슬롯 커뮤니티 보기또는목록 보기.

    테이블

    경고:

    다음의 통신에 관한 메모를 읽어보십시오.MIRO의 테이블사용하기 전에!

    일반

    슬롯 커뮤니티에서 표 형식 데이터를 선언하고 초기화할 수 있습니다. 를 사용하여테이블 명령문(GAMSPy에서:is_miro_table=참). 2인용 더 높은 차원의 슬롯 커뮤니티를 제공합니다. 보다 쉽고 간결한 데이터 입력 방법 목록 기반 접근 방식 - 적어도 작은 테이블에서는 - 각 라벨은 한 번만 나타납니다.

    슬롯 커뮤니티에서 테이블로 선언된 기호도 표시됩니다 MIRO에서는 그렇습니다. 마지막 인덱스의 각 세트 요소는 다음과 같습니다. 별도의 열에 표시됩니다. 우리는 이것을테이블 보기슬롯 커뮤니티입니다.

    참고:

    MIRO에서는 마지막 인덱스의 요소만 슬롯 커뮤니티는 테이블의 열로 사용됩니다. 진술.

    출력 슬롯 커뮤니티를 사용하겠습니다일정운송모델 예:

    설정
       i '통조림 식물' / 시애틀, 샌디에고 /
       j 'markets' / 뉴욕, 시카고, 토피카 /
       ScheduleHdr '일정 헤더' / lngP, latP, lngM, latM, 한도, 수요, 수량 /;
    
    $onExternalOutput
    슬롯 커뮤니티 Schedule(i,j,scheduleHdr) '케이스별 배송 수량';
    $offExternalOutput
    i = Set(m, name="i", 설명="통조림 식물")
    j = Set(m, name="j", 설명="시장")
    ScheduleHdr = Set(m, name="scheduleHdr", records=["lngP", "latP", "lngM", "latM", "cap", "demand", "Quantities"], Description="일정 헤더")
    
    Schedule = Parameter(m, name="schedule", domain=[i,j,scheduleHdr], is_miro_output=True, Description="케이스의 배송 수량")

    슬롯 커뮤니티일정운송에 관한 보고 볼륨과 지리 데이터에 대한 정보도 제공합니다. 공장과 시장의 위치. 로 선언됨 일반 슬롯 커뮤니티의 경우 기호는 MIRO에서 다음과 같습니다.

    수요 및 생산 시간 열이 없는 테이블

    대신 테이블 문을 사용할 때, 마지막 인덱스 세트일정 헤더되다 별도의 열:

    설정
       i '통조림 식물' / 시애틀, 샌디에고 /
       j 'markets' / 뉴욕, 시카고, 토피카 /
       ScheduleHdr '일정 헤더' / lngP, latP, lngM, latM, 한도, 수요, 수량 /;
    
    $onExternalOutput
    Table Schedule(i,j,scheduleHdr) '케이스별 배송 수량';
    $offExternalOutput
    수요 및 생산 시간 열이 있는 테이블
    팁:

    기호 선언을 변경하는 대신 나중에 직접 할 수도 있습니다:

    $onExternalInput
    슬롯 커뮤니티 기호(a,b,c) '일부 텍스트';
    테이블 기호;
    $offExternalInput
    i = Set(m, name="i", 설명="통조림 식물")
    j = Set(m, name="j", 설명="시장")
    ScheduleHdr = Set(m, name="scheduleHdr", records=["lngP", "latP", "lngM", "latM", "cap", "demand", "Quantities"], Description="일정 헤더")
    
    Schedule = Parameter(m, name="schedule", domain=[i,j,scheduleHdr], is_miro_output=True, is_miro_table=True, Description="케이스별 배송 수량")
    수요 및 생산 시간 열이 있는 테이블
    MIRO의 테이블

    테이블 문의 사용은 다음에 영향을 미칩니다.데이터 계약슬롯 커뮤니티와 MIRO 사이. 마지막 차원 대신 기호의 요소는 이제 다음과 같이 전달됩니다. 열. 슬롯 커뮤니티 MIRO가 사용하는 데이터베이스 스키마 내부적으로는 데이터 계약에 직접적으로 의존합니다. 슬롯 커뮤니티와 MIRO 사이, 즉 귀하의 구조 내보낸 매개변수, 방정식, 변수 및 수량. 처음으로 시나리오를 저장하면 시간이 지나면 이에 따라 데이터베이스 테이블이 생성됩니다. 스키마. 데이터 구조를 변경하는 경우 현재와 양립할 수 없는 방식으로 계약을 체결하다 데이터베이스 레이아웃을 선택하면 MIRO는 다음과 같은 메시지를 표시합니다.데이터베이스 마이그레이션 마법사데이터를 마이그레이션합니다.

    팁:

    슬롯 커뮤니티 테이블 방법을 사용하는 것과는 달리피벗 옵션MIRO 구성 모드에 설정되어 있으며 영향을 미치지 않습니다. 데이터 계약의 구조. 수 따라서 열은 가변적입니다. 그냥 하고 싶다면 세트의 모든 요소를 나란히 표시 별도의 열에서는 대신 이 옵션을 사용해야 합니다.

    MIRO 내부 피벗 옵션이 있는 경우 왜 슬롯 커뮤니티의 테이블 문이 전혀 없나요?
    여기서 가장 중요한 측면은시각화:

    이미 언급했듯이 테이블 문을 사용하면 영향을 받습니다. 슬롯 커뮤니티와 MIRO 간의 데이터 계약으로 인해 MIRO는 기호의 열에 대해서만 알고 있습니다. MIRO가 접근할 수 있는 정보. 예를 들어 기호를 보세요일정운송다시 모델을 지정하세요:

    설정
       i '통조림 식물' / 시애틀, 샌디에고 /
       j 'markets' / 뉴욕, 시카고, 토피카 /
       ScheduleHdr '일정 헤더' / lngP, latP, lngM, latM, 한도, 수요, 수량 /;
    
    $onExternalOutput
    슬롯 커뮤니티 Schedule(i,j,scheduleHdr) '케이스별 배송 수량';
    $offExternalOutput
    i = Set(m, name="i", Description="통조림 식물")
    j = Set(m, name="j", 설명="시장")
    ScheduleHdr = Set(m, name="scheduleHdr", records=["lngP", "latP", "lngM", "latM", "cap", "demand", "Quantities"], Description="일정 헤더")
    
    Schedule = Parameter(m, name="schedule", domain=[i,j,scheduleHdr], is_miro_output=True, Description="케이스의 배송 수량")

    우리는 이 기호를 사용하여 다음을 표시하고 싶습니다.지도미로에서. 켜기 이 지도에서는 지리 데이터를 기반으로 마커가 설정됩니다. 기호에서 사용 가능합니다. 기호로 사용되는 경우 일반 슬롯 커뮤니티, 열i, j그리고scheduleHdr전달됩니다 MIRO와 함께. 이제 지리정보만 마지막 차원의 요소로 사용할 수 있습니다. 에서구성 모드이제 하나의 값 열만 표시됩니다.scheduleHdr선택용:

    테이블 문이 없는 맵 구성

    그러나 지도 도구는 각각에 대해 하나의 열이 필요합니다. 위도, 경도 정보를 바탕으로 마커를 설정합니다. 따라서 이 방법으로는 지도를 구성할 수 없습니다.
    이제 해당 기호에 대한 테이블 명령문을 사용하겠습니다 대신:

    설정
     i '통조림 식물' / 시애틀, 샌디에고 /
     j 'markets' / 뉴욕, 시카고, 토피카 /
     ScheduleHdr '일정 헤더' / lngP, latP, lngM, latM, 한도, 수요, 수량 /;
    
    $onExternalOutput
    Table Schedule(i,j,scheduleHdr) '케이스별 배송 수량';
    $offExternalOutput
    i = Set(m, name="i", Description="통조림 식물")
    j = Set(m, name="j", 설명="시장")
    ScheduleHdr = Set(m, name="scheduleHdr", records=["lngP", "latP", "lngM", "latM", "cap", "demand", "Quantities"], Description="일정 헤더")
    
    Schedule = Parameter(m, name="schedule", domain=[i,j,scheduleHdr], is_miro_output=True, is_miro_table=True, Description="케이스별 배송 수량")

    이전에 마지막 차원에 포함된 요소 이제 MIRO와 열로 통신됩니다. 이를 통해 이제 마커를 지정해 보겠습니다.

    테이블 문으로 구성 매핑
    팁:

    지리 정보가 포함된 테이블 대신 헤더에서 슬롯 커뮤니티를 사용할 수도 있고 심지어 위도와 경도를 모두 포함하는 집합 별도의 도메인에 있는 정보:

    $onExternalOutput
    슬롯 커뮤니티 일정(i,j,latP, lngP, latM, lngM) '케이스별 배송 수량';
    $offExternalOutput
    
    Schedule('시애틀', '뉴욕', '47.608013', '-122.335167', '40.730610', '-73.935242') = 50;
    Schedule('시애틀', '시카고', '47.608013', '-122.335167', '41.881832', '-87.623177') = 300;
    Schedule('샌디에고','뉴욕', '32.715736', '-117.161087', '40.730610', '-73.935242') = 275;
    Schedule('샌디에이고','토피카', '32.715736', '-117.161087', '39.056198', '-95.695312') = 275;
    schedule = Parameter(m, name="schedule", domain=[i,j,latP,lngP,latM,lngM], is_miro_output=True, Description="케이스의 배송 수량")
    
    일정['시애틀', '뉴욕', '47.608013', '-122.335167', '40.730610', '-73.935242'] = 50
    일정['시애틀', '시카고', '47.608013', '-122.335167', '41.881832', '-87.623177'] = 300
    일정['샌디에고','뉴욕', '32.715736', '-117.161087', '40.730610', '-73.935242'] = 275
    일정['샌디에이고','토피카', '32.715736', '-117.161087', '39.056198', '-95.695312'] = 275

    그러면 지리 정보는 더 이상 존재하지 않습니다. 숫자 형식으로 사용할 수 있지만 지도 도구 데이터를 올바르게 해석합니다.

    지도와 간트 차트는 다음과 같은 도구의 예입니다. 다음과 같은 정보에는 별도의 열이 필요합니다. 지리 데이터, 시작/종료 시간 등. 다른 도구를 사용하면 피벗이 가능합니다. 내부적으로 슬롯 커뮤니티의 예:

    Pickstock 모델에는 슬롯 커뮤니티가 있습니다.가격, 여기에는 해당 종목의 모든 주식 기호가 포함됩니다. 일정 기간 동안의 일일 가격을 포함한 다우존스 지수 1년:

    날짜 '날짜' 설정
        기호 '주식 기호';
    $onExternalInput
    슬롯 커뮤니티 가격(날짜,symbol) 'Price';
    $offExternalInput
                        
    date = Set(m, 이름="날짜", 설명="날짜")
    기호 = 설정(m, 이름="기호", 설명="주식 기호")
    
    가격 = 슬롯 커뮤니티(m, 이름="가격", 도메인=[날짜, 기호], domain_forwarding=True, is_miro_input=True, 설명="가격")
    슬롯 커뮤니티 가격

    우리는 가격이 표시되는 선형 차트를 구성하고 싶습니다. 각 주식 기호의 추세는 별도로 표시됩니다. 지금 MIRO는 각 기호의 가격 정보가 필요합니다. 날짜마다. 문제는 지도와 마찬가지로 이전 예의 구성 - MIRO만 알고 있습니다. 하나의 값 열에 대해:가격. 따라서 우리는 할 수 없습니다 개별 주식의 가격을 구별합니다. 에서 결과 꺾은선형 차트에는 단일 선이 그려집니다. 모든 주식 기호의 모든 가격을 포함합니다:

    테이블 문이 없는 선 차트 구성

    그러나 중요한 차이점이 있다는 점에 유의하세요. 이전 예제와 이번 예제 사이. 에서 이전 예에서 테이블의 구조는 다음과 같습니다. 데이터와 무관: 새 배송이 추가되면 테이블에 다른 행을 추가하기만 하면 됩니다. 번호와 열 이름은 정적입니다! 이제 구조는 테이블은 데이터에 따라 다릅니다. 만약 수입을 하게 된다면 다른 주식 지수의 데이터 - 예를 들어 프랑스 CAC40 - 테이블에는 완전히 다른 40개의 열이 있습니다. 이름. 따라서 피버팅(pivoting)은 목록 보기에서 테이블 보기로 - 테이블 보기가 되어야 합니다. 내부적으로 수행됨: 섹션에서필터 및 도메인우리는 도메인을 선택할 수 있습니다 피벗하고 싶습니다. 도메인을 선택하는 경우주식 기호여기서 도구는 다음에 대한 선을 그립니다. 각 개별 주식 기호:

    테이블 문이 없는 선 차트 구성

    차트 유형에 대해 내부 피보팅을 사용할 수 있습니다.막대 차트, 분산형 차트, 선 차트, 버블 차트, 히스토그램그리고시계열 다이어그램. 더 읽어보세요여기.

    요약하자면: 테이블의 구조가 고정된 경우 (즉, 데이터에 의존하지 않음) 다음을 수행할 수 있습니다. 슬롯 커뮤니티 기호를 테이블로 선언합니다. 이는 특히 데이터를 시각화하려는 경우 중요합니다. 지도나 간트차트 형태. 당신의 구조라면 테이블은 고정되어 있지 않지만 데이터에 따라 달라집니다. 테이블이 아닌 매개변수로 선언하세요.

    제한사항

    슬롯 커뮤니티 테이블을 사용할 때 몇 가지 제한사항이 있습니다. 성명. 요소가 채워지지 않은 세트만 MIRO의 헤더로 사용할 수 있습니다. 즉, 명시적 또는 암시적정의세트의 작업을 완료해야 합니다 MIRO와 독립적(예: 외부 Excel에서 가져옴) 파일, 회사 데이터베이스 또는 귀하의 내부에 바로 정의되어 있습니다. 슬롯 커뮤니티 모델). 요소 수를 다음과 같이 설정합니다. 또한 해당 요소의 값은 고정되어 있습니다. 헤더로 사용됩니다. 다른 모든 것은 위반이 될 것입니다 위의 규칙: 구조가 다음과 같은 경우에만 테이블을 선언하세요. 이 테이블의 번호(즉, 테이블의 번호와 이름) 열)은 데이터에 의존하지 않습니다. 만약 이 규칙이 충족되지 않으면 슬롯 커뮤니티는 자동으로 "테이블을 삭제합니다. 요청"을 선택하고 대신 기호를 매개변수로 선언하세요. GAMSPy에서는 이 규칙이 적용되지 않으면 예외가 발생합니다. 성취되었습니다.

    다음 예에서 다음과 같이 선언된 기호는 슬롯 커뮤니티의 표는 여전히 일반 목록 보기:

    • 영향을 받은 슬롯 커뮤니티 인덱스의 집합 다음 사이에 선언됩니다.$on-/offExternalInput태그.
      예:
      $onExternalInput
      날짜를 '날짜'로 설정하세요.
          기호 'stockSymbol';
      
      테이블 가격(날짜,기호) '가격';
      $offExternalInput

      여기, 세트날짜그리고기호선언되었습니다 MIRO 입력 요소가 됩니다. 이는 다음을 의미합니다. MIRO에서 채워집니다. 동시에 세트 시간을 정하세요기호제공해야 함 슬롯 커뮤니티의 헤더로가격. 다이나믹으로서 세트 요소의 수는 동적 열 수, 이 별자리 테이블 보기에서는 허용되지 않습니다.

    • 영향을 받은 슬롯 커뮤니티 인덱스의 집합 이다암시적으로 정의됨.
      예:
      날짜 '날짜' 설정
          기호 'stockSymbol';
      
      $onExternalInput
      테이블 가격(날짜<,기호<) '가격';
      $offExternalInput

      여기서 집합은 외부에 선언됩니다.$on-/offExternalInput태그이지만 정의, 즉 인구 요소를 사용하면 암시적으로 다음을 통해 발생합니다. 데이터 진술가격(날짜<,기호<).<표시세트가 있다는 신호날짜그리고가격될 것이다 슬롯 커뮤니티를 통해 암시적으로 정의됨가격(또한 참조여기). 세트기호해야 합니다 슬롯 커뮤니티 헤더가격하지만 동시에 세트기호이다 슬롯 커뮤니티로 MIRO에 암시적으로 정의됨가격. 피하려면 충돌, 슬롯 커뮤니티가격표시됨 목록보기에서.

    • 다차원 슬롯 커뮤니티만 가능합니다. 피벗. 다음 예에서는 슬롯 커뮤니티oneDim아마도 테이블이 있는 경우에도 목록 보기에 표시됩니다. 문이 사용되었습니다:
      $onExternalInput
      테이블 oneDim(dom1) '1차원';
      $onExternalOutput
    • 슬롯 커뮤니티의 도메인이 다음으로 선언되었기 때문에 테이블 문은 정적입니다.유니버설 세트마지막 색인 위치로 사용할 수 없습니다:
      $onExternalInput
      Table someParameter(dom1, dom2, *) '*를 마지막 인덱스로';
      $onExternalOutput

    다음 예에서 기호는 다음과 같이 선언되었습니다. GAMSPy의 테이블에서 예외가 발생합니다.

    • 영향을 받은 슬롯 커뮤니티 인덱스의 집합 MIRO 앱의 일부입니다.
      예:
      날짜 = 설정(m, 이름="날짜", is_miro_input=True, 설명="날짜")
      기호 = 설정(m, name="symbol", is_miro_input=True, 설명="주식 기호")
      
      가격 = 슬롯 커뮤니티(m, 이름="가격", 도메인=[날짜, 기호], is_miro_input=True, is_miro_table=True, 설명="가격")

      여기, 세트날짜그리고기호선언됨 MIRO 입력 요소가 됩니다. 이는 다음을 의미합니다. MIRO에서 채워집니다. 동시에 세트 시간을 정하세요기호제공해야 함 슬롯 커뮤니티의 헤더로가격. 다이나믹으로서 세트 요소의 수는 동적 열 수, 이 별자리 테이블 보기 및 GAMSPy에서는 허용되지 않습니다. 예외가 발생합니다.

    • 영향을 받은 슬롯 커뮤니티 인덱스의 집합 이다암시적으로 정의됨.
      예:
      date = Set(m, 이름="날짜", 설명="날짜")
      기호 = 설정(m, 이름="기호", 설명="주식 기호")
      
      가격 = 슬롯 커뮤니티(m, 이름="가격", 도메인=[날짜, 기호], domain_forwarding=True, is_miro_input=True, is_miro_table=True, 설명="가격")

      여기서 세트는 MIRO에 포함되지 않습니다 앱이지만 정의, 즉 인구 요소를 사용하면를 통해 암시적으로 발생합니다.도메인_전달속성. 이 속성은 GAMSPy에 다음과 같은 신호를 보냅니다. 세트날짜그리고기호될 것이다 슬롯 커뮤니티를 통해 암시적으로 정의됨가격(또한 참조여기). 세트기호이어야 합니다 슬롯 커뮤니티 헤더가격하지만 동시에 세트기호입니다 슬롯 커뮤니티로 MIRO에 암시적으로 정의됨가격. 피하려면 충돌이 발생하면 GAMSPy에서 예외가 발생합니다.

    • 다차원 슬롯 커뮤니티만 가능합니다. 피벗. 다음 예에서는 슬롯 커뮤니티oneDim슬롯 커뮤니티 테이블로 정의할 수 없습니다.
      oneDim = Parameter(m, name="oneDim", domain=[dom1], is_miro_input=True, is_miro_table=True, 설명="1차원")
    • 슬롯 커뮤니티의 도메인이 다음으로 선언되었기 때문에 테이블 문은 정적입니다.유니버설 세트마지막 색인 위치로 사용할 수 없습니다:
      someParameter = Parameter(m, name="someParameter", domain=[dom1,dom2,*], is_miro_input=True, is_miro_table=True, 설명="* 마지막 색인으로")

    스칼라

    처리스칼라및 0차원 또는 1차원싱글톤 세트(≤ 1 도메인 및 차원)은 이전에 논의된 슬롯 커뮤니티 기호.

    참고:

    스칼라 및 0차원 또는 1차원 싱글톤 세트 인터페이스의 공동 테이블에 수집됩니다. 기본적으로.
    각 위젯을 표시하려는 경우 별도의 시트에는그렇게 하는 옵션.

    그들은 인터페이스의 공동 테이블에 병합됩니다 기본적으로. 이는 다음에 정의된 모든 스칼라를 의미합니다. 슬롯 커뮤니티 모델 내에서$on/offExternalInput그리고 -출력다음에 표시됩니다. 하나의 단일 테이블에 있는 MIRO스칼라. 역시 마찬가지다 출력 스칼라의 경우 true입니다. 이것들은 다음에 요약되어 있습니다. 라는 테이블의 결과 섹션scalars_out. 이렇게 하면 저장됩니다. 화면 공간을 확보하고 새로운 기능을 추가합니다. 스칼라는 새 행을 추가하기만 하면 되므로 쉽습니다. 에스칼라테이블. 따라서 컴팩트함과 유연성이 향상됩니다. 데이터베이스 스키마는 추가하거나 추가하는 경우에도 고정된 상태로 유지됩니다. 특정 스칼라를 제거합니다.

    예:

    $onExternalInput
    스칼라 f '1,000마일당 케이스당 운임(달러)' / 90 /
           minS '최소 배송(MIP 및 MINLP만 해당)' / 100 /
           beta '베타(MINLP 전용)' / 0.95 /;
    싱글톤 세트 싱글 '싱글톤 세트' / 요소 /;
    $offExternalInput

    여기서 스칼라 입력 데이터를 선언했습니다.f, 그리고베타그리고 싱글턴 세트싱글입력 사이 태그. MIRO에서는 모두 동일하게 표시됩니다. 테이블:

    테이블의 스칼라 및 싱글톤 세트 시각화

    입력 스칼라를 행으로 표현하는 대신 다음 중 하나를 사용하여 표시할 수 있는 테이블입니다.입력 위젯MIRO가 지원합니다. 스칼라 값 슬라이더로 표현하기에 매우 적합합니다. 드롭다운 메뉴, 체크박스, 숫자 입력 또는 날짜 선택기. 이에 대한 자세한 내용은 다음에서 확인할 수 있습니다. 섹션에 대해위젯.

    팁:

    에서일괄 로드 모듈당신은 시나리오의 스칼라 데이터를 검색할 수 있습니다. 시나리오를 쉽게 찾을 수 있습니다.

    처리스칼라및 0차원 또는 1차원싱글톤 세트(≤ 1 도메인 및 차원)은 이전에 논의한 기호입니다.

    참고:

    스칼라 및 0차원 또는 1차원 싱글톤 세트 인터페이스의 공동 테이블에 수집됩니다. 기본적으로.
    각 위젯을 표시하려는 경우 별도의 시트에는그렇게 하는 옵션.

    그들은 인터페이스의 공동 테이블에 병합됩니다 기본적으로. 이는 다음의 모든 스칼라를 의미합니다. MIRO에서 볼 수 있는 GAMSPy 모델은 다음과 같습니다. 앱은이라는 하나의 단일 테이블에 있습니다.스칼라. 역시 마찬가지다 출력 스칼라의 경우 true입니다. 이것들은 다음에 요약되어 있습니다. 라는 테이블의 결과 섹션scalars_out. 이렇게 하면 저장됩니다. 화면 공간을 확보하고 새로운 기능을 추가합니다. 스칼라는 새 행을 추가하기만 하면 되므로 쉽습니다. 에스칼라테이블. 따라서 컴팩트함과 유연성이 향상됩니다. 데이터베이스 스키마는 추가하거나 추가하는 경우에도 고정된 상태로 유지됩니다. 특정 스칼라를 제거합니다.

    예:

    f = 슬롯 커뮤니티(m, name="f", is_miro_input=True, records=90)
    minS = 슬롯 커뮤니티(m, name="minS", is_miro_input=True, records=100)
    베타 = 슬롯 커뮤니티(m, name="beta", is_miro_input=True, records=0.95)
    
    Single = Set(m, name="single", is_miro_input=True, is_singleton = True, records = ["element"])

    여기서 스칼라 입력 데이터를 선언했습니다.f, 그리고베타그리고 싱글턴 세트싱글에 MIRO에서 사용됩니다. 모두 동일하게 표시됩니다. 테이블:

    테이블의 스칼라 및 싱글톤 세트 시각화

    입력 스칼라를 행으로 표현하는 대신 다음 중 하나를 사용하여 표시할 수 있는 테이블입니다.입력 위젯MIRO가 지원합니다. 스칼라 값 슬라이더로 표현하기에 매우 적합합니다. 드롭다운 메뉴, 체크박스, 숫자 입력 또는 날짜 선택기. 이에 대한 자세한 내용은 다음에서 확인할 수 있습니다. 섹션에 대해위젯.

    팁:

    그 안에서일괄 로드 모듈당신은 시나리오의 스칼라 데이터를 검색할 수 있습니다. 시나리오를 쉽게 찾을 수 있습니다.

    싱글톤 세트

    a싱글톤 세트141326_141656여기, 1차원 싱글톤 세트가 표시됩니다. 공동 테이블의 스칼라와 함께. 다른 한편으로는 다차원 싱글톤 세트 손은 각각 별도의 테이블에 표시됩니다.

    예:

    $onExternalInput
    싱글톤 세트
       multidim(i,j) '다차원 싱글톤 세트' / seattle.topeka '이것은 설명 텍스트입니다'/
       multidim2(i,j) '또 다른 다차원 싱글톤 세트' / seattle.chicago /;
    $offExternalInput
    테이블의 다차원 싱글톤 세트 시각화

    싱글톤 세트와 스칼라 값에는 어떤 것이 있습니까? common은 기호 이름과 설명 텍스트입니다. 그러나 그 가치는 다릅니다. 스칼라와는 달리(a 숫자 값), 싱글톤 세트는 레이블을 가질 수 있으며 요소 텍스트. 두 가지를 모두 표시할 수 있도록 MIRO의 스칼라 테이블, 레이블 및 요소 텍스트는 값 열에 표시되며 로 구분됩니다. 이중 파이프('||').

    $onExternalInput
    싱글톤 세트 i '설명 설정' / '레이블' 요소텍스트 /;
    스칼라 a '스칼라 설명' / 5 /;
    $offExternalInput
    MIRO에 설정된 싱글톤
    팁:

    요소 라벨과 요소 텍스트 모두 싱글톤 세트는 컴파일 시간에 마이그레이션될 수 있습니다. 달러 제어 옵션을 사용하는 변수eval.Set, evalGlobal.SetevalLocal.Set. 자세한 내용은 참조여기.

    a싱글톤 세트GAMSPy의 특수 세트는 최대 하나의 요소(0개의 요소도 허용됨) 좋아요 다른 세트, 싱글톤 세트는 다음과 같은 도메인을 가질 수 있습니다. 여러 차원. 이미 설명했듯이여기, 1차원 싱글톤 세트가 표시됩니다. 공동 테이블의 스칼라와 함께. 다른 한편으로는 다차원 싱글톤 세트 손은 각각 별도의 테이블에 표시됩니다.

    예:

    s = pd.시리즈(
        index=pd.MultiIndex.from_tuples([("seattle", "topeka", "이것은 설명 텍스트입니다.")])
    )
    t = pd.시리즈(
        index=pd.MultiIndex.from_tuples([("시애틀", "시카고")])
    )
    
    multidim = Set(m, name="multidim", domain = [i,j], is_miro_input=True, records = s)
    multidim2 = Set(m, name="multidim", domain = [i,j], is_miro_input=True, records = t)
    테이블의 다차원 싱글톤 세트 시각화

    싱글톤 세트와 스칼라 값에는 어떤 것이 있습니까? common은 기호 이름과 설명 텍스트입니다. 그러나 그 가치는 다릅니다. 스칼라와는 달리(a 숫자 값), 싱글톤 세트는 레이블을 가질 수 있으며 요소 텍스트. 두 가지를 모두 표시할 수 있도록 MIRO의 스칼라 테이블, 레이블 및 요소 텍스트는 값 열에 표시되며 로 구분됩니다. 이중 파이프('||').

    i = Set(m, name="i", is_singleton=True, is_miro_input=True, records = [("label", "elementtext")], Description="설명 설정")
    a = 슬롯 커뮤니티(m, name="a", is_miro_input=True, records = 5, 설명="스칼라 설명")
    MIRO에 설정된 싱글톤

    변수

    변수모델 이후까지 값을 알 수 없는 엔터티입니다. 해결되었습니다. 이러한 이유로 변수는 다음과 같습니다. 결과를 표시하기 위해 MIRO에 통합되었습니다. 그러므로 만일 우리가 MIRO에 변수를 표시하려면 변수를 선언해야 합니다. 사이$onExternalOutput / $offExternalOutput태그(GAMSPY에서:is_miro_output=참) .

    변수의 또 다른 속성: 슬롯 커뮤니티 매개변수는 각 고유 라벨과 연결된 단일 값 조합, 변수에는 여러 개의 (레벨, 한계, 하한값, 상한그리고규모). 변수에 태그를 지정할 때 MIRO에 표시되려면 해당 속성이 모두 다음과 같습니다. 표시됩니다. 하위 집합에만 관심이 있는 경우 이러한 속성을 슬롯 커뮤니티에 할당해야 합니다. MIRO에 표시되도록 이 슬롯 커뮤니티에 태그를 지정합니다.

    다음 예에서는 변수를 표시합니다.x(i,j)MIRO에서.

    $onExternalOutput
    변수 x(i,j) '케이스의 배송 수량';
    $offExternalOutput
    x = Variable(m, 이름 = "x", 도메인 = [i,j], is_miro_output=True, 설명 = "케이스의 배송 수량")

    결과 테이블은 다음과 같습니다:

    테이블의 변수 시각화

    수식

    방정식은 변수와 동일하게 취급됩니다. 즉, 고정된 개수의 4개 값 열이 있습니다. 즉,레벨, 한계, 하한값, 상한그리고규모.
    예:

    $onExternalOutput
    방정식 수요(j) '시장 j의 수요를 충족';
    $offExternalOutput
    수요 = Equation(m, 이름 = "수요", 도메인 = [j], is_miro_output=True, 설명 = "시장 j의 수요 충족")

    다음 테이블로 연결됩니다:

    테이블의 방정식 시각화

    스칼라 변수 및 방정식

    스칼라와 마찬가지로 0차원 변수와 방정식은 공간을 절약하기 위해 특별히 처리됩니다. 0차원 변수 및 방정식의 예는 다음과 같습니다. 목적 함수 값과 목적 함수. 두 타입 모두 치수가 동일하므로, 0차원 변수와 방정식이 표시됩니다. 하나의 테이블에 함께 (비슷함스칼라 및 0/1차원 싱글톤 세트).

    $onExternalInput
    변수 z '총 운송 비용(단위: 수천 달러)';
    방정식 비용 '목적 함수 정의';
    $offExternalInput
    z = Variable(m, name = "z", is_miro_output=True, 설명 = "총 운송 비용(천 달러 단위)")
    cost = Equation(m, name = "cost", is_miro_output=True, 설명 = "목적함수 정의")
    테이블의 방정식 시각화

    명령줄 슬롯 커뮤니티

    매개변수 및 스칼라와 같은 슬롯 커뮤니티 기호 외에도 MIRO를 사용하면 명령줄 매개변수를 설정할 수 있습니다(슬롯 커뮤니티 옵션그리고이중 대시 슬롯 커뮤니티). 두 가지 접근 방식이 있습니다. 이러한 이중 대시 매개변수 및 슬롯 커뮤니티 구성 옵션.

    참고:

    슬롯 커뮤니티 옵션 및 이중 대시 매개변수는 GAMSPy에서 사용할 수 있습니다.

    • 명령줄:
      집합, 매개변수, 스칼라 등이 선언되는 동안 슬롯 커뮤니티 코드에 직접 태그가 지정될 수 있습니다. 와 함께$onExternalInput / $offExternalInput(즉, 슬롯 커뮤니티/MIRO 데이터 계약의 일부가 됨), 명령 줄 매개변수에는 그러한 공식적인 선언이 부족합니다. 될 MIRO에서 설정할 수 있으면 다음에서 지정할 수 있습니다.구성 모드(또는<모델 이름>.json파일). 슬롯 커뮤니티 옵션이나 이중 대시 매개변수가 MIRO를 통해 설정하면 슬롯 커뮤니티 모델이 자동으로 이러한 명령줄 매개변수를 사용하여 호출됩니다.

      참고:
      슬롯 커뮤니티 옵션에 대한 정보 시나리오와 관련된 이중 대시 매개변수 시나리오를 다음 형식으로 내보낼 때 손실됩니다. GDX, xlsx 또는 CSV 파일. 내보낼 때미로센 파일그러나 정보는 손실되지 않습니다.

    • 싱글톤 세트:
      요소 라벨과 세트의 요소 텍스트 모두 다음을 사용하여 컴파일 시간 변수로 마이그레이션할 수 있습니다. 달러 통제 옵션eval.Set, evalGlobal.SetevalLocal.Set. 싱글톤 세트는 처리되고, 전달되고, 다른 슬롯 커뮤니티 기호처럼 저장되므로 이 접근 방식은 위의 방법과 비교하여 장점은 다음과 같습니다. 명령줄 매개변수에 대한 정보는 GDX, xlsx 또는 CSV 내보내기 중에 손실되었습니다.
      $onExternalInput
      싱글톤 세트 i '설명 설정' / '레이블' 요소텍스트 /;
      $offExternalInput
      
      $eval.set fn i.te
      
      $log 여기에 보이는 것은 %fn%입니다.
      MIRO에 설정된 싱글톤
      팁:

      싱글톤 세트를 사용하여 컴파일을 정의하는 경우 슬롯 커뮤니티 모델의 시간 변수는 다음과 같습니다. 도움이 됨다음의 요소 텍스트만 전달합니다. 싱글턴 세트!

    맞춤 구성

    기본 인터페이스 - 데이터 계약 -이 슬롯 커뮤니티 모델과 MIRO가 구성되면 시작할 수 있습니다. MIRO를 사용자 정의하여 잠재력을 최대한 활용합니다. 가지고 를 봐다음 장그리고 방법을 알아보세요 MIRO를 맞춤설정합니다.

    슬롯 커뮤니티 MIRO - 시각화

    개발 모드

    슬롯 커뮤니티 MIRO를 사용할 때 다음을 이해하는 것이 중요합니다. 개발과 배포의 차이점 신청. 개발 단계에서는 인터페이스가 슬롯 커뮤니티 모델과 MIRO 애플리케이션 간을 정의하고, 그래픽 및 위젯이 구성되고 일반 옵션이 지정됩니다. 일반적으로 슬롯 커뮤니티를 통해 MIRO 앱을 시작합니다. 해당 시간 동안 Studio 또는 명령줄.배포 모드, 에 반면에 두 구성이 모두 수행되는 단계를 설명합니다. 슬롯 커뮤니티와 MIRO 간의 데이터 계약은 고정된 상태로 유지됩니다. 최종 사용자가 모델 작업을 시작합니다.

    파일 및 디렉토리

    다음 단계는 다음 단계에서 실행됩니다. 개발 모드에서 애플리케이션 시작:

    1. 슬롯 커뮤니티 모델이 파싱되었습니다. 선언된 모든 기호 사이$onExternalInput / $offExternalInput그리고$onExternalOutput / $offExternalOutput태그(GAMSPY에서:is_miro_input=참또는is_miro_output=True)은 슬롯 커뮤니티/MIRO 데이터 계약에 포함되어 있으며 이제부터 인터페이스에 표시됩니다. 아직 아니라면 기존, 폴더conf_<모델 이름>입니다 데이터가 있는 모델 디렉터리에 생성됨 계약서는 파일에 저장됩니다.<모델명>_io.json.
    2. 태그된 기호의 데이터는 다음에서 추출됩니다. 모델을 만들고 디렉터리에 저장됩니다.data_<모델 이름>으로 GDX 파일default.gdx. 에서 이 GDX 파일은라는 이름의 특수 시나리오입니다.기본값자동으로 MIRO에 저장됩니다. MIRO가 시작될 때 데이터베이스를 생성합니다.
      팁:

      당신은 다음을 사용할 수 있습니다.data_<모델 이름>폴더를 자동으로 여러 개 가져오기 MIRO가 실행될 때 시나리오를 데이터베이스에 추가 출시되었습니다. 이 폴더 안의 파일은 다음 번에 MIRO 데이터베이스에 저장됩니다. MIRO 앱이 출시되었습니다! 파일 이름 시나리오의 이름을 결정합니다. 이쪽으로 여러 시나리오를 쉽게 가져올 수 있습니다. 한 번. 자세한 내용은 다음을 참조하세요.여기.

    3. 사용 가능한 경우 구성 파일<모델 이름>.json에서conf_<모델 이름>폴더는 파싱되었습니다. 여기에는 앱 구성이 포함되어 있습니다. 사용자가 만든 것(그래픽, 위젯, 일반 설정 등). 파일이 아직 존재하지 않으면 빈 상태로 생성됩니다.
    4. MIRO에서는 여러 초기화 단계가 수행됩니다. 여기에는 내부 데이터 구조 설정이 포함됩니다.