GAMS 공부 (1)

 Alireza Soroudi 가 쓴 Power System Optimization Modeling in GAMS 책과 강의를 보며, 기동급전모형(Economic Dispatch)의 기초를 다지는 중. 


1. Udemy 강의 - Mastering Energy&Power System.. in GAMS + GAMS책

         Section1 – GAMS 기초 (1주차)

         Section2 – GAMS 예제

         Section3 – Power System

         Section4 – Quiz+예제


n  GAMS의 기본 구조

GAMS 명령문

내용

SETS

변수명 지정

DATA

Parameter를 스칼라, 벡터 등의 형태로 제시

VARIABLES

- 변수 지정: 선택변수, 목적변수(비용, 수익 등)

- 변수 유형 설정: 실수, 양수, 음수, 이진수(binary), 정수(integer)

-(옵션) 초기값, 경계값 지정

EQUATIONS

목적식, 제약식, 항등식 명칭 지정 및 수식 제시

MODEL

제약식. 항등식 중 분석에 포함되는 수식 설정

SOLVE

.LP: linear programming

.MIP: mixed integer programming

.NLP: non-linear programming

DISPLAY

(선택)

결과를 원하는 형태로 표시

      -       목적함수란?  Min/Max Cost, Benefit, 배출량, Risk, 전력 손실율.. 이 될 수 있음

-       제약식? 예산, Voltage, Line, Space, Speed, Fuel .. 이 될 수 있음

 

SETS

변수명 지정

VARIABLES

변수 이름            변수 설명

변수 이름2          변수2 설명

EQUATIONS

수식1                  수식1 설명

수식2                  수식2 설명

수식1.. 변수2 =e=*변수1+2;

수식2.. 10*변수1 =l= 변수2

MODEL

모델1 /all/;

SOLVE

모델1   using   계산할방법   풀이대상변수;

 

n  GAMS 언어 기호

기호

의미

= E(e) =

= (같음)

= G(g) =

= L(l) =

+ , -

덧셈, 뺄셈

* , /

곱셈, 나눗셈

**

지수

$

if

.lo

Lower bound

.l

Level or primal value

.up

Upper bound

.m

Marginal or dual value

 

n  GAMS 코드 작성 시 유의사항

ü  inputs 부문의 각 명령문 또는 진술문(statement)세미콜론(;)으로 종료

                          ex) SETS i assets /stock, bond/ ;

ü  프로그램 작성 시 영문 대문자와 소문자 구분 필요 없음 (=e==E=랑 같게 적용)

ü  편의상 GAMS 명령어(SETS, PARAMETERS )대문자 표기

ü  기타 프로그램 문서 내용은 가급적 소문자로 표기

                           ex) SETS i assets /stock, bond/ ;

ü  반드시 변수명, 변수, 파라미터, 목적식, 제약식 등의 명칭 및 정의, 특성에 대한 지정 실시 => 이를 지정하지 않을 경우 value 인식하지 못함

ü  MODEL 명령어에서 모형명은 반드시 영문으로 시작

ü  가장 마지막으로 지정되는 명령문(command)이 이전 명령문 보다 우선함

ü  프로그램 중간에 코멘트를 추가하고자 하는 경우 별표(*) 사용

ü  코멘트를 적절히 사용하여 재검토 시 편리하게 활용 가능

                           ex) SETS i assets /stock, bond/;      * i 변수가 stock, bond로 구성됨을 의미

 

n  Variables 변수를 선언하고, 그 변수의 범위/성질을 설정 (양수, 음수, 최대값, 최소값)

      n  Equations 수식(제약식)을 선언하고, 그 세부 공식을 설정


x1+x2+x3 => sum(i$(ord(i)<4), x(i);

 

n  Model Definition 선언한 Eq.를 어느 범위부터 어떤 그룹으로 SOLVE 할지 지정

 

n  SOLVE 해를 푸는 method를 지정

      LP (Linear Programming) Method


      MIP (Mixed Integer linear Programming) Method

 


n  Conditional Expression   조건부 할당

기호

의미

 

기호

의미

lt

< 많이 작은

not

not

le

≤ 작거나 같음

and

and

eq

= 같은

or

or

ne

≠ 같지 않은

xor

exclusive or

ge

≥ 크거나 같음

$

if

 If (b>1.5), then a = 2; 는 ⇒  a$( b > 1.5 ) = 2;  로 표현

if (y > 7.5) THEN (x=20), ELSE (x=0)    x = 20$(y GT 7.5) + 0$(y LE 7.5);  로 표현

  

n  Loop Expression

반복문을 위한 명령어. 동일한 연산을 반복적으로 수행하는 경우 사용하는 명령문

-       기본 구조: LOOP (control_ area [$(condition)] operator {; operator});

-       입력 방식

SET

t times /1985 * 1990/;

PARAMETER

pop(t)      /1985   3456/

growth(t)   /1985 25.3

            1986 27.3

            1987 26.2

            1988 27.1

            1989 26.6

            1990 26.6/;

LOOP    (t,pop(t+1) = pop(t) + growth(t));

 

댓글

인기 글

아직도 날아가는 공