설명
로봇 팔이 두 지점 사이를 여행합니다. 이 모델은 COPS 벤치마킹 제품군에서 나온 것입니다. 참조http://www-unix.mcs.anl.gov/~more/cops/.이산화 지점 수는 다음 명령을 사용하여 지정할 수 있습니다 라인 매개변수 --nh. NH에 대한 COPS 성능 테스트가 보고되었습니다. = 50, 100, 200, 400
대형 모델 유형 :NLP
카테고리 : 슬롯 커뮤니티 모델 라이브러리
메인 파일 : robot.gms
$title 로봇 팔 COPS 2.0 #8 (ROBOT,SEQ=236)
$onText
로봇 팔이 동작하는 데 걸리는 시간을 최소화하세요.
두 지점 사이를 여행합니다.
이 모델은 COPS 벤치마킹 제품군에서 나온 것입니다.
http://www-unix.mcs.anl.gov/~more/cops/를 참조하세요.
이산화 지점 수는 다음 명령을 사용하여 지정할 수 있습니다.
라인 매개변수 --nh. NH에 대한 COPS 성능 테스트가 보고되었습니다.
= 50, 100, 200, 400
Dolan, E D 등, JJ, 벤치마킹 최적화
COPS가 포함된 소프트웨어. 기술. 대표, 수학과 컴퓨터
과학부, 2000.
Vanderbei, R, 비선형 최적화 모델.
키워드: 비선형 프로그래밍, 엔지니어링, 로봇공학
$offText
$if 세트 n $set nh %n%
$설정되지 않은 경우 nh $set nh 50
h '간격' 설정 / h0*h%nh% /;
스칼라
nh '간격 수' / %nh% /
L '팔 전체 길이' / 5 /
max_u_rho / 1 /
max_u_the / 1 /
max_u_phi / 1 /;
변수
로(h)
그(h)
파이(h)
rho_dot(h)
the_dot(h)
phi_dot(h)
u_rho(h)
u_the(h)
u_phi(h)
단계
tf
i_the(h)
i_phi(h);
방정식
tf_eqn
rho_eqn(h)
the_eqn(h)
phi_eqn(h)
u_rho_eqn(h)
u_the_eqn(h)
u_phi_eqn(h)
i_the_eqn(h)
i_phi_eqn(h);
tf_eqn.. tf =e= 단계*nh;
i_phi_eqn(h).. i_phi(h) =e= (power(L - rho(h),3) + power(rho(h),3))/3.0;
i_the_eqn(h).. i_the(h) =e= i_phi(h)*sqr(sin(phi(h)));
rho_eqn(h-1).. rho(h) =e= rho(h-1) + 0.5*단계*(rho_dot(h) + rho_dot(h-1));
the_eqn(h-1).. the(h) =e= the(h-1) + 0.5*단계*(the_dot(h) + the_dot(h-1));
phi_eqn(h-1).. phi(h) =e= phi(h-1) + 0.5*단계*(phi_dot(h) + phi_dot(h-1));
u_rho_eqn(h-1)..
rho_dot(h) =e= rho_dot(h-1) + 0.5*단계*(u_rho(h) + u_rho(h-1))/L;
u_the_eqn(h-1)..
the_dot(h) =e= the_dot(h-1) + 0.5*단계*(u_the(h)/i_the(h) + u_the(h-1)/i_the(h-1));
u_phi_eqn(h-1)..
phi_dot(h) =e= phi_dot(h-1) + 0.5*단계*(u_phi(h)/i_phi(h) + u_phi(h-1)/i_phi(h-1));
rho.lo(h) = 0; rho.up(h) = L;
the.lo(h) = -pi; the.up(h) = 파이;
phi.lo(h) = 0; phi.up(h) = 파이;
u_rho.lo(h) = -max_u_rho; u_rho.up(h) = max_u_rho;
u_the.lo(h) = -max_u_the; u_the.up(h) = max_u_the;
u_phi.lo(h) = -max_u_phi; u_phi.up(h) = max_u_phi;
i_the.lo(h) = 0.0001;
i_phi.lo(h) = 0.0001;
firstlast(h) / h0, h%nh% / 설정;
the.fx('h0') = 0;
the.fx('h%nh%') = 2*pi/3;
rho.fx(firstlast) = 4.5;
phi.fx(firstlast) = pi/4;
rho_dot.fx(firstlast) = 0;
the_dot.fx(firstlast) = 0;
phi_dot.fx(firstlast) = 0;
i_phi.fx(firstlast(h)) = (power(L - rho.l(h),3) + power(rho.l(h),3))/3.0;
i_the.fx(firstlast(h)) = i_phi.l(h)*sqr(sin(phi.l(h)));
rho.l(h) = 4.5;
the.l(h) = (2*pi/3)*sqr(ord(h)/nh);
phi.l(h) = pi/4;
rho_dot.l(h) = 0.0;
the_dot.l(h) = (4*pi/3)*(ord(h)/nh);
phi_dot.l(h) = 0.0;
단계 1 = 1/nh;
i_phi.l(h) = (전력(L - rho.l(h),3) + 전력(rho.l(h),3))/3.0;
i_the.l(h) = i_phi.l(h)*sqr(sin(phi.l(h)));
모델 로봇 / 모두 /;
$if set workSpace robots.workSpace = %workSpace%
nlp를 사용하여 로봇 최소화 tf를 해결합니다.