21.4 주요 릴리스(2004년 9월 6일)
목차
감사의 말씀
버그를 보고하거나 이 릴리스 개선에 대한 제안을 해주신 모든 사용자에게 감사드립니다.
GAMS 시스템
슬롯 커뮤니티 라이브러리
- 슬롯 커뮤니티 라이브러리가 계속해서 늘어나고 있습니다! 절단재 문제(cutstock)에 대한 컬럼 생성 방식을 구현한 슬롯 커뮤니티이 추가되었습니다. BARON(mhw4dxx 및 bchfcnet)의 다중 솔루션 기능을 보여주는 두 가지 예가 있습니다.
- 슬롯 커뮤니티 라이브러리에는 "GAMS"라는 새로운 카테고리도 있습니다. 도구". 이 카테고리의 슬롯 커뮤니티은 슬롯 커뮤니티러의 일상 작업을 돕기 위해 설계된 도구를 사용하는 방법을 보여줍니다. 세 가지 슬롯 커뮤니티(awkqap, seders 및 awktsp)은 웹사이트에서 원시 파일을 가져와 Unix 스타일 도구 SED 및 AWK를 사용하여 GAMS에서 읽을 수 있는 적합한 형식으로 텍스트 파일을 조작하는 일상적인 프로세스를 보여줍니다.
- 5개의 새로운 슬롯 커뮤니티(mingamma, Quantum, procmean, mlbeta 및 mlgamma)이 추가되어 새로운 통계 함수(아래 설명)를 보여줍니다.
테스트립
- 33개의 새로운 슬롯 커뮤니티이 테스트 라이브러리에 추가되었습니다.
- 솔버별 테스트 스위트 추가. 테스트 스위트의 슬롯 커뮤니티은 모든 솔버에 대해 실행되는 것이 아니라 해당 특정 스위트와 연관된 솔버 세트에 대해 실행됩니다.
- 대부분의 새로운 슬롯 커뮤니티은 GAMS/Base의 기능을 테스트합니다.
- 일련의 새로운 슬롯 커뮤니티이 MCP 구문과 일치 규칙을 테스트합니다.
Windows Setup.exe
- GAMS용 슬롯 커뮤니티 Windows setup.exe 설치 프로그램은 슬롯 커뮤니티 기능과 보다 사용자 친화적인 인터페이스를 추가하는 데 사용됩니다.
- McCarl GAMS 사용자 가이드는 이제 Windows 설치의 일부입니다(UNIX 플랫폼의 경우 수동으로 설치해야 함).
GDX 유틸리티
- GDX 파일을 위한 독립 실행형 정렬 유틸리티인 GDXrank는 이제 배포판의 일부입니다(모든 플랫폼)
- Tom Rutherford가 작성한 Rank.gms라는 GDXrank 래퍼가 배포판에 포함되어 있으며 $LIBINCLUDE 지시문을 사용하여 호출할 수 있습니다.
GAMS IDE
- IDE는 https를 www 문자열로 인식합니다.
- 메뉴 도움말 | 정보는 현재 라이센스 파일을 보여줍니다.
- 클립보드에 GAMS 라이센스 파일이 있는 경우 도움말 | 클립보드를 라이센스 파일에 쓰라는 메시지가 표시됩니다.
- 라이브러리 파일은 이제 숫자 확장자를 가진 여러 파일을 가질 수 있습니다. 이전에는 첫 번째 파일이었습니다.
- 라이브러리 파일은 '.zip' 파일을 보호할 수 있도록 제거될 '.ignore' 확장자를 가질 수 있습니다.
- gdxdiff를 실행한 후, 빈 차이 파일은 표시되지 않습니다.
추가 기능
- gMilliSec(DayTime): DayTime 숫자의 밀리초
- MaxExecError: ExecError 값에 대한 읽기/쓰기 액세스
- TimeElapsed: GAMS 실행 시작 이후 경과된 시간(초)
- 감마(a): 감마 함수(DNLP)
- LogGamma(a): 로그 감마 기능
- GammaReg(x,a): 정규화된 감마 함수
- 베타(a,b): 베타 함수(DNLP)
- LogBeta(a,b): 로그 베타 기능
- BetaReg(x,a,b): 정규화된 베타 함수
불완전하고 정규화된 감마 및 베타 함수에 대한 정의 및 표기법은 일관성이 없습니다. 예를 들어, 다음에서 사용된 정의와의 차이점에 유의하십시오.Mathematica:GAMS Mathematica 감마(a) 감마[a] 로그감마(a) 로그감마[a] GammaReg(x,a) GammaRegularized[a,0,x] 베타(a,b) 베타[a,b] 로그베타(a,b) 로그[베타[a,b]] BetaReg(x,a,b) BetaRegularized[x,a,b]
상수 인덱스 또는 자연 순서가 아닌 인덱스를 포함하는 표현식의 속도 향상
- 상수 인덱스 또는 자연 순서가 아닌 인덱스를 포함하는 표현식의 속도 향상
- sys11 옵션은 이 슬롯 커뮤니티 기능을 제어합니다. sys11=1 옵션을 사용하면 GAMS는 이전 버전과 같이 속도 향상 기능 없이 실행됩니다. 옵션 sys11=0을 사용하면 GAMS는 메모리 사용을 늘리는 대신 일부 명령문을 더 빠르게 실행하는 프로시저를 사용하게 됩니다(이것이 현재 기본값임). 다음 GAMS 코드는 몇 가지 속도 향상을 보여줍니다.
초 단위 실행 시간 비교:i / i1*i700 / 설정 j / j1*j700 / k / k1*k500 / ik(i,k); 매개변수 aij(i,j) bji(j,i), cjk(j,k), dij(i,j); ik(i,k)$(uniform(0,1) < 0.01) = 예; aij(i,j) = 균일(0,1); bji(j,i) = aij(i,j); cjk(j,k) = sum(ik(i,k), aij(i,j)); dij(i,j) $(aij(i,'j700') > 0.5) = bji(j, 'i700')과제 sys11=1 sys11=0 비지 2.7 0.36 CJK 25.0 2.38 디지 4.7 0.39
- 지연/선행 연산자의 더 빠른 실행. 이러한 개선 사항은 다음 GAMS 코드에 설명된 대로 대규모 세트에서만 볼 수 있습니다.
초 단위 실행 시간 비교:i /i1*i2000/로 설정, j /j1*j20000/; 매개변수 Ai(i),Bj(j); Ai(i - 1) = Ord(i); Bj(j - 1) = Ord(j);과제 이전 현재 아이 0.02 0.0 비제이 3.2 0.0
- sys11 옵션은 이 슬롯 커뮤니티 기능을 제어합니다. sys11=1 옵션을 사용하면 GAMS는 이전 버전과 같이 속도 향상 기능 없이 실행됩니다. 옵션 sys11=0을 사용하면 GAMS는 메모리 사용을 늘리는 대신 일부 명령문을 더 빠르게 실행하는 프로시저를 사용하게 됩니다(이것이 현재 기본값임). 다음 GAMS 코드는 몇 가지 속도 향상을 보여줍니다.
내장된 설정된 텍스트 및 매개변수 값
- 그
$on/offembedded옵션을 사용하면 매개변수 및 세트 데이터 문에 포함된 값을 사용할 수 있습니다. 세트의 경우 최종 텍스트는 공백 구분 기호로 연결됩니다. 예를 들어 집합과 j의 요소 텍스트는 동일합니다.
매개변수의 경우 최종 값은 포함된 값의 곱이 됩니다. 값을 지정하지 않으면 값이 1로 가정됩니다. 예를 들어 x와 y의 값은 동일합니다.Set i(k,l) / a.a 'aaaa cccc dddd', b.a 'bbbb cccc dddd' /; $one임베디드 j(k,l) / (a aaaa, b bbbb)를 설정합니다.(a cccc) dddd /;매개변수 x(k,l) / a.a 24, b.a 12, c.a 4, c.b 4, d.a 6, d.b 6 /; $one임베디드 매개변수 y(k,l) / (a 2, b).(a 3) 4, (c 2,d 3).((a,b) 2) /;
함수에 대한 슬롯 커뮤니티 접미사
- 모든 함수에서 정확한 점 도함수를 얻기 위해 슬롯 커뮤니티 접미사 Grad 및 Hess가 도입되었습니다. 이러한 함수 접미사는 주로 향후 함수 테스트를 위한 것이며 방정식에는 사용할 수 없습니다.
- 첫 번째 인수는 i 또는 i:j 형식으로 원하는 헤시안 또는 그래디언트 요소의 요소 위치를 제공합니다. 여기서 i는 행 요소이고 j는 열 요소입니다.
- ':' 기호는 함수 인수 목록에서 요소 위치 지정을 구분하는 데 사용됩니다.
- 예를 들어, 다음은 두 번째 및 네 번째 인수에 대한 2차 도함수를 반환합니다. 여기서 1,2,3,4,5는 일반 함수 인수입니다.
h = EDist.hess(2:4:1,2,3,4,5);
필요한 요소 위치 색인이 1이면 아래와 같이 인수를 삭제할 수 있습니다.g = exp.grad(1:5) 또는 g = exp.grad(5); h = log.hess(1:1:3) 또는 h = log.hess(3); hess(i,j) = betareg.hess(ord(i):ord(j):expr1,expr2,expr3);
몇 가지 슬롯 커뮤니티 사소하고 이국적인 기능
- 신규
%system.xxx%그리고system.xxxput 문용system.date1: 다른 날짜 형식: 2004년 2월 4일system.tab: 탭 문자 삽입
- 새 파일 속성
파일.침묵: 넣기 파일의 로깅을 억제합니다
- 신규
$IF옵션을 사용하면 컴파일 타임에 기존 솔버를 테스트할 수 있습니다. $IF 솔버명령$if NOT 솔버 바론 $goto nobaron- 언더플로우 제어
- 릴리스 21.0에는 이전 시스템보다 훨씬 더 넓은 수치 범위에서 작동하는 슬롯 커뮤니티 수학 루틴이 도입되었습니다. 21.0 이전 시스템에서는 작은 함수 반환 값(1e-30 미만)을 0으로 반올림했습니다.
- 일부 구형 슬롯 커뮤니티은 이 0으로 반올림 기능을 사용할 수 있으며 이제 약간 다른 결과를 제공합니다.
- 슬롯 커뮤니티 GAMS 매개변수 ZeroRes=real을 사용하면 GAMS 계산에서 내부 반올림에 대한 임계값을 변경할 수 있으며 GAMS 매개변수 ZeroResRep=1을 사용하면 이러한 반올림이 발생할 때마다 GAMS가 경고를 발행하게 됩니다.
가격
글로벌 패키지
- NLP 패키지(NLP-1 및 NLP-2)와 유사하게 GAMS는 이제 글로벌 패키지를 제공합니다. 글로벌 솔버 BARON, LGO 및 MSNLP 중 2개 이상을 구매하면 가격이 25% 인하됩니다. 가격표를 확인하거나 문의해 주세요.sales@gams.com.
해결사
바론
- 새 라이브러리(버전 7.2)
- 분기 및 절단 구현(CPLEX를 LP 솔버로 사용하는 경우에만 사용 가능)
- 볼록성의 자동 활용
- 슬롯 커뮤니티링 구성을 통해 사용자는 솔버에 볼록성 정보를 제공할 수 있습니다.
- 슬롯 커뮤니티링 구성을 통해 사용자는 완화 전용 제약 조건을 가질 수 있습니다.
- 대규모 슬롯 커뮤니티을 위한 향상된 지역 검색 구현
- GDX 덤프는 K개 최고의 솔루션에 대한 출력을 제공하는 데 사용될 수 있습니다.
- 다양한 알고리즘 수정 및 개선
코인
- GAMS는 COIN-OR(컴퓨팅 인프라 운영 연구)에 대한 링크를 추가했습니다. COIN-OR 프로젝트는 운영 연구 커뮤니티를 위한 오픈 소스 소프트웨어 개발을 촉진하기 위한 이니셔티브입니다.
- GAMS/COIN-OR 링크를 통해 GAMS 사용자는 COIN-OR 개방형 솔버 인터페이스(OSI)를 사용하여 맞춤형 솔루션 접근 방식을 원활하게 연결할 수 있습니다.
- LP 및 MIP 문제에 대한 GAMS/COIN-OR 링크는 라이센스가 있는 모든 GAMS 시스템에서 소스로 무료로 사용할 수 있습니다.
- COIN-OR/OSI에 연결된 모든 솔버는 GAMS/COIN-OR 링크를 통해 사용할 수 있게 될 수 있습니다. 현재,
- CoinGlpk: Gnu 선형 프로그래밍 키트
- CoinSbb: 단순 분기 및 바운드, 분기 및 컷 코드
- 최신 Windows 및 Linux 배포판에 포함되어 있습니다. GAMS/COIN-OR 웹페이지를 방문하세요.https://github.com/coin-or/GAMSlinks자세한 내용은.
CONOPT
- 사소한 수정 및 개선을 다루는 슬롯 커뮤니티 라이브러리가 포함되었습니다.
미노스
- 새 라이브러리(2004년 6월 MINOS 5.51)
- 확장/비확장 실행 불가능/최적화되지 않은 문제 수정
MSNLP
- MSNLP(Multi-Start NLP)는 전역 최적화 문제에 대한 Optimal Methods, Inc의 또 다른 확률적 검색 알고리즘입니다. OQNLP와 마찬가지로 MSNLP는 포인트 생성기를 사용하여 로컬 NLP 솔버에 대한 후보 시작점을 생성합니다. 알고리즘 성능은 시작점 생성기에 크게 좌우됩니다. MSNLP는 균일하게 분포된 점을 생성하는 생성기와 스마트 무작위 생성기를 구현합니다. 이 생성기는 초기 대략적 검색을 사용하여 임의의 시작점이 집중된 유망한 영역을 정의합니다. 현재 Smart Random의 두 가지 변형이 구현되어 있습니다. 하나는 일변량 정규 분포를 사용하고 다른 하나는 삼각 분포를 사용합니다. MSNLP에는 로컬 NLP 솔버 LSGRG도 함께 제공됩니다. MSNLP는 글로벌 패키지에서 사용할 수 있습니다.
NLPEC
- NLPEC는 베타 솔버 상태에서 승격되었으며 솔버 문서에 기록이 있습니다.
- MPEC용 NLPEC 솔버는 슬롯 커뮤니티 재구성 프로세스를 자동화합니다. NLPEC는 원본 MPEC를 NLP(23가지 재구성 전략 중 하나 사용)로 재구성하고 결과 NLP를 해결한 후 결과를 MPEC 솔루션으로 반환하기 위해 다시 변환합니다.
PATHNLP
- PATHNLP가 베타 솔버 상태에서 승격되었습니다. PATHNLP 솔버는 NLP 프로그램에 적합합니다. PATHNLP는 NLP와 관련된 1차 최적성 조건의 Karush-Kuhn-Tucker(KKT) 시스템을 내부적으로 구성하고 상보성 문제에 대해 PATH 솔버를 사용하여 이 시스템을 해결함으로써 NLP를 해결합니다.
- 베타 버전의 일부 개선 사항은 다음과 같습니다.
- PATHNLP가 솔루션을 찾지 못하는 일부 경우에는 이전에는 솔루션 정보가 전혀 반환되지 않았던 실현 가능점을 반환할 수 있습니다.
- 헤세 행렬과 그 역행렬에 대한 정보가 이제 제공됩니다.
OQNLP
- OQNLP의 장점 및 거리 필터는 후보 시작점의 작은 부분에서 NLP 솔버를 시작하는 데 응답하면서도 여전히 대부분의 문제에 대한 전역 솔루션을 찾는 기능이 개선되었습니다.동적 장점 필터 논리그리고분지 겹침 수정점을 가장 자주 거부하는 유역과 겹치는 유역에 초점을 맞춰 일부 유인 유역의 반경을 줄이는 메커니즘을 제공합니다. 이러한 동적 필터는 솔버 호출 수가 어느 정도 증가하면서 전역 최적값을 얻는 OQNLP의 기능을 크게 향상시킵니다. OptQuest 포인트 생성기는 두 개의 슬롯 커뮤니티 포인트 생성기로 보완되었습니다(MSNLP 참조).
익스프레스
- XPRESS 2004 라이브러리를 사용하도록 업데이트되었습니다. 주요 내용은 다음과 같습니다.
- MIP 휴리스틱
- 향상된 바운드 정보를 제공하기 위한 리프트 앤 프로젝트 컷
- 강한 분기
- 광범위한 벤치마킹 및 결과적인 성능 개선