최적화 문제 해결 현대 생산  운영관리 부산대학교 산업대학원 2012 년 2 학기 하병현.

Slides:



Advertisements
Similar presentations
2 장 자료형 및 연산자 - 김욱동 -. 목 차목 차  변수  자료형  유니코드  리스트  튜플  세트  사전  부울  얕은 / 깊은 복사.
Advertisements

Python RaspberryPi Sejin Oh. Raspberry Pi Python  참과 거짓  Python 자료형의 참과 거짓을 구분 짓는 기준은 다음과 같다. 2 참과 거짓 자료형참 or 거짓 “” 가 아닌 문자열 ( 예 : “python”) 참 “” 거짓.
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
15 장. 알고리즘의 설계 알고리즘 설계 학습목표 기본 패턴 패턴의 한계점 일곱 가지 패턴의 알고리즘 설계 기법을 이해한다.
고전에서 미래를 읽다(5) 영양괘각(羚羊掛角) 영양이 훌쩍 뛰어 나뭇가지에 뿔을 걸다
Vision System Lab, Sang-Hun Han
TSP 알고리즘 구현 서왕덕.
2017 법인관련 개정세법 곽장미 세무사.
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
제 7 장 정수계획법 (IP : Integer Programming)
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
부분집합의 합 구하기 문제 부분집합의 합 구하기(Sum-of-Subsets) 문제
CHAP 10:그래프 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 10 : 그래프 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 62).
GPIO RaspberryPi Sejin Oh.
쉽게 배우는 알고리즘 5장. 검색트리
Genetic Algorithm 신희성.
Dynamic Programming.
 Branch-and-Bound (분기한정)
경영과학(Ⅰ) 제4장 쌍대이론과 민감도 분석 서론 쌍대이론 쌍대심플렉스법 민감도분석 secom.hanbat.ac.kr.
알고리즘(Algorithm) – Greedy Method (탐욕적 방법)
김민경 제 7장. 정수계획모형 경영과학 가을 김민경
컴퓨터 활용 및 실습 Chapter 3 수식과 함수 김 정 석
Chapter 13 변수 범위.
작업장에서 불의의사고로 절단사고가 발생했다면
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
-제어문, 함수, 클래스- IS lab. 김건영 Python -제어문, 함수, 클래스- IS lab. 김건영
4장 제어문 선택문: if 문, if – else 문, switch 문
5장 이름, 바인딩, 영역(2) 순천향대학교 컴퓨터공학과 하상호.
동적 계획(Dynamic Programming)
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
제 7 장 정수계획법 정수계획법의 모형화 정수계획법의 해법 분단탐색법 정수계획법 적용사례.
Introduction to Programming Language
과거사 청산, 밝은 미래를 위하여 역사 청산 비교 분석-독일과 우리나라.
엑셀 2007 엑셀 함수(Excel Function).
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
Homework #5 (1/3) Backtracking, Branch-and-Bound
[CPA340] Algorithms and Practice Youn-Hee Han
4장 - PHP의 표현식과 흐름 제어-.
Python.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
5장 동적계획법 (Dynamic Programming)
작성일 참고서적 – Programing Game AI by Example
두근두근 파이썬 수업 14장 프로젝트 II.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
Part 06 세상을 변화시키는 연산자 안산1대학 디지털정보통신과 임 성 국.
Traveling Salesman Problem
2010년 연말정산 교육자료 센터운영팀 인사파트
3장. 탐색.
(생각열기) 횡파와 종파를 구분하는 기준은 무엇인가?? 답 : 진동하는 방법의 차이
Homework #5 (1/3) Backtracking, Branch-and-Bound
탐색 (Search) 컴퓨터가 문제를 자율적으로 해결하기 위해 해 혹은 해에 이르기 위한 경로를 찾아가는 과정
제약이 없는 비선형계획모형 등식제약하의 비선형계획모형 부등식제약하의 비선형계획모형 secom.hanabt.ac.kr
Traveling Salesman Problem – 개요 (1/2)
9장. 특징 선택 오일석, 패턴인식, 교보문고, © 오일석, 전북대학교 컴퓨터공학.
어서와 C언어는 처음이지 제16장.
Lecture 03 제어문과 메소드 Kwang-Man Ko
Algorithms and Practice
C.
어서와 C언어는 처음이지 제22장.
Instruction to Computer
컴퓨터 프로그래밍 및 실습 – 5주차 내장함수 / 외장함수 (1)
Python 기본.
Traveling Salesman Problem – 개요 (1/2)
Traveling Salesman Problem – 개요 (1/2)
Presentation transcript:

최적화 문제 해결 현대 생산  운영관리 부산대학교 산업대학원 2012 년 2 학기 하병현

1 목차  서론  공정별 배치 -- 물량 거리 모형

