-
Notifications
You must be signed in to change notification settings - Fork 6
/
libipoptfort1.dll
114 lines (94 loc) · 2.83 KB
/
libipoptfort1.dll
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
param NE == 5;
param tf == 4;
param hi = tf/NE;
param N1{j in {1}};
param N2{j in {1}};
param N3{j in {1}};
################################# 车道尺寸参数
set I :={1..NE};
set I1:={1..NE-1};
set J :={1..3};
set K :={0..3};
param tauj{j in K};
param dljtauk{j in K,k in K};
param omega{j in J};
param NC == N1[1] + N2[1] + N3[1];
set ALL :={1..NC};
param PXPY{j in ALL,k in {1..2}};
################################# 边界限制参数
param amax == 0.5;
param vmax == 15;
param wmax == 0.3;
param phymax == 0.576;
param jerkmax == 0.2;
param n == 0.96;
param l = 2.8;
param m = 0.929;
param b = 0.971;
################################# 声明
var x{i in I,j in K,k in ALL};
var y{i in I,j in K,k in ALL};
var theta{i in I,j in K,k in ALL};
var v{i in I,j in K,k in ALL};
var phy{i in I,j in K,k in ALL};
var w{i in I,j in K,k in ALL};
var a{i in I,j in K,k in ALL};
var jerk{i in I,j in K,k in ALL};
################################# 优化时间
minimize criterion:
1;
################################# Vehicle kinematics described via DAEs ####
s.t. DIFF_dxdt {i in I, k in J, xx in ALL}:
sum{j in K}(dljtauk[j,k]*x[i,j,xx]) - hi * 10 = 0;
s.t. DIFF_dydt {i in I, k in J, xx in ALL}:
sum{j in K}(dljtauk[j,k]*y[i,j,xx]) = 0;
s.t. EQ_diffx {i in I1, xx in ALL}:
x[i+1,0,xx] = sum{j in K}((prod{k in K:k<>j}((1-tauj[k])/(tauj[j]-tauj[k])))*x[i,j,xx]);
s.t. EQ_diffy {i in I1, xx in ALL}:
y[i+1,0,xx] = sum{j in K}((prod{k in K:k<>j}((1-tauj[k])/(tauj[j]-tauj[k])))*y[i,j,xx]);
s.t. Bonds_w {i in I,j in K,xx in ALL}:
w[i,j,xx] == 0;
s.t. Bonds_a {i in I,j in K,xx in ALL}:
a[i,j,xx] == 0;
s.t. Bonds_jerk {i in I,j in K,xx in ALL}:
jerk[i,j,xx] == 0;
s.t. Bonds_v {i in I,j in K,xx in ALL}:
v[i,j,xx] == 10;
s.t. Bonds_phy {i in I,j in K,xx in ALL}:
phy[i,j,xx] == 0;
################################# Starting Configurations #################################
s.t. EQ_starting_x_all {xx in ALL}:
x[1,0,xx] = PXPY[xx,1];
s.t. EQ_starting_y_all {xx in ALL}:
y[1,0,xx] = PXPY[xx,2];
data;
param: PXPY := include PXPY;
param: N1 := include OLD1;
param: N2 := include OLD2;
param: N3 := include OLD3;
param: dljtauk :=
0 0 -9.0000
0 1.0000 -4.1394
0 2.0000 1.7394
0 3.0000 -3.0000
1.0000 0 10.0488
1.0000 1.0000 3.2247
1.0000 2.0000 -3.5678
1.0000 3.0000 5.5320
2.0000 0 -1.3821
2.0000 1.0000 1.1678
2.0000 2.0000 0.7753
2.0000 3.0000 -7.5320
3.0000 0 0.3333
3.0000 1.0000 -0.2532
3.0000 2.0000 1.0532
3.0000 3.0000 5.0000;
param: tauj :=
0 0
1 0.1550510257216822
2 0.6449489742783178
3 1.0;
param: omega:=
1 3.76403062700467e-1
2 5.12485826188421e-1
3 1.11111111111111e-1;