설명
A의 1회전에 대한 밸브 개방 면적을 최대화합니다. 곡률과 반경에 제약이 있는 볼록 캠 캠의. 이 모델은 COPS 벤치마킹 제품군에서 나온 것입니다. 보다http://www-unix.mcs.anl.gov/~more/cops/.이산화 지점 수는 다음 명령을 사용하여 지정할 수 있습니다 라인 매개변수 --n. COPS 성능 테스트는 n =에 대해 보고되었습니다. 100, 200, 400, 800
대형 모델 유형 :NLP
카테고리 : 메가 슬롯 모델 라이브러리
메인 파일 : camshape.gms
$title 캠 COPS 2.0 #4의 형상 최적화(CAMSHAPE,SEQ=232)
$onText
1회전에 밸브가 열리는 면적을 최대화
곡률과 반경에 제약이 있는 볼록 캠
캠의.
이 모델은 COPS 벤치마킹 제품군에서 나온 것입니다.
http://www-unix.mcs.anl.gov/~more/cops/를 참조하세요.
이산화 지점 수는 다음 명령을 사용하여 지정할 수 있습니다.
라인 매개변수 --n. COPS 성능 테스트는 n =에 대해 보고되었습니다.
100, 200, 400, 800
Dolan, E D 등, JJ, 벤치마킹 최적화
COPS가 포함된 소프트웨어. 기술. 대표, 수학과 컴퓨터
과학부, 2000.
Anitescu, M 및 Serban, R, A Sparse Superlinearly
2차원 형상에 적용되는 수렴 SQP
최적화. 기술. 대표, 아르곤 국립 연구소, 1998.
키워드: 비선형 프로그래밍, 공학, 형상 최적화, 캠 설계 문제
$offText
$설정되지 않은 경우 n $set n 100
i '이산화 포인트' 설정 / i1*i%n% /;
별칭(i,j);
스칼라
R_v '밸브 형상과 관련된 설계변수' / 1 /
R_max '캠의 최대 허용 반경' / 2 /
R_min '캠의 최소 허용 반경' / 1 /
alpha '곡률 제한 매개변수' / 1.5 /
d_theta '이산화 지점 사이의 각도';
d_theta = 2*pi/(5*(%n% + 1));
첫 번째(i), 마지막(i), 중간(i)을 설정합니다.
첫 번째('i1') = 예;
last('i%n%') = 예;
중간(i) = 예;
중간(첫 번째) = 아니요;
중간(마지막) = 아니오;
변수
r(i) '이산화 지점에서 캠의 반경'
rdiff(i) '중급'
영역 '밸브 영역';
방정식
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);
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;
모델 camshape/모두/;
$if set workSpace camshape.workSpace = %workSpace%
nlp 최대화 영역을 사용하여 캠 모양을 해결합니다.