Deterministic Models in OR,
Based on Java,
If you know this thing, please receive and contact me, I have a task~
This seems to be a software link. If you understand it, please accept it and discuss the pricehttps://content-eu-7.content-cms.com/b73a5759-c6a6… Deterministic Models in OR
Solver
6.1 Deterministic Models in OR
OPL 설치
1. IBM Data Science 홈페이지 접속
https://my15.digitalexperience.ibm.com/b73a5759-c6a6-4033-ab6b-d9d4f9a6d65b/dxsites/151914d1-03d2-48fe-97d9d21166848e65/technology/data-science
(또는 구글에 “IBM Academic Initiative” 검색 후 ‘Data Science’ 배너 클릭)
2. ILOG CPLEX Optimization Studio 칸에 있는 ‘Register’ 클릭 후 회원 가입 (반드시 학교 메일로 인증해야 함)
[1]
[2]
6.1 Deterministic Models in OR
OPL 설치
1. 회원가입 후 OLOG CPLEX Optimization Studio 다운로드 선택
2. CPLEX 설치 항목에서 OS에 맞는 설치파일 다운로드
[1]
[2]
6.1 Deterministic Models in OR
OPL 설치
1. 설치가 안 될 경우, 아래의 install/re-install Download Director 클릭
2. Download director – setup guide 화면이 팝업됨. 화면에서 java.com을 클릭 후 최신 Java 설치
[1]
[2]
6.1 Deterministic Models in OR
OPL 설치
1. JAVA 설치 후, Download director – setup guide 화면의 아래 부분으로 가서 ‘Install Download Director’ 클릭
2. ‘계속’ 선택 후, 안내에 따라 해당 파일 다운로드
[1]
[2]
6.1 Deterministic Models in OR
OPL 설치
1. 다운로드 완료 후, ‘Launch’ 클릭
2. IBM ILOG CPLEX Optimization Studio 설치화면이 나오면 ‘확인’을 클릭하고 프로그램 설치
[1]
[2]
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
• OPL Studio 설치
1.
cplex_studio126.win-x86-64.exe를 실행 설치 (64 bit 전용)
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
• OPL Studio 첫 화면
Click
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
• OPL Studio 프로젝트 생성
파일 => 새로 작성 => OPL Project
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
• OPL Studio 프로젝트 생성
1.
2.
3.
4.
5.
6.
Project Name 입력
Add a default run
configuration 체크
Create Model 체크
Create Settings
체크
Create Data 체크
완료
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
• OPL Studio 프로젝트 생성
Configuration -> 하나의 프로젝트 실행 단위
프로젝트
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
• OPL 프로젝트
– 프로젝트:
• 여러 개의 Mod와 Dat와 Ops 파일을 담아 두는 곳
– Mod: 모델링을 저장하는 파일
– Dat: 데이터를 저장하는 파일
– Ops: Opl Setting을 설정하는 파일
– Configuration:
•
•
Mod와 Dat의 결합으로 하나의 문제를 의미
하나의 Mod와 Dat와 Ops의 결합으로 이루어짐
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
• OPL 프로젝트: Mathematical Programming
Mathematical Programming
Model
Data
One
Problem
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
하나의 모델에 다른 데이터 파일을 적용함으로 다른 문제가 된다
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
• OPL project
Project
Model 1
Model 2
Configuration 1
Data 1
Data 2
Data 3
Data 4
Model 1
Data 1
Configuration 2
Model 1
Data 2
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
Mod 파일 생성
Project 마우스 우클릭새로 작성 모델
Dat 파일 생성
Project 마우스 우클릭새로 작성 데이터
실행구성 생성
Project 마우스 우클릭새로 작성 실행구성
6.1 Deterministic Models in OR
OPL 개요 및 모델 생성
OPL 값읕 잉룁
경영과학 시스템 설계
OPL 기본 모델 작성
6.1 Deterministic Models in OR
OPL 기본 모델 작성
• Sample Problem
6.1 Deterministic Models in OR
OPL 기본 모델 작성
• 결정 변수 선언
Decision variable 선언
float: 실수형 변수
+: 변수가 0보다 큼을 의미
즉, x2≥0
float 외에 int, boolean 등이 존재
6.1 Deterministic Models in OR
OPL 기본 모델 작성
• 목적 함수 선언
목적 함수 선언:
maximize와 minimize 존재
목적식:
최대화 혹은 최소화 하고자 하는 식
결정변수에 대하여 1차식이여야 함
ex) x1*x1, x1*x2 : 허용 안 됨
마지막에 ‘;’ 필수로 붙어야 함
6.1 Deterministic Models in OR
OPL 기본 모델 작성
• 목적 함수 선언
제약식 선언
제약식:
제약 하고자 하는 식
결정변수에 대하여 1차식이여야 함
ex) x1*x1, x1*x2 : 허용 안 됨
각 제약 마지막에 ‘;’ 필수로 붙어야
함
비교 연산자: ‘=‘, ‘==‘ 사용 가능
‘=‘, ‘=’ 는 사용하면 안됨
6.1 Deterministic Models in OR
OPL 기본 모델 작성
6.1 Deterministic Models in OR
OPL 기본 모델 작성
6.1 Deterministic Models in OR
OPL 기본 모델 작성
• Data File
dat
6.1 Deterministic Models in OR
OPL 기본 모델 작성
mod
dat
OPL 값읕 잉룁
경영과학 시스템 설계
OPL Data 형태
6.1 Deterministic Models in OR
OPL Data 형태
• OPL Data 형태
– Data
•
•
•
•
int : 정수
float: 실수
string: 문자열
tuple: 테이블형 데이터, ex)
Name
Cost
Skill 01
Skill 02
Kim
20
1
1
Lee
10
1
0
– Set of data
•
•
range: 범위형 데이터, ex) 1~5
set: 집합형 데이터, ex) { “low”, “middle”, “high” }, { 1, 3, 5, 6, 9}
– Decision variable
•
•
•
int+: 정수형 변수 (+는 해당 변수가 0보다 커야 한다는 의미)
float+: 실수형 변수
Boolean: 0 or 1 변수
6.1 Deterministic Models in OR
OPL Data 형태: Range
• Modeling File (Range type)
6.1 Deterministic Models in OR
OPL Data 형태: Range
• Modeling File (Range type)
int 선언
i: 변수의 개수
k: 제약식의 개수
range: 범위형 데이터 선언
is=1..i:
is: 범위형 데이터의 이름
1..i: i는 3이므로 1..i는 1~3의
범위를 말함. 즉, 1,2,3
정수형 데이터만 사용 가능
ks = 1..k:
→ ks = [1,2]
6.1 Deterministic Models in OR
OPL Data 형태: Range
• Modeling File (Range type)
int 집합 선언
여러 개의 int를 동시에 선언
a[is][ks]:
3×2개의 int를 선언. 즉,
3
a= [int][int][int]
[int][int][int]
2
(‘…’의 의미는 dat에서 정보를
불러오겠다는 의미)
c[is]: 3×1개의 int를 선언
dvar 집합 선언:
여러 개의 dvar를 동시에 선언
float+ x[is]:
3×1개의 float+형 변수 선언
6.1 Deterministic Models in OR
OPL Data 형태: Range
• Modeling File (Range type)
range형 변수 및 데이터의 식 표현:
[]를 사용해 해당 변수에 접근
c[1]:
c의 3×1개의 int들 중 첫 번째
int를 나타냄.
x[1]:
x의 3×1개의 float+형 변수들 중
첫 번째 변수를 나타냄
a[1][1]:
3×2개의 int들 중 is가 1이고 ks가
1인 int를 나타냄.
6.1 Deterministic Models in OR
OPL Data 형태: Range
6.1 Deterministic Models in OR
OPL Data 형태: Set
• Modeling File (Set type)
6.1 Deterministic Models in OR
OPL Data 형태: Set
• Modeling File (Set type)
string set 선언
string의 집합을 선언
{string}:
string의 집합을 의미
levels: string 집합의 이름
{“l”, “m”, “h”}: 중괄호를
이용해 집합 표현
{int}:
int의 집합을 의미
6.1 Deterministic Models in OR
OPL Data 형태: Set
6.1 Deterministic Models in OR
OPL Data 형태: Set
구하고자 하는 모델 및
데이터가 들어있는 C
onfiguration 위에서
마우스 우 클릭
‘Run this’ 클릭
6.1 Deterministic Models in OR
OPL 결과괎 확인
문제에 대한 목적함수의 값
문제에 대한 결정변수의 값
언급한 두 창에 결과값이 표시되지 않거나, relaxed solution이라 표시되면
잘못된 문제를 입력하였거나 오타가 발생한 경우임
작성한 모델에 대한 재검토 필요
6.1 Deterministic Models in OR
OPL Data 형태: Set
6.1 Deterministic Models in OR
OPL 값읕 잉룁
경영과학 시스템 설계
OPL 함수 (sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Sample Problem
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Modeling File with OPL function
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Modeling File with OPL function
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
mod
dat
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Sample Problem: Assignment
– Objective: Minimize cost
– Constraints: All job should be assigned
Available time constraint
Worker
1
11hr
2
7hr
3
9hr
Costij
Job 1
2hr
Job 2
3hr
Job 3
5hr
Job 4
7hr
Job 5
7hr
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
mod
dat
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Sample Problem: Assignment 2
– Objective: Minimize cost
– Constraints: All job should be assigned
Available time constraint
Job assignment constraint
Worker
1
11hr
2
7hr
3
9hr
Costij
Job 1
2hr
Job 2
3hr
Job 3
5hr
Job 4
7hr
Job 5
7hr
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Sample Problem: Assignment
forall( i in workers : i==1 || i==3)
: forall 에도 if 문을 사용 가능
※ || : or, && : and
※ ‘==‘, ‘=‘, ‘!=‘ 이 사용
가능
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
mod
dat
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Homework #2: Covering Problem
– Objective: Minimize cost
– Constraint: All node should be covered
3
2
1
4
: center
5
6
7
8
9
: covered
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Homework #2: Covering Problem
3
2
1
Dat 파일 Data
4
5
6
7
8
9
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Homework #3 : Assignment Problem : Minimize Difference
– Objective: Minimize difference of working time
– Constraint: All job should be assigned
Target Workload
Worker 1 :
Worker 2 :
Job 1
Job 2
Worker 3 :
Worker 4 :
Worker 5 :
Job 4
Job 8
Job 10
Job 6
Job 3
Minimize Difference
Job 5
Job 7
Job 9
Job 11
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Homework #3 : Assignment Problem : Minimize Difference
# of Worker: 3
# of Job: 7 T
W: 4
Worker 1
Worker 2
Worker 2
Job 1
2
5
3
Job 2
4
2
6
Job 3
7
5
4
Job 4
9
5
6
Job 5
2
1
5
Job 6
6
1
5
Job 7
8
5
2
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Homework #4 : Assignment Problem : Minimize Over Working
– Objective: Minimize over working time
– Constraint: All job should be assigned
Target Workload
Worker 1 :
Worker 2 :
Job 1
Job 2
Worker 3 :
Worker 4 :
Worker 5 :
Job 4
Job 8
Job 10
Minimize Over Working
Job 6
Job 3
Job 5
Job 7
Job 9
Job 11
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Homework #4 : Assignment Problem : Minimize Over Working
# of Worker: 3
# of Job: 7 T
W: 4
Worker 1
Worker 2
Worker 2
Job 1
2
5
3
Job 2
4
2
6
Job 3
7
5
4
Job 4
9
5
6
Job 5
2
1
5
Job 6
6
1
5
Job 7
8
5
2
6.1 Deterministic Models in OR
OPL 함수(sum, forall, if)
• Homework #2, #3, #4
– 새로운 OPL 프로젝트를 작성하고 각 문제에 대한 OPL Code를 작성하여
Optimal solution 도출하기
– 제출형식: 각 문제에 대한 Dat, Mod, Ops 및 Configuration이 담긴 OPL 프로젝
트 파일 및 결과값을 캡쳐 한 그림파일과 함께 압축하여 제출하기
OPL 값읕 잉룁
경영과학 시스템 설계
OPL Data Import/Export
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
– Data import/export
•
•
•
dat: 입력만 가능하며 불편함
excel: 입출력 가능
database
6.1 Deterministic Models in OR
OPL Data Import/Export
• Sample Problem: Assignment 2
– Objective: Minimize cost
– Constraints: All job should be assigned
Available time constraint
Job assignment constraint
Worker
1
11hr
2
7hr
3
9hr
Costij
Job 1
2hr
Job 2
3hr
Job 3
5hr
Job 4
7hr
Job 5
7hr
6.1 Deterministic Models in OR
OPL Data Import/Export
6.1 Deterministic Models in OR
OPL Data Import/Export
mod
dat
6.1 Deterministic Models in OR
OPL Data Import/Export
mod
dat
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
1. Excel 파일 생성
•
•
프로젝트 파일이 있는 곳에 Excel 파일을 생성, 일반적으로 C:\Documents and Settings\유저 이름
\opl 에 프로젝트 파일 생성
C:\Documents and Settings\유저 이름\opl\프로젝트폴더명 에 Assignment.xls 파일을 생성
1. Excel 파일에 데이터 입력
3. Dat 파일을 Excel 파일과 연동
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
3. Dat 파일을 Excel 파일과 연동
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
3. Dat 파일을 Excel 파일과 연동
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
3. Dat 파일을 Excel 파일과 연동
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
3. Dat 파일을 Excel 파일과 연동
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
3. Dat 파일을 Excel 파일과 연동
mod
dat
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
3. Dat 파일을 Excel 파일과 연동
SheetConnection
엑셀 파일을 OPL과 연결하는 함수
sheet
연결하고자 하는 엑셀파일을 OPL
에서 부르는 이름, Sheet1, sht1 등
다양한 이름 가능.
(“Assignment.xls”)
연결하고자 하는 엑셀 파일. 기본
적으로 프로젝트와 같은 폴더에 있
어야 함. 파일 확장자가 xlsx 일 경
우 xlsx로 입력해야 함
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
3. Dat 파일을 Excel 파일과 연동
worker
값을 불러오고자 하는 데이터
from SheetRead
엑셀 파일에서 데이터를 불러오는
함수
( sheet,
값을 불러오고자 하는 엑셀 파일로
SheetConnection에 의해 연결된
엑셀 파일
“sheet1!B1:B1”)
엑셀 파일에서 값을 불러오고자
하는 부분. “sheet1!” 는 엑셀 시
트이름을 나타내며, B1에서 데
이터 호출
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
3. Dat 파일을 Excel 파일과 연동
x
값을 저장하고자 하는 데이터
(선언한 결정변수
to SheetWrite
엑셀 파일에 결과를 저장하는 함수
( sheet,
값을 저장하고자 하는 엑셀 파일로
SheetConnection에 의해 연결된
엑셀 파일
“sheet2!B2:D6”)
엑셀 파일에서 값을 저장하고자
하는 부분. “sheet2!” 는 엑셀 시트
이름을 나타내며 B2~D6까지의 매
트릭스에 데이터 입력
6.1 Deterministic Models in OR
OPL Data Import/Export
• OPL Data Import/Export
3. Dat 파일을 Excel 파일과 연동
2 개 이상의 엑셀 파일을 동시에
연동할 수 있음
이럴 경우 시트 이름이 달라야 함
Ex) sheet, sheet2
6.1 Deterministic Models in OR
OPL Data Import/Export
• Homework #5
–
Homework #1 데이터를 excel에서 받아오도록 변경
OPL 값읕 잉룁
경영과학 시스템 설계
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Data Tuple
– Tuple
•
•
테이블형 데이터
Name
Cost
Skill 01
Skill 02
Kim
20
1
1
Lee
10
1
0
3차원 데이터 입력을 위해서는 반드시 Tuple을 사용해야 함
Given data : 𝑐𝑐𝑐𝑐𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖
i
j
t (?)
6.1 Deterministic Models in OR
OPL Data Tuple
• Sample Problem: Production Planning
Products
Input
Machine 1
Machine 2
Machine 3
Machine 4
Machine 5
Stage 1
Stage 2
Stage 3
t=1
Stage 1
Stage 2
Stage 3
t=2
Stage 1
Stage 2
Stage 3
t=3
Stage 1
Stage 2
Stage 3
t=4
Outs
…
…
…
6.1 Deterministic Models in OR
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
• Sample Problem: Production Planning
–
Tuple이 아닐 때의 입력 방식: 3차원 data를 표현할 수 없어 엑셀에서 데이터를 호출하거나
데이터를 내보낼 수 없음
𝑖𝑖:기종 ( 1~3 ), 𝑗𝑗:공정 (1~3), 𝑘𝑘:설비(1~5), 𝑡𝑡:기간 (day, 1~4)
6.1 Deterministic Models in OR
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
1. Data import 부분
mod
dat
2. Modeling 부분
3. Data export 부분
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple mod ( Data import # 1)
Table: product
i
…
Tuple 형태 선언 :
tuple : 새로운 tuple의 형태를 선언
하겠다는 의미
여기서 tuple은 데이터의 집합을
의미함
key int i:
key는 해당 데이터가 해당 tuple의
key data임을 의미. key data의 값은
각 데이터마다 유일하게 존재
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple mod ( Data import # 2)
Table: iWIP
i
j
iWIP_
qty
…
…
…
Tuple 형태 선언 :
tuple : 새로운 tuple 선언
key int i: 해당 테이블의 key data 선언
key int j: 해당 테이블의 key data 선언
int iWIP_qty: 해당 테이블의 data로
initial WIP에 대한 데이터를 의미함
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple mod ( Data import # 3)
Table: productivity
i
j
k
Prod
_qty
…
…
…
…
Tuple 형태 선언 :
tuple : 새로운 tuple 선언
key int i: 해당 테이블의 key data 선언
key int j: 해당 테이블의 key data 선언
key int k: 해당 테이블의 key data 선언
float prod_qty: 해당 테이블의 data로
productivity에 대한 데이터를 의미함
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple mod ( Data import # 4)
Tuple 집합 선언 :
{product} : product이란 tuple의
집합을 선언
products=…;: product tuple의 집합의
이름을 products로 선언
‘…’: products의 정보를 dat에서 받아
옴
Table의 집합: productivitys
i
j
k
Prod
_qty
1
1
1
0.8
1
1
2
1.2
…
…
…
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple mod ( Data import # 5)
변수 선언:
Tuple을 이용한 변수 선언 시 tuple의
집합이 []안에 들어감
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple mod ( Modeling # 1)
6.1 Deterministic Models in OR
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple mod ( Data export # 1)
결정변수를 range의 형태로 선언했다
하더라도 data export 시, 3차원 이상의
변수는 tuple을 이용해 export 시켜야
함
Table: X_Tuple
i
j
k
t
…
…
…
…
X_qty
X 변수의 결과 값을 담아줄 table
생성
위에서 생성한 tuple의 집합을 생성
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple mod ( Data export # 2)
결과 데이터를 tuple의 집합에
옮기는 과정
execute 함수: opl 모델링의 앞이나
뒤에 사전/사후 프로세스를 위한
부분
C++, Java처럼 일반적인 코딩을
사용
※ 디버깅이 어려운 특징이 있음
execute: execute 함수 선언
export: execute 함수의 이름으로
변수나 특정 opl 함수에 겹치지
않으면 아무 이름이나 사용 가능
※ 어떤 변수든 value를 사용하면
오작동할 확률이 높음. value는 어떤
변수의 이름이든 사용하지 말 것
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple mod ( Data export # 3)
execute 함수에서의 변수 선언
Execute 함수에서는 변수의 type (i
nt, float, string) 과 상관없이 var로
변수를 선언
모든 products, stages, machines,
times에 대하여 X[pt][st][mc][tm]이
0보다 큰 것만 x_tuples에 값을 더
하라는 의미
x_tuples.add( pt.i, st.j, mc.k, tm.t,
X[pt][st][mc][tm] ):
x_tuples에 다음의 항을 추가하라는
의미
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple dat
열은 정확히 개수가 맞아야 하지만, 행은
정확한 범위가 아닌 좀 더 여유 있게 설
정할 수 있음.
6.1 Deterministic Models in OR
OPL Data Tuple
• OPL Tuple : Key
Key를 사용 시
(product 1, demand: 100 )
Key를 사용하지 않을 시
(product 1, demand: 100 )
𝑋𝑋𝑋𝑋𝑖𝑖
→ sum( pt in products: p
t.product_num==1) x[pt]
𝑋𝑋𝑋𝑋𝑖𝑖
→ sum( pt in products: p
t.product_num==1) x[pt]
→ x[]
→ x[]
6.1 Deterministic Models in OR
OPL 값읕 잉룁
경영과학 시스템 설계
OPL-Debugging, OPS
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• OPS
– Time limit 설정 : 제한 시간이 넘을 시 현재 해답을 넘겨줌
– 알고리즘 설정 : 대용량 문제 풀이의 경우 dual 알고리즘보다 barrier 알고리즘
이 효율적
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• OPS
– Time limit 설정 : 제한 시간이 넘을 시 현재 해답을 넘겨줌
Global time limit을
통해 풀이 제한 시간을
둘 수 있음
Global time limit은 초
단위로 설정
Ex) 1시간: 3600
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• OPS
– 알고리즘 설정 : 대용량 문제 풀이 시
대용량 문제 LP 풀이 시
알고리즘을 Automatic에서
Barrier로 변경
※ Algorithm for continuous
quadratic optimization이
아닌 Algorithm for continu
ous problem을 변경
※ MIP 해당 없음
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• OPS
– 알고리즘 설정 : 대용량 문제 풀이 시
알고리즘에 대한 일반적인 설정
LP 문제에 대한 설정
MIP 문제에 대한 설정
Barrier 알고리즘에 대한 설정
Network 알고리즘에 대한 설정
Shifting 알고리즘에 대한 설정
CP 알고리즘에 대한 설정
디스플레이 및 구동에 대한 설정
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Infeasible : 모델 혹은 Data 상의 오류
•
•
•
•
Small size에서 LP 파일을 통한 검증
제약식 이름 설정
Assert를 통한 Data 검증
주석 처리를 통한 모델 검증
– Out of memory : memory 부족으로 인한 오류
•
•
Oplrun을 이용한 구동
64bit 운영 체제 활용
– Error : 코드 상의 오류
•
•
OPL 자체의 Debugging 기능 지원
Appendix에 대표적인 오류 사례 첨부
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Infeasible : Small size에서 LP 파일을 통한 검증
1.
2.
3.
Ops 더블 클릭
Language, run 클릭
Export format:
LP format 선택
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Infeasible : Small size에서 LP 파일을 통한 검증
프로젝트 폴더 내에 LP 파
일이 생성됨 메모장 등을
통해 열어 볼 수 있음
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Infeasible : 제약식 이름 설정
forall 다음에 제약 이름
설정 가능
제약 이름 설정 방법:
제약이름:
ex) ct_job_assignment:
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Infeasible : 제약식 이름 설정
LP에 이름이 설정됨
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Infeasible : 제약식 이름 설정
Infeasible 시 conflict에
충돌되는 제약 표시
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Infeasible : Assert를 통한 Data 검증
Assert를 통해 데이터
가정 사항 검증 가능
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Infeasible : 주석 처리를 통한 모델 검증
주석을 통해 문제가 될
수 있는 제약식이 없는
상태에서 모델을 돌려
봄
주석 방법:
/* lines */ : 여러 줄
//
:한줄
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Infeasible : 주석 처리를 통한 모델 검증
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Out of memory : oplrun을 이용한 구동
처음 실행 시:
Run -> 외부도구 ->
외부 도구 구성
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Out of memory : oplrun을 이용한 구동
oplrun 클릭
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Out of memory : oplrun을 이용한 구동
실행 클릭
6.1 Deterministic Models in콘솔에서
OR문제 풀이
OPL-Debugging, OPS
• Debugging
– Out of memory : oplrun을 이용한 구동
※ oplrun을 이용한 문제 풀이 시
해답 및 데이터가 display 되지
않으므로 data export를 통해
결과를 받아봐야 함
※ 디버깅 등 여러 기능이
지원되지 않으므로 모델이
검증된 상태에서 돌릴 것
※ oplrun이 일반적인 구동보다
더 빨리 문제를 품
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Out of memory : 64bit 운영 체제 활용
•
운영 체제가 64bit일 경우, yscec에 올라와 있는 OPL6.3_64bit.exe를 설치
Mathematical
programming -> General
Memory avalia… (사용할
수 있는 메모리)를 변경
Ex) 1024, 2048 등등
※ 32bit의 경우 늘려도 별
다른 효과 없음
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Error : 코드 상의 오류
에러 발생 시 문제점에
오류 공지
더블 클릭하면 문제가
발생한 곳으로 이동
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Error : Appendix, 대표적인 오류
엑셀의 입력 size가 잘 안 맞는 것, 잘 맞는지 확인해 볼 것
이 부분이 엑
셀과 안 맞음
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Error : Appendix, 대표적인 오류
엑셀 불러오는 부분에 오타가 있을 확률 높음
이 부분에 오타
있을 확률 높음
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Error : Appendix, 대표적인 오류
값을 저장하려는 엑셀이 열려 있는 것임
Tuple 열의 개수가 안 맞는 것임
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Error : Appendix, 대표적인 오류
저장하려는 Tuple의 열의 개수가 안 맞는 것임
저장하려는 Tuple의 행의 개수가 부족한 것임
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Error : Appendix, 대표적인 오류
Tuple에 숫자를 집어 넣은 경우 다음과 같은 오류가 남
Tuple은 숫자가 아님
옆과 같이 표현 불가
아래와 같이는 가능
만약 key가 두 개면 < key1,
key2> 와 같은 형태로 표현
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Error : Appendix, 대표적인 오류
Tuple 자리에 서로 다른 Tuple들을 넣은 경우
x의 m과 p의 자리가 바뀜
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Error : Appendix, 대표적인 오류
Tuple들을 잘못 비교 했을 경우에 나는 오류
m과 pm은 서로 다른
tuple이므로 비교할 수 없음
6.1 Deterministic Models in OR
OPL-Debugging, OPS
• Debugging
– Error : Appendix, 대표적인 오류
Tuple을 int와 잘못 비교 했을 경우에 나는 오류
tuple은 숫자가 아님 tu
ple안의 data가 숫자일
수는 있음