목차
이전은 Python 또는 Matlab과 같은 프로그래밍 언어로 GAMS 스크립트 외부에서 GAMS 슬롯 나라를 유지 관리하는 도구입니다. 이를 통해 사용자는 GAMS 기호(집합, 별칭, 매개변수, 변수 및 방정식)를 추가하고 GAMS 기호를 조작할 수 있을 뿐만 아니라 다양한 슬롯 나라 엔드포인트에 기호를 읽고 쓸 수 있습니다.이전의 주요 초점은 GAMS와 대상 프로그래밍 언어 간의 매우 효율적인 슬롯 나라 전송과 사용자를 위해 이러한 작업을 최대한 간단하게 유지하는 것입니다. 이를 달성하기 위해 실제 및 잠재적으로 대규모 슬롯 나라 세트인 기호 레코드는 해당 프로그래밍 언어의 기본 슬롯 나라 구조에 저장됩니다. 이 접근 방식의 이점은 세 가지입니다. (1) 사용자는 일반적으로 이러한 슬롯 나라 구조에 매우 익숙합니다. (2) 이러한 슬롯 나라 구조는 다양한 슬롯 나라 작업을 위한 대형 도구 상자와 함께 제공되며 (3) GAMS 읽기 및 쓰기에 최적화된 방법은 슬롯 나라를 대량으로 전송할 수 있어 이 패키지의 성능이 향상됩니다. 이 문서에서는 다음의 사용 방법을 자세히 설명합니다.이전Python 환경 내에서.
슬롯 나라 내부이전Pandas DataFrame으로 저장됩니다. Pandas DataFrames의 유연한 특성으로 인해 희소 슬롯 나라를 저장/조작하는 데 이상적입니다. Pandas에는 다음을 위한 고급 작업이 포함되어 있습니다.인덱싱 및 슬라이싱, 재형성, 병합그리고 심지어시각화.
Pandas에는 다양한 고급 슬롯 나라도 포함되어 있습니다.I/O 도구사용자가 CSV에서 직접 DataFrame을 생성할 수 있도록 허용(.csv), JSON(.json), HTML(.html), 마이크로소프트 엑셀(.xls, .xlsx), SQL, 피클(.pkl), SPSS(.sav, .zsav), SAS(.xpt, .sas7bdat) 등
센터링이전Pandas DataFrame을 사용하면 GAMS 사용자(macOS, Windows, Linux 등 다양한 플랫폼)가 GAMS 모델에서 사용하기 위해 선호하는 환경 간에 슬롯 나라를 앞뒤로 이동할 수 있는 도구에 액세스할 수 있습니다.
이 문서의 목표는 사용자에게 다음을 소개하는 것입니다.이전및 그 기능. 이 문서는 사용자에게 Pandas DataFrames를 효과적으로 조작하는 방법을 가르치기 위해 설계되지 않았습니다. Pandas에 대한 더 깊은 이해를 원하는 사용자는 광범위한 내용을 참조하세요.문서.
자세한 문서와 예시를 원하는 숙련된 GAMS API 사용자는 다음 페이지로 이동하세요.메인 클래스그리고추가 주제.
권장 가져오기
사용자는 다음 항목에 액세스할 수 있습니다.이전25561_25679
디자인
희소 슬롯 나라를 저장, 조작 및 변환하려면 해당 슬롯 나라가 환경 내에 있어야 합니다. 그런 다음 이 슬롯 나라를 서로 연결하여 다양한 작업을 수행할 수 있습니다. 에서이전우리는 이 "환경"을 다음과 같이 부릅니다.컨테이너, 희소 슬롯 나라를 저장하고 연결하는 주요 저장소입니다. 에 기호를 추가할 수 있습니다.컨테이너다양한 GAMS 시작점에서 시작하지만 다음의 일부인 편리한 함수 호출을 사용하여 Python 환경 내에서 직접 생성할 수도 있습니다.이전패키지; 기호는 한 번에 하나의 컨테이너에만 속할 수 있습니다.
컨테이너 내에서 기호를 함께 연결하는 프로세스는 일반적인 GAMS 작업 흐름에서 영감을 얻었지만 객체 지향 프로그래밍의 측면을 활용하여 슬롯 나라 연결을 자연스러운 프로세스로 만듭니다. 슬롯 나라를 연결하면 암시적 집합 증가, 도메인 검사, 슬롯 나라 형식 변환(밀집/희소 행렬 형식으로) 등과 같은 슬롯 나라 작업이 가능합니다. 이러한 모든 기능은 순서를 사용하여 활성화됩니다.pandas.CategoricalDtype슬롯 나라 유형. 이러한 모든 세부정보는 다음 섹션에서 논의됩니다.
명명 규칙
메소드 – 객체에 작동하는 함수 –는 모두 동사입니다(예:getMaxAbsValue(), getUELs()등) 및 식별 목적으로 Camel Case를 사용합니다. 메소드는 관례적으로 "일을 수행하는" 도구입니다. 즉, 잠재적으로 비용이 많이 드는 계산이 필요합니다. 일부이전메소드는 인수를 받아들이는 반면, 다른 메소드는 단순히 다음을 사용하여 호출됩니다.()표기법. 복수 인수(열)는 입력 목록(예: 기호 이름 목록)을 허용할 수 있음을 암시하는 동시에 단일 인수(열)은 한 번에 하나의 입력만 허용합니다.
속성(객체의 고유 속성)은 모두 명사입니다(예:이름, 숫자_기록등) 및 식별 목적으로 스네이크 케이스(밑줄로 구분된 소문자 단어)를 사용합니다. 객체 속성(또는 "객체 특성")은 객체의 기본이므로 메서드처럼 호출되지 않습니다. 객체 속성은 단순히 다른 메서드나 사용자 호출을 통해 액세스됩니다. 관례적으로 속성에는 액세스하는 데 아주 적은 양의 계산만 필요합니다.
객체의 기본 구조인 클래스는 모두 단수 명사이며 식별 목적으로 낙타 표기(첫 글자를 대문자로 시작)를 사용합니다.
설치
사용자는 설치하려면 최신 버전의 GAMS를 다운로드하여 설치해야 합니다.이전. 이전는 GAMS Python API가 빌드 및 설치될 때 설치됩니다. 사용자가 추천되었습니다.여기Python API 파일 설치 방법에 대한 지침.이전및 모든 GAMS Python API 파일은 Anaconda와 같은 환경 관리자와 호환됩니다.
예
GDX 읽기
모든 기호를 읽는 것은 한 줄의 코드로 수행할 수 있습니다. (우리는 다음의 슬롯 나라를 참조합니다.`trnsport.gms`예).
모든 기호 슬롯 나라는 슬롯 나라 속성으로 구성됩니다 –m.data[<symbol_name>].records(그컨테이너첨자도 가능합니다.m[<symbol_name>].records동등한 설명입니다.) – 레코드는 Pandas DataFrames로 저장됩니다.
CSV에 기호 쓰기
CSV에 기호 레코드를 쓰는 것도 한 줄로 완료할 수 있습니다.
새 GDX 작성
내에는 6개의 기호 클래스가 있습니다이전: 1) 집합, 2) 매개변수, 3) 변수, 4) 방정식, 5) 별칭 및 6) UniverseAliases. 이 빠른 시작을 위해 다음을 다시 만드는 방법을 보여줍니다.거리다음의 슬롯 나라 구조`trnsport.gms`모델(매개변수d). 이 간단한 예는 사용자가 Python 환경 내에서 "GAMS와 유사한" 기능을 달성할 수 있는 방법을 보여줍니다. –이전객체 지향 프로그래밍을 활용하여 구문을 단순화합니다.
이 예는 다음의 몇 가지 기본 기능을 보여줍니다.이전:
- 빈 컨테이너는 빈 GDX 파일과 유사합니다.
- 기호는 항상 컨테이너에 연결됩니다(우리는 항상 컨테이너 참조를 전달한다는 점에 유의하세요.
m기호 생성자에) - 레코드는 다음을 사용하여 기호에 추가될 수 있습니다.
setRecords()방법 또는 통해기록생성자 인수(내부 호출setRecords()).이전많은 일반적인 Python 슬롯 나라 구조를 표준 형식으로 변환합니다. - 도메인 세트 객체를 다른 기호에 전달하면 도메인 연결이 가능합니다
- GDX 파일 쓰기는 다음 명령을 사용하여 한 줄로 완료할 수 있습니다.
쓰기()방법.
전체 예
우리가 현재 알고 있는 모든 것을 사용하는 것이 가능합니다이전다시 만들기 위해`trnsport.gms`결과는 GDX 형식입니다. 이 예의 일부로 우리는 또한 다음을 소개합니다.쓰기방법(및 생성new.gdx). 다음 섹션에서 이에 대해 더 자세히 논의하겠습니다.GDX 읽기/쓰기.
확장된 예
HTML 슬롯 나라 가져오기
- 참고
- 사용자는 Pandas 작업을 함께 연결하고 해당 작업을 다음으로 전달할 수 있습니다.
기록인수 또는setRecords방법.