37
5장: 정수계획 및 조합최적화 모형 정수계획? 정수및 조합최적화 모형의 발견적 기법 (heuristics) 최적해 기법: 분지 한계법

5장: 정수계획 및 조합최적화 모형polytope.snu.ac.kr/courses/ms2015/IP.pdf · 준비비용이 있는 생산비용 함수 최대 이익을 거두는 생산량 문제는

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

5장: 정수계획 및 조합최적화 모형

정수계획?

정수및 조합최적화 모형의 예

발견적 기법 (heuristics)

최적해 기법: 분지 한계법

예- 11구단의 타자 선발프로야구 제 11구단 단장 홍빈은 2014년 시즌을 위한 라인업을 구상 하고 있다. 현재 공격력을 극대화하기 위한 타자들을 선발하고 있다.

홍빈은 세이버매트릭을 수용하여, 타자의 공격력 척도 중에서 출루율을 가장 중요하게 생각하고 있다. 그리고 경험으로부터 선수들의 출루율은 가합성을 가진다고 가정한다. 예를 들어, 출루율이 3할대인 선수 둘은출루율이 6할인 선수 하나와 대등한 공격력을 가진다.

제 11구단의 2014년 타선 선발을 위한 예산은 20억이다. 홍빈이 고려중인 타자들의 연봉과 출루율은 다음과 같다.

타자 연봉(억) 출루율김상준 15 0.55

팀 브래들리 13 0.5

송상현 8 0.5

박규동 7 0.4

현규식 3 0.4

주상기 3 0.3

이경석 1.5 0.2

결정변수

xj =

⇢1,0,선수 j를 선발하는 경우,그렇지 않은 경우.

목적함수: 출루율의 최대화max 0.55x1 + 0.50x2 + 0.45x3 + 0.40x4 + 0.35x5 + 0.29x6 + 0.20x7

제약조건: 예산15x1 + 13x2 + 8x3 + 7x4 + 3x5 + 2.5x6 + 1.5x7 20

예- 11구단의 타자 선발 (계속)

최적화 모형

max 0.55x1 + 0.50x2 + 0.45x3 + 0.40x4 + 0.35x5 + 0.29x6 + 0.20x7

sub to 15x1 + 13x2 + 8x3 + 7x4 + 3x5 + 2.5x6 + 1.5x7 20,

xj 2 {0, 1}, 81 j 7.

지금까지의 모형에 비해 가장 큰 특징은 변수가 가지는 값이 연속적이 아니고 이산적이라

예- 11구단의 타자 선발 (계속)

정수선형계획문제

zIP = min c

Tx

st Ax = b,

x � 0,xj integer, 8 j 2 M ✓ N = {1, 2, . . . , n}.

전체 변수 집합 N={1,2,...,n}의 부분집합 M이 정수 값을 갖도록 추가적인 제약을 갖는 선

M=N이면 순수정수계획문제, M N이면 혼합정수계획문제라고 한다.

