Skip to content

Commit 2d25fee

Browse files
authored
optimization code on dummy variables (worked)
Tuesday afternoon
1 parent b0bb5ad commit 2d25fee

File tree

2 files changed

+123
-0
lines changed

2 files changed

+123
-0
lines changed

optmize_dummy.m

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
function [k,P,T,v] = optimize_dummy(l_a,l_b)
2+
% scenario based
3+
% l_a: lanes for ped on road A
4+
% l_b: lanes for ped on road B
5+
6+
% road A is Balboa Blvd
7+
% road B is Newport Blvd
8+
% dummy variables/parameters
9+
10+
% we are using Q directly from liwei right now. We might want to change it
11+
% after aug factor done
12+
13+
q_a_veh = 0.04; % veh/sec
14+
q_b_veh = 0.03; % veh/sec
15+
16+
q_liwei = 1600/3600; % ped/sec
17+
18+
psg = 4; % ren/veh
19+
20+
% population in 4 shapes
21+
P1 = 200;
22+
P2 = 284;
23+
P3 = 4000;
24+
P4 = 16200;
25+
26+
V_on = 20000; % veh
27+
28+
Q_a_ped = l_a*q_liwei; % ped flow on A
29+
Q_b_ped = l_b*q_liwei; % ped flow on B
30+
31+
32+
% optimization
33+
cvx_begin
34+
variables k(1) T_a_veh(1) T_a_ped(1) T_b_veh(1) T_b_ped(1) P_a_ped(1) P_a_veh(1) P_a_out(1) P_b_ped(1) P_b_veh(1) P_b_out(1)
35+
36+
% k: percentage of people on big island to road A
37+
38+
39+
maximize((4-l_a)*q_a_veh*T_a_veh + (4-l_b)*q_b_veh*T_b_veh)
40+
subject to
41+
42+
% road A
43+
P_a_ped == Q_a_ped*T_a_ped; % people get out in ped on A
44+
P_a_veh == psg*(4-l_a)*q_a_veh*T_a_veh; % people get out in veh on A
45+
P_a_out == P_a_veh+P_a_ped;
46+
47+
% road B
48+
P_b_ped == Q_b_ped*T_b_ped; % people get out in ped on B
49+
P_b_veh == psg*(4-l_b)*q_b_veh*T_b_veh; % people get out in veh on B
50+
P_b_out == P_b_veh+P_b_ped;
51+
52+
% in flow = out flow, every one out!
53+
P_a_out == P4*k + P1;
54+
P_b_out == P4*(1-k) + P2 + P3;
55+
56+
% time within 4 hours
57+
T_a_veh <= 14400;
58+
T_a_ped <= 14400;
59+
T_b_veh <= 14400;
60+
T_b_ped <= 14400;
61+
T_a_veh >= 0;
62+
T_a_ped >= 0;
63+
T_b_veh >= 0;
64+
T_b_ped >= 0;
65+
66+
% count vehicles
67+
(4-l_a)*q_a_veh*T_a_veh + (4-l_b)*q_b_veh*T_b_veh <= V_on; % cannot use more cars
68+
69+
% split factor
70+
k >= 0;
71+
k <= 1;
72+
cvx_end
73+
74+
P = [P_a_ped; P_a_veh; P_a_out; P_b_ped; P_b_veh; P_b_out];
75+
T = [T_a_veh; T_a_ped; T_b_veh; T_b_ped];
76+
v = (4-l_a)*q_a_veh*T_a_veh + (4-l_b)*q_b_veh*T_b_veh;
77+
return
78+
end

scenario.m

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
clear
2+
clc
3+
4+
P_a_ped = zeros(5);
5+
P_a_veh = zeros(5);
6+
P_a_out = zeros(5);
7+
P_b_ped = zeros(5);
8+
P_b_veh = zeros(5);
9+
P_b_out = zeros(5);
10+
T_a_veh = zeros(5);
11+
T_a_ped = zeros(5);
12+
T_b_veh = zeros(5);
13+
T_b_ped = zeros(5);
14+
K = zeros(5);
15+
V = zeros(5);
16+
17+
for l_a = 0:4
18+
for l_b = 0:4
19+
[k,P,T,v] = optmize_dummy(l_a,l_b);
20+
K(l_a+1,l_b+1) = k;
21+
V(l_a+1,l_b+1) = v;
22+
P_a_ped(l_a+1,l_b+1) = P(1);
23+
P_a_veh(l_a+1,l_b+1) = P(2);
24+
P_a_out(l_a+1,l_b+1) = P(3);
25+
P_b_ped(l_a+1,l_b+1) = P(4);
26+
P_b_veh(l_a+1,l_b+1) = P(5);
27+
P_b_out(l_a+1,l_b+1) = P(6);
28+
T_a_veh(l_a+1,l_b+1) = T(1);
29+
T_a_ped(l_a+1,l_b+1) = T(2);
30+
T_b_veh(l_a+1,l_b+1) = T(3);
31+
T_b_ped(l_a+1,l_b+1) = T(4);
32+
end
33+
end
34+
35+
P_a_ped = int64(P_a_ped);
36+
P_a_veh = int64(P_a_veh);
37+
P_a_out = int64(P_a_out);
38+
P_b_ped = int64(P_b_ped);
39+
P_b_veh = int64(P_b_veh);
40+
P_b_out = int64(P_b_out);
41+
T_a_veh = round(T_a_veh/3600, 1);
42+
T_a_ped = round(T_a_ped/3600, 1);
43+
T_b_veh = round(T_b_veh/3600, 1);
44+
T_b_ped = round(T_b_ped/3600, 1);
45+
V = int64(V);

0 commit comments

Comments
 (0)