2 서론  최적화 문제  주어진 대안들 중 목적을 고려하여 가장 나은 것 선택  예제  공정별 배치 문제 -- 물량 - 거리 모형 입력 : 부서 간 물량 및 단위 이송 비용 대안 집합 : 모든 가능한 배치 형태 목적 : 총 이송 비용 최소화  배정 문제 입력 : 각 작업자 별 과업 처리 비용 대안 집합 : 모든 가능한 작업자 - 과업 배정 방법 목적 : 총 비용의 최소화  문제의 난이도  쉬운 문제 e.g., 배정 문제, 표준 수송 계획  어려운 문제 (NP-hard problems) e.g., 물량 - 거리 모형, traveling salesman problems

3 서론  해결 방안  최적화 방법 모든 대안 검토 문제에 특화된 최적화 알고리즘 e.g., 배정 문제 : Hungarian method, 선형 계획 : Simplex method 범용 최적화 방법론 e.g., branch and bound, dynamic programming, A*-search 상용 최적화 소프트웨어 사용  보통 내부적으로 branch and cut 사용  근사해 도출 방법 발견적 기법 (heuristic algorithms) e.g., 물량 - 거리 모형의 최대 비용 부서 인접화 메타 휴리스틱 (meta-heuristics) e.g., simulated annealing, tabu search, genetic algorithms 상용 소프트웨어 사용  보통 내부적으로 메타 휴리스틱 사용  일부만 나열

4 공정별 배치 -- 물량 거리 모형  예제 문제  부서 간 이동 물량  부서 간 단위 물량 당 이동 비용 (D ij C ij ) 물량 한 단위 당, 인접 부서의 경우 1 원, 한 부서를 건너뛸 때마다 1 원이 추가 대각선의 경우 인접 부서로 봄  배치 가능 형태  Quadratic assignment problem  NP-hard

5 공정별 배치 -- 물량 거리 모형  발견적 기법 (gradient-descent 또는 greedy approach) 1. 최초 배치 도출 순서대로 배치 2. 총비용을 감소시킬 수 있는 새로운 배치 도출 모든 인접 부서를 서로 교환해본 후 총비용을 가장 감소시키는 배치 선택 3. 비용이 개선되었다면 단계 2 반복, 아니면 종료

6 공정별 배치 -- 물량 거리 모형  발견적 기법 ( 계속 )  구현 (Python) z0 = 2,778, X = [1, 1, 3, 2, 3, 2, 4, 4]  X[i]: 부서 i 가 위치한 열 L = [[0, 175, 50, 0, 30, 200, 20, 25], [0, 0, 0, 100, 75, 90, 80, 90], [0, 0, 0, 17, 88, 125, 99, 180], [0, 0, 0, 0, 20, 5, 0, 25], [0, 0, 0, 0, 0, 0, 180, 187], [0, 0, 0, 0, 0, 0, 80, 70], [0, 0, 0, 0, 0, 0, 0, 7], [0, 0, 0, 0, 0, 0, 0, 0]] def C(x1, x2): return max(1, abs(x1 - x2)) def total_cost(X): return sum(L[i][j] * C(X[i], X[j]) for i in xrange(7) for j in xrange(i + 1, 8)) ( 뒤에서 계속 )

7 공정별 배치 -- 물량 거리 모형  발견적 기법 ( 계속 )  구현 (Python) ( 계속 ) X0 = X = [1,1,2,2,3,3,4,4] z0 = total_cost(X) while True: updated = False for i in xrange(7): for j in xrange(i + 1, 8): X1 = X[:] X1[i], X1[j] = X1[j], X1[i] z1 = total_cost(X1) if z1 < z0: z0, X0 = z1, X1 updated = True if not updated: break print "z0 = %d, X = %s" % (z0, X0) ( 앞에서 계속 )

8 공정별 배치 -- 물량 거리 모형  최적해 방법 : 모든 대안 검토  발견적 기법의 결과인 2,778 원이 최적인가 ?  모든 대안 [1,1,2,2,3,3,4,4], [1,1,2,2,3,4,3,4], [1,1,2,2,4,4,3,3],... 모두 몇 개 ? 대략 8  7  6  5  4  3  2  1 = 8! =  구현 (Python) z* = 2,510, X = [1, 2, 3, 1, 4, 2, 4, 3]  문제 ? 12! = 479,001,600 30! = 265,252,859,812,191,058,636,308,480,000, z0 = 10**10 for X in permutations([1,1,2,2,3,3,4,4]): z = total_cost(X) if z < z0: z0, X0 = z, X print "z* = %d, X = %s" % (z0, X0)

