참조
카테고리 : 슬롯 나라 NOA 라이브러리
메인파일 : rocket.gms
$onText
고다드 로켓.
다음을 사용하여 수직 발사 로켓의 최종 고도를 최대화합니다.
추력을 제어로 사용하고 초기 질량, 연료 질량 및
로켓의 항력 특성.
이 모델은 COPS 벤치마킹 제품군에서 나온 것입니다.
http://www-unix.mcs.anl.gov/~more/cops/를 참조하세요.
이산화 지점의 수는 다음을 사용하여 지정할 수 있습니다.
명령줄 매개변수.
COPS 성능 테스트는 nh = 50에 대해 보고되었습니다.
100, 200, 400
참고자료:
* Dolan, E D 등, JJ, 벤치마킹 최적화
COPS가 포함된 소프트웨어. 기술. 대표, 수학과 컴퓨터
과학부, 2000.
* Bryson, AE, 동적 최적화. 애디슨 웨슬리, 1999.
$offText
$if 세트 n $set nh %n%
$설정되지 않은 경우 nh $set nh 1000
h 간격 설정 / h0 * h%nh%/
스칼라
h_0 초기 높이 / 1 /
v_0 초기 속도 / 0 /
m_0 초기 질량 / 1 /
g_0 표면의 중력 / 1 /
nh 메시의 간격 수 / %nh% /
r_c 추력 상수 /3.5/
v_c / 620 /
h_c / 500 /
m_c / 0.6 /
D_c
m_f 최종 질량
c ;
* 상수:
c = 0.5*sqrt(g_0*h_0);
m_f = m_c*m_0;
D_c = 0.5*v_c*(m_0/g_0);
변수 final_velocity
긍정적인
변수 단계 단계 크기
v(h) 속도
ht(h) 높이
g(h) 중력
m(h) 질량
r(h) 추력
d(h) 드래그 ;
* 경계:
ht.lo(h) = h_0;
r.lo(h) = 0.0;
r.up(h) = r_c*(m_0*g_0);
m.lo(h) = m_f;
m.up(h) = m_0;
* 초기값:
ht.l(h) = 1;
v.l(h) = ((ord(h)-1)/nh)*(1 - ((ord(h)-1)/nh));
m.l(h) = (m_f - m_0)*((ord(h)-1)/nh) + m_0;
r.l(h) = r.up(h)/2;
단계 1 = 1/nh;
d.l(h) = D_c*sqr(v.l(h))*exp(-h_c*(ht.l(h)-h_0)/h_0);
g.l(h) = g_0*sqr(h_0/ht.l(h));
* 변수의 고정 값:
ht.fx('h0') = h_0;
v.fx('h0') = v_0;
m.fx('h0') = m_0;
m.fx('h%nh%') = m_f;
방정식 df(h) 끌기 함수
gf(h) 중력 함수
객체
h_eqn(h), v_eqn(h), m_eqn(h);
obj..final_velocity =e= ht('h%nh%');
df(h).. d(h) =e= D_c*sqr(v(h))*exp(-h_c*(ht(h)-h_0)/h_0);
gf(h).. g(h) =e= g_0*sqr(h_0/ht(h));
h_eqn(h-1)..ht(h) =e= ht(h-1) + .5*단계*(v(h) + v(h-1));
m_eqn(h-1).. m(h) =e= m(h-1) - .5*단계*(r(h) + r(h-1))/c;
v_eqn(h-1).. v(h) =e= v(h-1)
+ .5*단계*((r(h) - D(h) - m(h) *g(h)) /m(h)
+(r(h-1) - D(h-1) - m(h-1)*g(h-1))/m(h-1));
모형 로켓 /all/;
$ifThenI x%mode%==xbook
로켓.iterlim=80000;
$endIf
final_velocity를 최대화하는 nlp를 사용하여 로켓을 해결합니다.
$ifThenI x%mode%==xbook
파일 res1 /m9.dat/;
res1을 넣어
루프(h, r.l(h):10:7 넣기, 넣기/)
$endIf
* 엔드 로켓
*------------------- 내가 얻은 수치 실험 ----------------
* 2011년 1월 15일
*
*
* 변형 1:
* nh=500
* m=2502, n=3007
* CONOPT3:
* 1997년 반복, 22.713초
* vfo=1.012836666
* 니트로:
* 70개의 주요 반복, 91개의 작은 반복, 171개의 기능 평가
* 5.89초
* vfo=1.01262977
* 미노스:
* iter=43, fev=2781, 0.230초
* vfo=1.102603
*
* 변형 2:
* nh=1000
* m=5003, n=6008
* CONOPT3:
* 2700회 반복, 49.801초
* vfo=1.012835932
* 니트로:
* 71개의 주요 반복, 93개의 작은 반복, 164개의 기능 평가
* 19.327초
* vfo=1.0123973821
* 미노스:
* 35회 반복, 38.846초
* vfo=1.012243
*-------------------------------------------------------