(

max 7x1 +6x2

st 4x1 �3x2 4,

4x1 +3x2 14,

x1 � 0, x2 � 0,

x1, x2 integer.

정수계획문제는 다면체에 속한 격자점 위에서 선형목적

정수선형계획문제 (계속)

실용적 해법- 라운딩(rounding): 선형계획완화문제를 풀고 최적해가 정수가 아니면 소수 부분을 올림, 내림 또는 반올림하여 정수해로 바꾼다.

라운딩은 해의 규모가 큰 경우 대체적으로 좋은 해를 준다.

그러나 라운딩은 목적함수의 격차가 큰 해를 생성할 수 있으며, 제약조건을 모두 만족하는 가능해를 보장하지 못할 수도 있다. 꼭지점에서 최적해가 발생하는 선형계획문제와는 달리, 격자점 중에서 최적해를 구하는 정수계획문제는 어려운 문제이다.

정수선형계획문제 (계속)

위와 같이 한개의 품목을 여러개 선택할 수 있는 정수 배낭문제와 한개까지 고를 수 있는 0-1 배낭문제가 있다.

max p1x1 + p2x2 + · · ·+ pnxn

st w1x1 + w2x2 + · · ·+ wnxn W,

xj � 0, integer.

n개의 품목이 있다. 품목 j의 단위당 효용은 pj이고 무게는 wj

이다. 전체 무게의 합이 W를 넘지 않고 효용의 합이 최대가 되도록 품목을 선택하라.

조합최적화문제의 예- 배낭문제 (knapsack problem)

조합최적화문제의 예- 배낭문제 (knapsack problem)

다음의 데이터를 보고 문제를 만들어 보라. 단순한 배낭문제를 넘어 추가적인 제약들을 고려 해보라.

음식 가격(원) 열량(K cal)

울타리콩밥 600 447

쌀밥 500 477

쇠고기무국 500 57

순두부버섯 찌개 2000 323

탕수육 1500 688

연북어 양념구이 800 221

충무식 오징어무침 800 221

잡채 600 189

감자채 쇠고기볶음 600 67

절임 고추무침 400 54

고구마 범벅 500 76

포기김치 350 45

조합최적화문제의 예- 집합커버문제 (set cover problem)

인접한 6개의 도시 중에 소방서를 설치하려고 한다. 단, 모든 도시는 출동시간이 15분을 넘지 않는 인근 도시에 소방서가 있어야 한다. 각 도시에서 15분 이내에 있는 도시를 나열하면 다음과 같다.

city1 1, 22 1, 2, 43 3, 4, 54 2, 3, 4, 65 3, 5, 66 4, 5, 6

정수계획문제로 모형화하라.

최적해가 아니더라도 좋은 해를 구할 수 있는 ‘발견적 해법’을 생각해보라.

결정변수

조합최적화문제의 예- 집합커버문제 (set cover problem)

xi =

⇢1, i

0,번째 도시에 소방서를 설치하는 경우,

그렇지 않은경우.목적함수 : 설치하는 소방서 수의 최소화

min x1 +x2 +x3 +x4 +x5 +x6

제약조건 : 각 도시를 15분안에 커버하는 도시에 소방서가 최소 하나 있어야 한다.

x1 +x2 � 1,x1 +x2 +x4 � 1,

+x3 +x4 +x5 � 1,x2 +x3 +x4 +x6 � 1,

x3 +x5 +x6 � 1,x4 +x5 +x6 � 1,

최적화 모형

조합최적화문제의 예- 집합커버문제 (set cover problem)

min x1 +x2 +x3 +x4 +x5 +x6

st x1 +x2 � 1,x1 +x2 +x4 � 1,

+x3 +x4 +x5 � 1,x2 +x3 +x4 +x6 � 1,

x3 +x5 +x6 � 1,x4 +x5 +x6 � 1,

xj 2 {0, 1}, 8j.

근무지를 포함 n개의 지점을 매일 순회하는영업사원이 있다. 지점 i와 j 사이의 이동시간을 cij 라고 하자. 소요 시간이 가장 적은 순회 (tour)를 구하라.

조합최적화문제의 예- 세일즈맨순회문제 (TSP)

최근이웃기법(nearest neighbor heuristic): 임의의 마디에서 출발하여 가장 가까운이웃 마디를 선택하며 순회를 구성

조합최적화문제의 예- TSP의 발견적 해법

앞의 예에, 마디 1에서 시작하여, 최근이웃기법을 적용하면

한쌍바꾸기(1-opt heuristic): 현재 순회에 속하는 한쌍 호의 양끝을 교환하여 순회를 개선하는 기법

조합최적화문제의 예- TSP의 발견적 해법

부분탐색기법(local search method)

한쌍바꾸기가 항상 최적해를 찾는 것은 아니다.

조합최적화문제의 예- TSP의 발견적 해법

한쌍바꾸기 최적해 최적해

A 이면 B이다.

어떤 품목을 생산 하면 일정량 이상을 생산해야 한다.

두열차가 같은 트랙을 사용하면 일정 시간 간격을 유지해야 한다.

...

‘모형 1은 생산하는 경우, 1000대 이상이어야 한다.’ 생산량 = x1, ‘x1 > 0 ⇒ x1 ≥ 1000’ 또는 ‘x1 ≤ 0 or x1 ≥ 1000.’

M을 매우 큰 수라고 하면 이는 다음과 동치이다. ‘x1 ≤ My, or1000 - x1≤M(1-y).’

조합최적화문제의 예- 논리조건의 정수모형

A 이거나 B이다: 논리합 제약식

분할불가작업 단일기계 스케쥴링

한 개의 기계를 사용하는 두 개의 작업, i =1, 2 를 생각하자. 각 작업은 의 시간이 소요되며, 중단 없이 연속적으로 완성되어야 한다.

따라서 각 작업의 시작 시간을 라고 하면, 다음이 성립해야 한다:

이는 다음과 같은 정수제약조건으로 표현할 수 있다.

조합최적화문제의 예- 논리조건의 정수모형 (계속)

‘s1 + d1 s2’ or ‘s2 + d2 s1’

s1 + d1 � s2 My, s2 + d2 � s1 M(1� y),y 2 {0, 1}

준비비용이 있는 생산비용 함수

생산량을 x 라고 할 때 생산비용이 다음과 같은 문제를 생각하자.

K를 준비비용 또는 고정비용이라고 한다. 다음과 같은 문제를 생각하자.

조합최적화문제의 예- 논리조건의 정수모형 (계속)

C(x) =

⇢K + cx, x > 0,0, x = 0.

준비비용이 있는 생산비용 함수

최대 이익을 거두는 생산량 문제는 다음과 같이 모형화 할 수 있다. 세 제품의 생산량을 , , 그리고 라고 하자.

조합최적화문제의 예- 논리조건의 정수모형 (계속)

max 6x1 + 4x2 + 7x3 � 200y1 � 150y2 � 100y3

s.t. 3x1 + 2x2 + 6x3 150,

4x1 + 3x2 + 4x3 160,

My1 � x1,

My2 � x2,

My3 � x3,

x1, x2, x3 � 0,

y1, y2, y3 2 {0, 1}.

x와 y의 관계식에 의해, x>0일 때, 해당 준비비용이 발생함을 확인하라. 한편 x=0일 때, 왜 준비비용이 발생하지 않는가 설명하라.

일반적인 정수선형계획문제의 정확한 최적해를 빠른시간에 구하는 알고리듬을 기대하기 힘들다.

최적해를 보장하기 위해서는 모든 해를 나열하여 비교하는 열거법(enumeration)을 사용할 수밖에 없다.

해의 개수는 문제의 크기에 따라, 급격히 증가하기 때문에, 단순한 열거법은 실용적인방법이 될 수 없다.

따라서, 최적해를 구해야 한다면, 추가 정보를 사용하여, 경우의 수를 줄이는 것이 필요하다. 이러한 방법은 대부분 분지한계법(branch-and-bound)에 기반을 두고 있다.

분지한계법은 원래 문제를 부문제(subproblem)로 분할하고, 부분문제의 최적해들로 부터 원래 문제의 최적해를 구하는 분할정복(divide-and-conquer)의 원리를 사용한다.

최적해법

최적해법 (계속)-상한과 하한

열거하는 해의 수를 줄이는데 가장 유용한 정보는 최적해 목적함수 값의 범위, 즉 상한과 하한이다.

최소화문제에서, 어떤 부문제의 목적함수 값 의 하한이 최적목적함수 값 의 상한보다 크다면 이므로 그 부문제는 이후 고려하지 않아도 된다.

최소화문제를 기준으로 하자.

상한을 구하는 법 : 임의의 가능해의 목적함수 값은 최적목적함수 값 의 상한이 된다.

임의의 가능해의 목적함수 값이 최적목적함수 값 보다 작을 수 없기 때문이다.

하한을 구하는 법 : 선형계획 완화문제의 최적목적함수 값 는 의 하한이 된다: .

정수조건이 완화되어 해집합이 더 크기 때문에 더 좋은 최적 목적함수 값을 가져야 한다. 즉, 같거나 작아야 한다.

최적해법 (계속)-분지 한계법

정수덮개(integral hull)

최적해법 (계속)-이상적인 선형완화문제

정수덮개를 구할 수 있는 방법은 없다. (없을 것이라고 학계는 믿고 있다.)

정수덮개에 보다 가까운 완화문제를 구하는 것이 현실적인

다음의 배낭문제를 분지한계법으로 풀어보자.

최적해법 (계속)-분지한계법의 예

max 165x1 + 130x2 + 222x3 + 90x4 + 55x5

s.t. 5x1 + 4x2 + 7x3 + 3x4 + 2x5 14,

xj 2 {0, 1}, 8j.

선형계획완화문제는 다음과 같다.

max 165x1 + 130x2 + 222x3 + 90x4 + 55x5

s.t. 5x1 + 4x2 + 7x3 + 3x4 + 2x5 14,

0 xj 1, 8j.

변수들을 의 내림차순으로 정리하고 그 순서대로 변수 값을 우변의 여유가 있을 때까지 1 또는 가능한 최대 값으로 놓으면 최적해를 구한다.

최적해 :

초기화 단계 :

선형계획완화문제의 최적해를 구한다.max 165x1 + 130x2 + 222x3 + 90x4 + 55x5

s.t. 5x1 + 4x2 + 7x3 + 3x4 + 2x5 14,

0 xj 1, 8j.

따라서 이 최대화문제 정수최적해의 목적함수 값 는 453을 넘지 않는 것을 알수있다. 즉, 초기 상한은 U=453가 된다. 하한은 아직 없다 : L =

x1 = x2 = 1, x3 = 57 , x4 = x5 = 0, zLP = 453 4

7 .

�1

최적해법 (계속)-분지한계법의 예

반복단계 1:

분지단계 : 분할이 끝나지 않은 문제를 하나 선택한다. 그 변수 하나를 선택하여 문제를 부문제로 분지한다. 예를 들어, 완화문제 최적해에서 0.5에 가장 가까운 값을 가진 을 선택, 이 0 또는 1을 갖는 두개의 부문제를 생각할 수 있다.

최적해법 (계속)-분지한계법의 예

max 165x1 + 130x2 + 90x4 + 55x5

s.t. 5x1 + 4x2 + 3x4 + 5x5 14,

xj 2 {0, 1}, 8j = 1, 2, 4, 5.

(1)

max 165x1 + 130x2 + 90x4 + 55x5 + 222

s.t. 5x1 + 4x2 + 3x4 + 5x5 7,

xj 2 {0, 1}, 8j = 1, 2, 4, 5.

(2)

반복단계 1 (계속)

한계단계 : 부문제 (1)과 (2)의 완화문제를 풀어, 상하한을 개선하고 현재 분지가 끝나지 않은 문제들을 더 이상 분지 할 필요가 있는지 판단한다.

(1)의 선형완화문제의 최적해는

(2)의 선형완화문제의 최적해는

종합하면 상한은 U=452로 개선된다. 하한은 아직 구하지 못함.

(1)과 (2) 모두 분지를 끝낼 이유가 없음

x1 = x2 = 1, x3 = 0, x4 = 1, x5 = 25 , zLP = 407.

최적해법 (계속)-분지한계법의 예

x1 = 1, x2 = 12 , x3 = 1, x4 = x5 = 0, zLP = 452

반복단계 2: 분지단계 : 분지가 끝나지 않은 문제를 하나 선택한다. 현재 (1)과 (2)가 있다. 그 중에서 선형완화 최적목적함수 값이 큰 (2)를 선택한다. 이유는 상한이 제일 커서 목적함수가 큰 가능해를 가질 개연성이 커 보인다는 것이다. (실제로 보장은 없다.

문제 (2)의 변수 하나를 선택하여 부문제로 분지한다. 예를 들어, 완화문제 최적해에서 0.5에 가장 가까운 를 선택하여 가 0과 1 값을 갖는 두개의 부문제를 생각할 수 있다.

최적해법 (계속)-분지한계법의 예

(3)

(4)

max 165x1 + 90x4 + 55x5 + 222

s.t. 5x1 + 3x4 + 5x5 7,

xj 2 {0, 1}, 8j = 1, 4, 5.

max 165x1 + 90x4 + 55x5 + 352

s.t. 5x1 + 3x4 + 5x5 3,

xj 2 {0, 1}, 8j = 1, 4, 5.

반복단계 2 (계속)

한계단계 : 부문제 (3)과 (4)의 완화문제를 풀어, 상하한을 개선하고 현재 문제들을 더 이상 분지 할 필요가 있는지 판단한다.

(3)의 선형완화문제의 최적해는

(4)의 선형완화문제의 최적해는

종합하면 상한은 U=451로 개선된다. 하한은 아직 구하지 못함.

아직 분지를 끝내야할 문제가 없음

최적해법 (계속)-분지한계법의 예

x1 = 1, x2 = 0, x3 = 1, x4 = 23 , x5 = 0, zLP = 447

x1 = 35 , x2 = 1, x3 = 1, x4 = x5 = 0, zLP = 451

최적해법 (계속)-분지한계법의 예

지금까지 종합하면 다음과 같다.

현재 분지가 끝나지 않은 세개의 부문제가 존재

반복단계 3 분지단계 : 분지가 끝나지 않은 문제를 하나 선택한다. 현재 (1), (3), 그리고 (4)가 있다. 그 중에서 선형완화 최적목적함수 값이 큰 (4)를 선택한다.

문제 (4)의 을 선택하여 이 0 또는 1 값을 갖는 두개의 부문제로 분지한다.

최적해법 (계속)-분지한계법의 예

(5)

(6)

max 90x4 + 55x5 + 352

s.t. 3x4 + 5x5 3,

xj 2 {0, 1}, 8j = 4, 5.

max 90x4 + 55x5 + 517

s.t. 3x4 + 5x5 �2,

xj 2 {0, 1}, 8j = 4, 5.

반복단계 3 (계속)

한계단계 : 부문제 (5)과 (6)의 완화문제를 풀어, 상하한을 개선하고 현재 부문제들을 더 이상 분지 할 필요가 있는지 판단한다.

(5)의 선형완화문제의 최적해는 다음과 같은 정수 가능해가 된다. 따라서 최초로 하한을 얻게된다. 즉, 정수최적해의 목적함수값은 최소한 442가 된다. 부문제 (5)는 분지가 끝난다.

(6)의 선형완화문제는 가능해를 갖지 않는다. 따라서 정수해 역시 가질 수 없다. (6)도 분지가 끝난다.

그리고 부문제 (1)은 현재 하한인 442보다 큰 상한을 가졌으므로 더이상 분지 하지 않고 고려대상에서 제외된다.

종합하면 현재 상한은 U = 447 하한은 L=442.

최적해법 (계속)-분지한계법의 예

x1 = 0, x2 = 1, x3 = 1, x4 = 1, x5 = 0, zLP = 442

최적해법 (계속)-분지한계법의 예

지금까지 종합하면 다음과 같다.

현재 분지가 끝나지 않은 한개의 부문제가 존재

반복단계 4- 계속해볼것 분지단계 :

최적해법 (계속)-분지한계법의 예

(7)

(8)

상하한을 사용하지 않는 경우는 개의 경우를 해를 열거해야 한다.

따라서 상하한을 사용하여 __개의 해를 제외시킬 수 있었다.

그러나, 문제가 큰 경우, 선형계획을 사용한 하한은 계산시간 절약 효과가 충분하지 않아, 더 밀착된 하한을 구하는 연구들이 많이 있다. 예를 들어, 절단평면법등이 있다.

최적해법 (계속)-분지 한계법