본문 바로가기
과거폴더/-

CVX 부들부들

by 1000dazzling 2015. 11. 16.
반응형

1주일 넘게 안되던 거 겨우 해결했다.ㅠㅠ

지난번 주제 잘 안됐던것까지 합치면 한 1달은 넘었을지도ㅡㅡ



1. 대학교 이메일로 요청하면 유료 solver인 MOSEK solver를 받을 수 있다.

http://cvxr.com/cvx/academic/

default solver인 SDPT3보다 훨씬 빠름! 


2. 만약 MOSEK으로 구한답과 SDPT3 답이 다르다면, 그건 어딘가 잘못된것. 특히 너무작거나 큰숫자조심 ㅠㅠ

나같은 경우에는 scale이 10^(-13) 이여서 문제였다.

처음에는 자연로그 씌우면 -50 근처라서 문제 없을줄 알았는데, 일주일 내내 눈씻구 찾아봐도 다른곳이 틀린 게 없엇다ㅠ

이상한건 MOSEK이 더 뛰어난 solver라고 알고 있었는데 MOSEK은 자꾸 fail 뜨고 SDPT3는 solved 라고 떠서 더 당황;

친구한테 물어보다가 혹시나 해서 objective function에 10^10 곱해서 구해봤더니 된다.ㅠㅠ

두 solver에서 같은답이 나왔어ㅠㅠㅠㅠ

드디어 UL는 해결했고, DL도 문제였다..... 에휴.


3. Tensor라고 못푸는건 아니다. 

홈페이지에도 된다고 적혀는 있지만,,,

나같은경우는 4차원 행렬을 만들어썼었는데 =_= 그것도 처음엔 의심을 샀다.

이거때메 안되나. ... 

그래서 나중에는 모든 변수를 수작업으로 다 바꿔가며 확인을 했다.

게중엔 틀렸던 것도 있고... 

근데 결과적으로는 tensor 사용해도됨.

그래도 한번쯤 확인작업은 할만한듯.


4. summation 할때 주의하기

CVX를 쓰게되면 sum 함수를 쓰기 곤란할 때가 가끔있다. 

a = a+ b; 같이 계속 쌓아가며 더해줄때,

가장 간단하지만 a=0이 선언이 되었는지 잘 봐야함. iteration 마다.

CVX_begin 후의 expression 같은경우는 0이라고 선언해주지않아도 매번 0이라고 놓고 시작해서 괜찮음.



5. inequality constraint 너무 믿지말기

실제로는 equality constraint 나 inequality constraint나 둘다 같은 결과를 준다지만,,, CVX프로그램은 아닐때가있음.

이틀동안 안풀리던거 등호로 바꾸니 그냥 자동해결됨.........ㅠㅠ


6. 이러니저러니해도 CVX가 없었으면 난 이걸 못풀겠지...... ㄳ.....

반응형

'과거폴더 > -' 카테고리의 다른 글

12/23  (1) 2015.12.23
20151216 오늘의 생각  (2) 2015.12.16