2016-08-23 2 views
0

나는 1 차원 배열로 변환하고 싶은 gams에 2 차원 배열을 가지고 있습니다.은 GAMS에서 2 차원 배열을 1 차원으로 변환합니다.

e.e. 나는

set i /i1*i100/ 
set j /j1*j100/ 
parameter array(i,j) 

이 지금은 같은 싶습니다 모든 행과 모든 열을 통해 갈 밖으로 작성하여

set n /n1*n10000/ 
parameter one_dim_array(n) 

그리고 one_dim_array의 요소가되어야 위 배열의 모든 요소를, 값.

parameter index /0/ 
loop(i, 
loop(j, 
one_dim_array(n%index%) = array(i,j); 
index = index + 1; 
)) 

그러나, GAMS이 N % 인덱스 % 표기법을 이해하지 않는 것 그것이 세트 아니라고 오류를 반환 :

나는 시도했다. 이걸 우회하는 어떤 방법이라도?

고맙습니다.

+0

그건 그렇고, 나는 "n % 인덱스"의 모든 조합을 시도하고 따옴표와 함께 작동하지 않는 것 같아요 – nonick

답변

0

현재처럼 할당에 사용할 수있는 일치 연산자 (http://www.gams.com/help/index.jsp?topic=%2Fgams.doc%2Fuserguides%2Fmccarl%2Fdefining_a_tuple_with_the_matc.htm)를 사용하여 n 및 I, J 사이의 매핑을 만들 수 :

set i /i1*i100/ 
    j /j1*j100/ 
    n /n1*n10000/ 
    nijMap(n,i,j) /#n:(#i.#j)/; 

parameter array(i,j) 
      one_dim_array(n); 

array(i,j)  = uniform(0,1); 
one_dim_array(n) = sum(nijMap(n,i,j), array(i,j)); 

나는 희망이 도움이! 최고, Lutz

+0

완벽 해, 그 도움이! 고마워요! :-) – nonick

관련 문제