머그컵 주문 받을때 아래 그림과 같은 요구조건이 있다.
고객의 요구조건 -> 즉 제약 조건(constraints)이 아래 그림과 같다.문제) 고객의 요구조건을 만족하면서 최저비용의 머그컵 설계
(재료비는 재료의 양에 비례한다고 생각한다.)
hint) 즉 최소한의 면적으로 머그컵 설계
즉 식은 이렇게 되겠다.
즉 설계변수는 d와 h가 되겠다.
v는 d와 h로 정해지는 것
정리하면
d,h는 Linear constraints이고
v는 Non-Linear이다.
구별방법은? 제곱이 들어있으면 Non-Linear..
ex) 5d+4h 이런 것은 Linear
우리는 minimization 문제..!!
Design Variable은 d,h
Matlab 에서 최적화 문제를 해결하는 방법중 여러가지 방법이있는데..
예제에선 fmincon을 사용하도록 하겠다. fmincon(function minimize constraints)은 제약조건이 있는 function을 최소화하는 것. 미분값을 이용해서 글로벌 최소값을 찾는 것.
fmincon과 반대개념으로 Genetic Algorithm -> 확률개념으로 찾아내는 것..
Matlab에서 optimization을 실행하는 방법
>>optimtool
>>edit
세가지가 있는데 problem setup and result가 중요
inequalities는 < > 부등호 말하는 것이고
equalities는 = 뜻함
Bounds 영역에서 Lower는 우리 예제에서 [5 10]'이 들어가야 하고 Upper는 [12 20]'
혹시 제약조건이 d<12이면 Lower가 -무한대이므로 .. 그것을 matlab으로 표현한다면
-inf 이런식으로 표현하면됨..
integer variable indices 정수로 제한하고 싶은 디자인 variable에 있으면
ex) 예제에는 디자인 변수가 2가지인데 d 직경을 정수로 제한하고 싶으면 [1 0] 이렇게 하면된다.
function S = myObjective(x)
d = x(1); % 밑면의 지름
h= x(2); % 높이
S = pi/4*d^2 + pi*d*h;
c = 800 - pi/4*d^2*h;
if(c>0)
S = S + c*1000000;
end
if문이 패널티 퍼션
패널티 function이란 제약조건을 만족하지 못하면 fitness에 큰 숫자를 더함으로써 진화에서 자연스럽게 도태되도록 해서 제약조건을 만족하는 값을 찾아내는 것
패널티 function을 쓰는 것이 편함.. 이렇게 10000000 큰 값을 곱함으로써 진화에서 아예 벗어나게함
실행해보면....
이렇게 값을 찾아주는 것을 알 수 있다.
d = 9.991 cm
h = 10.204 cm 으로 설계하면
s = 398.68 cm^2 으로 최소한의 면적 즉 최소한의 재료로 머그컵을 설계할 수 있다.
댓글
댓글 쓰기