우리는 다양한 외부 소스에서 데이터를 수집하고 변환하여 슬롯 머신 모델에서 사용할 수 있는 새로운 방법을 도입하게 되어 매우 기쁩니다. "슬롯 머신 Connect"를 입력하세요! 아래에서는 이 새로운 도구 세트에 대한 간략한 설명과 이 도구 세트가 모든 슬롯 머신 모델러에게 매우 유용할 것이라고 생각하는 이유를 읽을 수 있습니다.
배경
소프트웨어 영역에서 슬롯 머신는 스펙트럼의 가장 수명이 긴 제품 중 하나입니다. Alex Meeraus가 일반 대수 모델링 시스템을 개발하려는 초기 시도에 대한 최초의 출판 기록은 1976년으로 거슬러 올라갑니다.(수학 프로그래밍에 관한 국제 심포지엄, 부다페스트, p. 185)슬롯 머신의 최초 상용 버전은 1987년에 출시되었으며 그 이후로 많은 사람들이 슬롯 머신 배포판의 발전에 기여해 왔습니다. 슬롯 머신에는 기존 프로그래밍 언어와 같은 모듈 시스템이 없기 때문에 이러한 기여 중 상당수가 Unix 정신의 작은 명령줄 도구로 제출되었습니다. Excel 파일, CSV 파일 읽기 또는 쓰기, Microsoft Access 데이터베이스 액세스, Matlab과의 인터페이스 등을 수행합니다. 이 시스템은 수년 동안 꽤 잘 작동해 왔지만 이러한 모든 도구를 최신 상태로 유지하고 슬롯 머신가 지원하는 모든 플랫폼에서 사용할 수 있도록 하는 것이 점점 더 어려워지고 있습니다. 또한 다양한 도구를 사용하기 위한 구문이 일정하지 않아 사용자에게 혼란을 줄 수 있습니다. 따라서 우리는 다양한 형식에서 데이터를 읽고 쓰는 보다 현대적이고 통일된 방식이 필요하다고 느꼈습니다. 이러한 방향으로의 큰 진전으로 이제 "슬롯 머신 Connect"를 공개할 수 있게 되었습니다. 슬롯 머신 Connect는 판독기 에이전트, 변환기 에이전트 및 기록기 에이전트의 도움을 받아 다양한 소스의 데이터를 통합된 중앙 데이터 저장소('Connect 데이터베이스')로 가져오고 거기에서 다른 형식으로 데이터를 가져오는 것을 목표로 하는 '추출, 변환, 로드'(ETL) 개념을 기반으로 합니다(그림 1).

그림. 1: 여러 에이전트가 동일한 중앙 데이터베이스를 공유합니다.
이 개념은 YAML 구문을 통해 구성되는 플러그형 데이터 가져오기/내보내기 시스템을 가능하게 합니다. 현재 슬롯 머신 Connect는 읽기 및 쓰기를 위한 외부 파일 형식으로 CSV, GDX 및 Excel을 지원합니다. 다음은 간단한 예입니다.
- CSV리더:
파일: 거리.csv
이름: 거리
indexColumns: [1, 2]
valueColumns: [3]
fieldSeparator: ';'
decimalSeparator: ','
- CSV리더:
파일: capacity.csv
이름: 용량
indexColumns: [1]
valueColumns: [2]
- GAMSWriter:
기호:
- 이름: 거리
새이름: d
- 이름: 용량
새이름: a
이 줄은 슬롯 머신 Connect가 두 개의 CSV 파일을 읽도록 지시합니다. 첫 번째(distance.csv)에서 열 1과 2의 인덱스 값을 사용하여 열 3의 값을 "distance"라는 이름의 기호로 읽습니다. 두 번째 CSV 파일(capacity.csv)에서 열 1의 인덱스 값을 사용하여 열 2의 값을 "capacity"라는 기호로 읽습니다. 이 단계에서 해당 값은 슬롯 머신 Connect 데이터베이스에만 있으며 이제 슬롯 머신에서 사용할 수 있습니다. 이는 이전에 수집된 데이터에서 기호 'd'와 'a'를 생성하는 마지막 'GAMSWrite' 블록에서 수행됩니다.
슬롯 머신 Connect에 데이터를 읽고 쓰도록 지시하는 이 방법은 분명히 매우 유연하고 강력하며 더 복잡한 예를 찾을 수 있습니다.문서에서 .
Connect YAML 구문은 세 가지 다른 위치에서 활용될 수 있습니다:
- 슬롯 머신 명령줄 매개변수 "ConnectIn" 및 "ConnectOut"을 통해
- 임베디드 코드 연결을 통해(아마도 가장 일반적인 경우)
- 독립형 명령줄 유틸리티 "gamsconnect"를 통해
데이터가 Connect 데이터베이스에 있으면 슬롯 머신 데이터베이스에 쓰기 전에 "프로젝션" 에이전트를 사용하여 최대, 최소, 평균, 중앙값 등과 같은 통계 기능을 사용하여 슬롯 머신 기호의 축소된 인덱스 공간에 데이터를 투영하고 집계할 수 있습니다. 충분하지 않은 경우 YAML 명령어 내에서 Python 코드를 사용하여 매우 복잡한 데이터 조작 절차를 구현할 수도 있습니다.
디자인 결정
슬롯 머신 Connect를 구상하는 동안 우리는 몇 가지 매우 신중한 결정을 내렸습니다.
- Connect 에이전트는 설계상 "단순"하며 각 에이전트는 정확히 하나의 기능을 지원합니다. 슬롯 머신 Connect의 강력한 기능은 YAML을 통해 여러 에이전트를 하나로 묶는 기능에서 비롯됩니다.
- 당사에서 제공하는 Connect 에이전트는 플랫폼 독립적입니다.
- 모든 에이전트는 일관된 구문에 의해 제어되므로 사용자의 작업이 더 쉬워집니다. 또한 대소문자를 구분하며 이는 일반적인 슬롯 머신 구문과 다릅니다.
- 코드 가독성이 가장 중요하므로 약어를 사용하지 않고 대신 길고 명시적인 camelCased 매개변수 이름을 사용합니다.
- 조기 실패: 실수를 조기에 발견할 수 있도록 지침을 실행하기 전에 먼저 YAML 구문이 검증됩니다.
해 보세요!
우리는 슬롯 머신 Connect에 대해 매우 기쁘게 생각하며 직접 사용해 보시기 바랍니다. 슬롯 머신 39로 업데이트하고 사용해 보세요! 또한 향후 더 많은 슬롯 머신 Connect 기능을 알아보려면 새 릴리스를 확인하세요. 시간이 지남에 따라 더 많은 에이전트(예: SQL 데이터베이스, HTML, Txt 등)를 구현하고 Connect를 슬롯 머신 Studio와 통합하며 Python에서 자체 Connect 에이전트를 생성할 수도 있습니다!