참조
카테고리 : 피망 슬롯 NOA 라이브러리
메인파일 : camshape.gms
$onText
1회전에 밸브가 열리는 면적을 최대화
곡률과 반경에 제약이 있는 볼록 캠
캠의.
이 모델은 COPS 벤치마킹 제품군에서 나온 것입니다.
http://www-unix.mcs.anl.gov/~more/cops/를 참조하세요.
이산화 지점 수는 다음 명령을 사용하여 지정할 수 있습니다.
라인 매개변수 --n.
COPS 성능 테스트는 n = 100, 200, 400, 800에 대해 보고되었습니다.
참고자료:
Dolan, E D 등, J J, COPS를 사용한 벤치마킹 최적화 소프트웨어.
기술. 대표, 수학 및 컴퓨터 과학부, 2000.
Anitescu, M 및 Serban, R, 희소 초선형 수렴 SQP
2차원 형상 최적화에 대한 응용
기술. 대표, 아르곤 국립 연구소, 1998.
Neculai Andrei, "모델, 테스트 문제 및 응용 프로그램
수학적 프로그래밍". 기술 언론, 부쿠레슈티, 2003.
신청서 A8, 352페이지.
$offText
$설정되지 않은 경우 n $set n 1000
i개의 이산화점을 설정합니다. /i1 * i%n%/;
별칭(i,j);
밸브 형상과 관련된 스칼라 R_v 설계 변수 /1/
R_max 최대 허용 캠 반경 /2/
R_min 캠의 최소 허용 반경 /1/
파이
알파 곡률 제한 매개변수 /1.5/
d_theta 이산화 지점 사이의 각도;
파이 = 2*arctan(inf);
d_theta = 2*pi/(5*(%n%+1));
첫 번째(i), 마지막(i), 중간(i)을 설정합니다.
첫 번째('i1') = 예;
last('i%n%') = 예;
중간(i) = 예; 중간(첫 번째) = 아니요; 중간(마지막) = 아니오;
이산화 지점에서 캠의 변수 r(i) 반경
rdiff(i) 중간
지역 밸브 지역;
* 경계
r.lo(i) = R_min;
r.up(i) = R_max;
rdiff.lo(i(j+1)) = -alpha*d_theta;
rdiff.up(i(j+1)) = alpha*d_theta;
r.lo('i1') = max(-alpha*d_theta + R_min, r.lo('i1'));
r.up('i1') = min( alpha*d_theta + R_min, r.up('i1'));
r.lo('i%n%') = max(R_max - alpha*d_theta, r.lo('i%n%'));
r.up('i%n%') = min(R_max + alpha*d_theta, r.up('i%n%'));
r.up('i1') = min( R_min/(2*cos(d_theta)-1), r.up('i1'));
* 초기값
r.l(i) = (R_min+R_max)/2;
방정식 obj 목적
볼록함(i)
볼록한 가장자리1(i)
볼록한_가장자리3(i)
볼록한 가장자리4(i)
eqrdiff(i);
obj..area =e= ((pi*R_v)/%n%) * sum(i, r(i));
볼록성(중간(i)).. -r(i-1)*r(i) - r(i)*r(i+1) +
2*r(i-1)*r(i+1)*cos(d_theta) =l= 0;
볼록한 가장자리1(첫 번째(i)).. -R_min*r(i) - r(i)*r(i+1) +
2*R_min*r(i+1)*cos(d_theta) =l= 0;
볼록한 가장자리3(마지막(i)).. -r(i-1)*r(i) - r(i)*R_max +
2*r(i-1)*R_max*cos(d_theta) =l= 0;
볼록한 가장자리4(마지막(i)).. -2*R_max*r(i) +
2*sqr(r(i))*cos(d_theta) =l= 0;
eqrdiff(j(i+1))..rdiff(i) =e= r(i+1) - r(i);
모델 camshape /all/;
$ifThenI x%mode%==xbook
camshape.iterlim=50000;
camshape.workspace=200;
$endIf
nlp 최대화 영역을 사용하여 캠 모양을 해결합니다.
$ifThenI x%mode%==xbook
파일 rez /camshape.dat/;
레즈 넣어
루프(i, r.l(i):10:5 넣기, 넣기/)
$endIf
*------------------------- 수치실험 --------
* 2011년 1월 15일
* 변형 1:
* 제약조건 12001개, 변수 12000개
* CONOPT3: 85회 반복, 23.714초
* vfo=4.2725254070
* KNITRO: 51회 반복, 56회 기능 평가, 14초
* vfo=4.270589910
*
* 변형 2:
* 제약조건 16001개, 변수 16000개
* CONOPT3: 75회 반복, 32.607초
* vfo=4.2726091788
* KNITRO: 52회 반복, 57회 함수 평가, 25.21초
* vfo=4.2697038802
*
* 변종 3:
* 제약조건 20001개, 변수 20000개
* CONOPT3: 46회 반복, 23.204초
* vfo=4.2726594376
* KNITRO: 54회 반복, 59회 함수 평가, 33.19초
* vfo=4.2688342488
*--------------------------------------------
* 캠셰이프 종료