9 공정별 배치 -- 물량 거리 모형  최적화 수리 모형 ( 문제를 기술하는 한 가지 방법 )  정수 계획 모형  입력 변수 L ij : 부서 i 에서 j 로의 이동 물량  결정 변수 y ik : 부서 i 가 k 번째 열에 있으면 1, 아니면 0  부서 i 가 위치한 열 :  k=1..4 k  y ik  부서 i 와 j 가 떨어진 정도 : max(1, |  k=1..4 k  y ik –  k=1..4 k  y jk |)  Objective min.  i=1..7  j=(i+1)..8 L ij  max(1, |  k=1..4 k  y ik –  k=1..4 k  y jk |)  Constraints  k=1..4 y ik = 1 for i=1,...,8  i=1..8 y ik = 2 for k=1,...,4

10 공정별 배치 -- 물량 거리 모형  최적화 방법 -- 상용 최적화 소프트웨어 사용  구현 (CPLEX) z* = 2,510, y 14 = y 23 = y 32 = y 44 = y 51 = y 63 = y 71 = y 82 = 1 float L[1..8][1..8] = [ [0, 175, 50, 0, 30, 200, 20, 25], [0, 0, 0, 100, 75, 90, 80, 90],... [0, 0, 0, 0, 0, 0, 0, 0] ]; dvar int y[1..8][1..4] in 0..1; minimize sum (i in 1..7) sum (j in (i + 1)..8) L[i][j] * maxl(1, abs(sum (k in 1..4) k * y[i][k] - sum (k in 1..4) k * y[j][k])); subject to { forall (i in 1..8) sum (k in 1..4) y[i][k] == 1; forall (k in 1..4) sum (i in 1..8) y[i][k] == 2; }

11 공정별 배치 -- 물량 거리 모형  근사해 도출 방법 -- 상용 소프트웨어 사용  구현 (MS Excel) z = 3,147  엑셀은 이 문제는 제대로 해결하지 못하는 것으로 보임 참고 : Google 에서 “ 엑셀 2007 해찾기,” “ 엑셀 해찾기,” “excel 2007 solver,” “excel solver” 등으로 검색

12 공정별 배치 -- 물량 거리 모형  근사해 도출 방법 -- 상용 소프트웨어 사용 ( 계속 )  구현 (Open Solver for Excel) z = 3,107

13 공정별 배치 -- 물량 거리 모형  근사해 도출 방법 -- 메타 휴리스틱 (simulated annealing)  구현 (Python) z* = 2,510 / 2,510 / 2,510 / 2,510 / 2,510 / 2,510 / 2,510 / 2,510 / 2,510 / 2, from random import shuffle, randrange, random from math import exp for _ in xrange(10): X = [1, 1, 2, 2, 3, 3, 4, 4] shuffle(X) X0 = X[:] z = z0 = total_cost(X) t, pi, EPSILON = 100, 0.999, while t > EPSILON: X1 = list(X) i, j = randrange(8), randrange(8) X1[i], X1[j] = X1[j], X1[i] z1 = total_cost(X1) if z1 <= z or random() < exp((z - z1) / t): X, z = X1, z1 if z < z0: X0, z0 = X[:], z t *= pi print "z0 = %d, X = %s" % (z0, X0)

14 공정별 배치 -- 물량 거리 모형  Medium-size problem (16 개의 부서 )  실험 결과  Gap = (z – z*) / z*  100% L = [[0, 166, 147, 72, 37, 92, 69, 153, 47, 85, 108, 180, 91, 42, 147, 116], [0, 0, 35, 181, 197, 159, 179, 48, 141, 178, 131, 84, 2, 75, 115, 181], [0, 0, 0, 193, 85, 171, 37, 157, 101, 0, 139, 68, 162, 127, 0, 89], [0, 0, 0, 0, 171, 33, 51, 172, 22, 105, 32, 193, 157, 79, 0, 50], [0, 0, 0, 0, 0, 92, 186, 4, 101, 136, 100, 159, 99, 193, 113, 109], [0, 0, 0, 0, 0, 0, 78, 111, 65, 107, 44, 21, 21, 115, 125, 85], [0, 0, 0, 0, 0, 0, 0, 0, 147, 173, 184, 166, 178, 184, 99, 66], [0, 0, 0, 0, 0, 0, 0, 0, 135, 40, 159, 167, 177, 110, 189, 108], [0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 125, 200, 182, 155, 0, 115], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 119, 166, 33, 141, 5], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 155, 53, 160, 2], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 134, 0, 106], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 98, 130], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] 해결 방법총비용 Gap 계산시간비고 최적화 방법상용 소프트웨어 CPLEX31,338– 초최적해 근사해 도출 방법 발견적 기법 34,48610% < 0.1 초 상용 소프트웨어 OpenSolver36,71217% < 0.1 초초기해보다 나쁨 메타 휴리스틱 Simulated annealing31,3380% 9.2 초 10 회 수행 중 5 회