springchain.gms : 조각별 선형 스프링을 사용한 시스템의 평형

설명

이 모델은 다음으로 구성된 매달린 사슬의 모양을 찾습니다.
N 스프링 및 N-1 노드. 압축된 각 스프링 버클과
노드에는 가중치가 매달려 있습니다. 스프링이 가정됩니다.
무중력. 목표는 위치 에너지를 최소화하는 것입니다.
시스템.

회전된 2차 원뿔 제약 조건을 사용하여 확장을 모델링합니다.
매년 봄.

소형 모델 유형 :QCP


카테고리 : 피망 슬롯 모델 라이브러리


메인 파일 : springchain.gms

$title 조각별 선형 스프링을 사용한 시스템 평형(SPRINGCHAIN,SEQ=431)

$onText
 이 모델은 다음과 같이 구성된 매달린 사슬의 모양을 찾습니다.
 N 스프링 및 N-1 노드. 압축된 각 스프링 버클과
 노드에는 가중치가 매달려 있습니다. 스프링이 가정됩니다. 
 무중력. 목표는 위치 에너지를 최소화하는 것입니다.
 시스템.

 회전된 2차 원뿔 제약 조건을 사용하여 확장을 모델링합니다. 
 매년 봄.

 M. Lobo, L. Vandenberghe, S. Boyd, H. Lebret,  
 2차 원뿔 프로그래밍, 선형 대수학 및 그 응용 
 응용프로그램, 284:193-228, 1998년 11월, 선형대수학 특별호 
 제어, 신호 및 이미지 처리 분야. 
$offText

* 체인링크 수
$설정되지 않은 경우 N $set N 10
$평가 NM1 %N%-1

n "스프링 인덱스" 설정 /n0*n%N%/;

스칼라
    a_x "시작 노드의 x 좌표" / 0/
    a_y "시작 노드의 y 좌표" / 0/
    b_x "끝 노드의 x 좌표" / 2/
    b_y "끝 노드의 y 좌표" / -1/
    L0 "각 스프링의 나머지 길이" / [2*sqrt(sqr(a_x-b_x) + sqr(a_y-b_y))/%N%]/
    g "중력으로 인한 가속도" / 9.8/
    k "스프링의 강성" /100/;

매개변수
    m(n) "각 매달린 노드의 질량" /n1*n%NM1% 1/;

변수
    객체
    x(n) "노드의 x 좌표"
    y(n) "노드의 y 좌표"
    델타_x(n)
    delta_y(n) 
    단위;

양수 변수 
    t_L0(n)
    t(n) "각 스프링의 확장"
    v;

방정식
    냄비_에너지
    delta_x_eq(n)
    delta_y_eq(n)
    링크_L0(n)
    링크업(n)
    cone_eq;

pot_energy.. obj =E= sum(n$[ord(n)>1 and ord(n)<card(n)], m[n]*g*y[n]) + k*v;

delta_x_eq(n).. delta_x(n) =E= x[n] - x[n-1];
delta_y_eq(n).. delta_y(n) =E= y[n] - y[n-1];

link_L0(n).. t_L0[n] =E= L0 + t[n];
link_up(n)$[ord(n)>1]..       
                   sqr(t_L0[n]) =G= sqr(delta_x[n]) + sqr(delta_y[n]);

cone_eq.. 2*v*unit =G= sum(n$[ord(n)>1], sqr(t[n]));

모델 스프링 /all/;

x.L(n) = ( (ord(n)-1)/%N% )*b_x + (ord(n)/%N%)*a_x;
y.L(n) = ( (ord(n)-1)/%N% )*b_y + (ord(n)/%N%)*a_y;

x.FX['n0'] = a_x;
y.FX['n0'] = a_y;
x.FX['n%N%'] = b_x;
y.FX['n%N%'] = b_y;

단위.fx = 1;

obj를 최소화하는 qcp를 사용하여 Spring을 해결합니다.