Numerical Optimal Control of HIV Transmission in Octave/MATLAB
Abstract
:1. Introduction
2. A Normalized SICA HIV/AIDS Model
3. Numerical Solution of the SICA HIV/AIDS Model
3.1. Default ode45 Routine of GNU Octave
- function dy = odeHIVsystem(t,y)% Parameters of the modelmi = 1.0 / 69.54; b = 2.1 * mi; beta = 1.6;etaC = 0.015; etaA = 1.3; fi = 1.0; ro = 0.1;alfa = 0.33; omega = 0.09; d = 1.0;% Differential equations of the modeldy = zeros(4,1);aux1 = beta * (y(2) + etaC * y(3) + etaA * y(4)) * y(1);aux2 = d * y(4);dy(1) = b * (1 - y(1)) - aux1 + aux2 * y(1);dy(2) = aux1 - (ro + fi + b - aux2) * y(2) + alfa * y(4) + omega * y(3);dy(3) = fi * y(2) - (omega + b - aux2) * y(3);dy(4) = ro * y(2) - (alfa + b + d - aux2) * y(4);
3.2. Euler’s Method
- function dy = odeEuler(T)
- % Parameters of the modelmi = 1.0 / 69.54; b = 2.1 * mi; beta = 1.6;etaC = 0.015; etaA = 1.3; fi = 1.0; ro = 0.1;alfa = 0.33; omega = 0.09; d = 1.0;% Parameters of the Euler methodtest = -1; deltaError = 0.001; M = 100;t = linspace(0,T,M+1); h = T / M;S = zeros(1,M+1); I = zeros(1,M+1);C = zeros(1,M+1); A = zeros(1,M+1);% Initial conditions of the modelS(1) = 0.6; I(1) = 0.2; C(1) = 0.1; A(1) = 0.1;% Iterations of the methodwhile(test < 0)
- oldS = S; oldI = I; oldC = C; oldA = A;for i = 1:M
- % Differential equations of the modelaux1 = beta * (I(i) + etaC * C(i) + etaA * A(i)) * S(i);aux2 = d * A(i);
- auxS = b * (1 - S(i)) - aux1 + aux2 * S(i);auxI = aux1 - (ro + fi + b - aux2) * I(i) + alfa * A(i) + omega * C(i);auxC = fi * I(i) - (omega + b - aux2) * C(i);auxA = ro * I(i) - (alfa + b + d - aux2) * A(i);
- % Euler new approximationS(i+1) = S(i) + h * auxS;I(i+1) = I(i) + h * auxI;C(i+1) = C(i) + h * auxC;A(i+1) = A(i) + h * auxA;
- end
- % Absolute error for convergencetemp1 = deltaError * sum(abs(S)) - sum(abs(oldS - S));temp2 = deltaError * sum(abs(I)) - sum(abs(oldI - I));temp3 = deltaError * sum(abs(C)) - sum(abs(oldC - C));temp4 = deltaError * sum(abs(A)) - sum(abs(oldA - A));test = min(temp1,min(temp2,min(temp3,temp4)));
- enddy(1,:) = t; dy(2,:) = S; dy(3,:) = I;dy(4,:) = C; dy(5,:) = A;
3.3. Runge–Kutta of Order Two
- function dy = odeRungeKutta_order2(T)
- % Parameters of the modelmi = 1.0 / 69.54; b = 2.1 * mi; beta = 1.6;etaC = 0.015; etaA = 1.3; fi = 1.0; ro = 0.1;alfa = 0.33; omega = 0.09; d = 1.0;
- % Parameters of the Runge-Kutta (2nd order) methodtest = -1; deltaError = 0.001; M = 100;t = linspace(0,T,M+1); h = T / M; h2 = h / 2;S = zeros(1,M+1); I = zeros(1,M+1);C = zeros(1,M+1); A = zeros(1,M+1);
- % Initial conditions of the modelS(1) = 0.6; I(1) = 0.2; C(1) = 0.1; A(1) = 0.1;
- % Iterations of the methodwhile(test < 0)
- oldS = S; oldI = I; oldC = C; oldA = A;for i = 1:M
- % Differential equations of the model% First Runge-Kutta parameteraux1 = beta * (I(i) + etaC * C(i) + etaA * A(i)) * S(i);aux2 = d * A(i);auxS1 = b * (1 - S(i)) - aux1 + aux2 * S(i);auxI1 = aux1 - (ro + fi + b - aux2) * I(i) + alfa * A(i) + omega * C(i);auxC1 = fi * I(i) - (omega + b - aux2) * C(i);auxA1 = ro * I(i) - (alfa + b + d - aux2) * A(i);% Second Runge-Kutta parameterauxS = S(i) + h * auxS1; auxI = I(i) + h * auxI1;auxC = C(i) + h * auxC1; auxA = A(i) + h * auxA1;aux1 = beta * (auxI + etaC * auxC + etaA * auxA) * auxS;aux2 = d * auxA;auxS2 = b * (1 - auxS) - aux1 + aux2 * auxS;auxI2 = aux1 - (ro + fi + b - aux2) * auxI + alfa * auxA + omega * auxC;auxC2 = fi * auxI - (omega + b - aux2) * auxC;auxA2 = ro * auxI - (alfa + b + d - aux2) * auxA;% Runge-Kutta new approximationS(i+1) = S(i) + h2 * (auxS1 + auxS2);I(i+1) = I(i) + h2 * (auxI1 + auxI2);C(i+1) = C(i) + h2 * (auxC1 + auxC2);A(i+1) = A(i) + h2 * (auxA1 + auxA2);
- end% Absolute error for convergencetemp1 = deltaError * sum(abs(S)) - sum(abs(oldS - S));temp2 = deltaError * sum(abs(I)) - sum(abs(oldI - I));temp3 = deltaError * sum(abs(C)) - sum(abs(oldC - C));temp4 = deltaError * sum(abs(A)) - sum(abs(oldA - A));test = min(temp1,min(temp2,min(temp3,temp4)));
- enddy(1,:) = t; dy(2,:) = S; dy(3,:) = I;dy(4,:) = C; dy(5,:) = A;
3.4. Runge–Kutta of Order Four
- function dy = odeRungeKutta_order4(T)
- % Parameters of the modelmi = 1.0 / 69.54; b = 2.1 * mi; beta = 1.6;etaC = 0.015; etaA = 1.3; fi = 1.0; ro = 0.1;alfa = 0.33; omega = 0.09; d = 1.0;
- % Parameters of the Runge-Kutta (4th order) methodtest = -1; deltaError = 0.001; M = 100;t = linspace(0,T,M+1);h = T / M; h2 = h / 2; h6 = h / 6;S = zeros(1,M+1); I = zeros(1,M+1);C = zeros(1,M+1); A = zeros(1,M+1);
- % Initial conditions of the modelS(1) = 0.6; I(1) = 0.2; C(1) = 0.1; A(1) = 0.1;% Iterations of the methodwhile(test < 0)
- oldS = S; oldI = I; oldC = C; oldA = A;for i = 1:M
- % Differential equations of the model% First Runge-Kutta parameteraux1 = beta * (I(i) + etaC * C(i) + etaA * A(i)) * S(i);aux2 = d * A(i);auxS1 = b * (1 - S(i)) - aux1 + aux2 * S(i);auxI1 = aux1 - (ro + fi + b - aux2) * I(i) + alfa * A(i) + omega * C(i);auxC1 = fi * I(i) - (omega + b - aux2) * C(i);auxA1 = ro * I(i) - (alfa + b + d - aux2) * A(i);
- % Second Runge-Kutta parameterauxS = S(i) + h2 * auxS1; auxI = I(i) + h2 * auxI1;auxC = C(i) + h2 * auxC1; auxA = A(i) + h2 * auxA1;aux1 = beta * (auxI + etaC * auxC + etaA * auxA) * auxS;aux2 = d * auxA;
- auxS2 = b * (1 - auxS) - aux1 + aux2 * auxS;auxI2 = aux1 - (ro + fi + b - aux2) * auxI + alfa * auxA + omega * auxC;auxC2 = fi * auxI - (omega + b - aux2) * auxC;auxA2 = ro * auxI - (alfa + b + d - aux2) * auxA;
- % Fird Runge-Kutta parameterauxS = S(i) + h2 * auxS2; auxI = I(i) + h2 * auxI2;auxC = C(i) + h2 * auxC2; auxA = A(i) + h2 * auxA2;aux1 = beta * (auxI + etaC * auxC + etaA * auxA) * auxS;aux2 = d * auxA;
- auxS3 = b * (1 - auxS) - aux1 + aux2 * auxS;auxI3 = aux1 - (ro + fi + b - aux2) * auxI + alfa * auxA + omega * auxC;auxC3 = fi * auxI - (omega + b - aux2) * auxC;auxA3 = ro * auxI - (alfa + b + d - aux2) * auxA;
- % Fourth Runge-Kutta parameterauxS = S(i) + h * auxS3; auxI = I(i) + h * auxI3;auxC = C(i) + h * auxC3; auxA = A(i) + h * auxA3;aux1 = beta * (auxI + etaC * auxC + etaA * auxA) * auxS;aux2 = d * auxA;
- auxS4 = b * (1 - auxS) - aux1 + aux2 * auxS;auxI4 = aux1 - (ro + fi + b - aux2) * auxI + alfa * auxA + omega * auxC;auxC4 = fi * auxI - (omega + b - aux2) * auxC;auxA4 = ro * auxI - (alfa + b + d - aux2) * auxA;
- % Runge-Kutta new approximationS(i+1) = S(i) + h6 * (auxS1 + 2 * (auxS2 + auxS3) + auxS4);I(i+1) = I(i) + h6 * (auxI1 + 2 * (auxI2 + auxI3) + auxI4);C(i+1) = C(i) + h6 * (auxC1 + 2 * (auxC2 + auxC3) + auxC4);A(i+1) = A(i) + h6 * (auxA1 + 2 * (auxA2 + auxA3) + auxA4);
- end
- % Absolute error for convergencetemp1 = deltaError * sum(abs(S)) - sum(abs(oldS - S));temp2 = deltaError * sum(abs(I)) - sum(abs(oldI - I));temp3 = deltaError * sum(abs(C)) - sum(abs(oldC - C));temp4 = deltaError * sum(abs(A)) - sum(abs(oldA - A));test = min(temp1,min(temp2,min(temp3,temp4)));
- enddy(1,:) = t; dy(2,:) = S; dy(3,:) = I;dy(4,:) = C; dy(5,:) = A;
4. Optimal Control of HIV Transmission
4.1. Pontryagin’s Maximum Principle
4.2. Numerical Solution of the HIV Optimal Control Problem
- function dy = odeRungeKutta_order4_WithControl(T)
- % Parameters of the modelmi = 1.0 / 69.54; b = 2.1 * mi; beta = 1.6;etaC = 0.015; etaA = 1.3; fi = 1.0; ro = 0.1;alfa = 0.33; omega = 0.09; d = 1.0;
- % Parameters of the Runge-Kutta (4th order) methodtest = -1; deltaError = 0.001; M = 1000;t = linspace(0,T,M+1);h = T / M; h2 = h / 2; h6 = h / 6;S = zeros(1,M+1); I = zeros(1,M+1);C = zeros(1,M+1); A = zeros(1,M+1);
- % Initial conditions of the modelS(1) = 0.6; I(1) = 0.2; C(1) = 0.1; A(1) = 0.1;
- %Vectors for system restrictions and controlLambda1 = zeros(1,M+1); Lambda2 = zeros(1,M+1);Lambda3 = zeros(1,M+1); Lambda4 = zeros(1,M+1);U = zeros(1,M+1);% Iterations of the methodwhile(test < 0)
- oldS = S; oldI = I; oldC = C; oldA = A;oldLambda1 = Lambda1; oldLambda2 = Lambda2;oldLambda3 = Lambda3; oldLambda4 = Lambda4;oldU = U;
- %Forward Runge-Kutta iterationsfor i = 1:M
- % Differential equations of the model% First Runge-Kutta parameteraux1 = (1 - U(i)) * beta * (I(i) + etaC * C(i) + etaA * A(i)) * S(i);aux2 = d * A(i);
- auxS1 = b * (1 - S(i)) - aux1 + aux2 * S(i);auxI1 = aux1 - (ro + fi + b - aux2) * I(i) + alfa * A(i) + omega * C(i);auxC1 = fi * I(i) - (omega + b - aux2) * C(i);auxA1 = ro * I(i) - (alfa + b + d - aux2) * A(i);
- % Second Runge-Kutta parameterauxU = 0.5 * (U(i) + U(i+1));auxS = S(i) + h2 * auxS1; auxI = I(i) + h2 * auxI1;auxC = C(i) + h2 * auxC1; auxA = A(i) + h2 * auxA1;aux1 = (1 - auxU) * beta * (auxI + etaC * auxC + etaA * auxA) * auxS;aux2 = d * auxA;auxS2 = b * (1 - auxS) - aux1 + aux2 * auxS;auxI2 = aux1 - (ro + fi + b - aux2) * auxI + alfa * auxA + omega * auxC;auxC2 = fi * auxI - (omega + b - aux2) * auxC;auxA2 = ro * auxI - (alfa + b + d - aux2) * auxA;
- % Third Runge-Kutta parameterauxS = S(i) + h2 * auxS2; auxI = I(i) + h2 * auxI2;auxC = C(i) + h2 * auxC2; auxA = A(i) + h2 * auxA2;aux1 = (1 - auxU) * beta * (auxI + etaC * auxC + etaA * auxA) * auxS;aux2 = d * auxA;
- auxS3 = b * (1 - auxS) - aux1 + aux2 * auxS;auxI3 = aux1 - (ro + fi + b - aux2) * auxI + alfa * auxA + omega * auxC;auxC3 = fi * auxI - (omega + b - aux2) * auxC;auxA3 = ro * auxI - (alfa + b + d - aux2) * auxA;
- % Fourth Runge-Kutta parameterauxS = S(i) + h * auxS3; auxI = I(i) + h * auxI3;auxC = C(i) + h * auxC3; auxA = A(i) + h * auxA3;aux1 = (1 - U(i+1)) * beta * (auxI + etaC * auxC + etaA * auxA) * auxS;aux2 = d * auxA;
- auxS4 = b * (1 - auxS) - aux1 + aux2 * auxS;auxI4 = aux1 - (ro + fi + b - aux2) * auxI + alfa * auxA + omega * auxC;auxC4 = fi * auxI - (omega + b - aux2) * auxC;auxA4 = ro * auxI - (alfa + b + d - aux2) * auxA;
- % Runge-Kutta new approximationS(i+1) = S(i) + h6 * (auxS1 + 2 * (auxS2 + auxS3) + auxS4);I(i+1) = I(i) + h6 * (auxI1 + 2 * (auxI2 + auxI3) + auxI4);C(i+1) = C(i) + h6 * (auxC1 + 2 * (auxC2 + auxC3) + auxC4);A(i+1) = A(i) + h6 * (auxA1 + 2 * (auxA2 + auxA3) + auxA4);
- end
- %Backward Runge-Kutta iterationsfor i = 1:M
- j = M + 2 - i;
- % Differential equations of the model% First Runge-Kutta parameterauxU = 1 - U(j);aux1 = auxU * beta * (I(j) + etaC * C(j) + etaA * A(j));aux2 = d * A(j);
- auxLambda11 = -1 + Lambda1(j) * (b + aux1 - aux2) - Lambda2(j) * aux1;aux1 = auxU * beta * S(j);auxLambda21 = 1 + Lambda1(j) * aux1 - Lambda2(j) * (aux1 - (ro + fi + b) + ...+ aux2) - Lambda3(j) * fi - Lambda4(j) * ro;aux1 = auxU * beta * etaC * S(j);auxLambda31 = Lambda1(j) * aux1 - Lambda2(j) * (aux1 + ...+ omega) + Lambda3(j) * (omega + b - aux2);aux1 = auxU * beta * etaA * S(j);auxLambda41 = Lambda1(j) * (aux1 + d * S(j)) ...- Lambda2(j) * (aux1 + alfa + ...+ d * I(j)) - Lambda3(j) * d * C(j) + ...+ Lambda4(j) * (alfa + b + d - 2 * aux2);
- % Second Runge-Kutta parameterauxU = 1 - 0.5 * (U(j) + U(j-1));auxS = 0.5 * (S(j) + S(j-1));auxI = 0.5 * (I(j) + I(j-1));auxC = 0.5 * (C(j) + C(j-1));auxA = 0.5 * (A(j) + A(j-1));
- aux1 = auxU * beta * (auxI + etaC * auxC + etaA * auxA);aux2 = d * auxA;auxLambda1 = Lambda1(j) - h2 * auxLambda11;auxLambda2 = Lambda2(j) - h2 * auxLambda21;auxLambda3 = Lambda3(j) - h2 * auxLambda31;auxLambda4 = Lambda4(j) - h2 * auxLambda41;
- auxLambda12 = -1 + auxLambda1 * (b + aux1 - aux2) - auxLambda2 * aux1;aux1 = auxU * beta * auxS;auxLambda22 = 1 + auxLambda1 * aux1 - auxLambda2 * (aux1 - (ro + fi + b) + ...+ aux2) - auxLambda3 * fi - auxLambda4 * ro;aux1 = auxU * beta * etaC * auxS;auxLambda32 = auxLambda1 * aux1 - auxLambda2 * (aux1 + ...+ omega) + auxLambda3 * (omega + b - aux2);aux1 = auxU * beta * etaA * auxS;auxLambda42 = auxLambda1 * (aux1 + d * auxS) ...- auxLambda2 * (aux1 + alfa + ...+ d * auxI) - auxLambda3 * d * auxC + ...+ auxLambda4 * (alfa + b + d - 2 * aux2);
- % Third Runge-Kutta parameteraux1 = auxU * beta * (auxI + etaC * auxC + etaA * auxA);auxLambda1 = Lambda1(j) - h2 * auxLambda12;auxLambda2 = Lambda2(j) - h2 * auxLambda22;auxLambda3 = Lambda3(j) - h2 * auxLambda32;auxLambda4 = Lambda4(j) - h2 * auxLambda42;
- auxLambda13 = -1 + auxLambda1 * (b + aux1 - aux2) - auxLambda2 * aux1;aux1 = auxU * beta * auxS;auxLambda23 = 1 + auxLambda1 * aux1 ...- auxLambda2 * (aux1 - (ro + fi + b) + ...+ aux2) - auxLambda3 * fi - auxLambda4 * ro;aux1 = auxU * beta * etaC * auxS;auxLambda33 = auxLambda1 * aux1 - auxLambda2 * (aux1 + ...+ omega) + auxLambda3 * (omega + b - aux2);aux1 = auxU * beta * etaA * auxS;auxLambda43 = auxLambda1 * (aux1 + d * auxS) ...- auxLambda2 * (aux1 + alfa + d * auxI) - auxLambda3 * d * auxC + ...+ auxLambda4 * (alfa + b + d - 2 * aux2);% Fourth Runge-Kutta parameterauxU = 1 - U(j-1); auxS = S(j-1);auxI = I(j-1); auxC = C(j-1); auxA = A(j-1);
- aux1 = auxU * beta * (auxI + etaC * auxC + etaA * auxA);aux2 = d * auxA;auxLambda1 = Lambda1(j) - h * auxLambda13;auxLambda2 = Lambda2(j) - h * auxLambda23;auxLambda3 = Lambda3(j) - h * auxLambda33;auxLambda4 = Lambda4(j) - h * auxLambda43;
- auxLambda14 = -1 + auxLambda1 * (b + aux1 - aux2) ...- auxLambda2 * aux1;aux1 = auxU * beta * auxS;auxLambda24 = 1 + auxLambda1 * aux1 ...- auxLambda2 * (aux1 - (ro + fi + b) + ...+ aux2) - auxLambda3 * fi - auxLambda4 * ro;aux1 = auxU * beta * etaC * auxS;auxLambda34 = auxLambda1 * aux1 - auxLambda2 * (aux1 + ...+ omega) + auxLambda3 * (omega + b - aux2);aux1 = auxU * beta * etaA * auxS;auxLambda44 = auxLambda1 * (aux1 + d * auxS) ...- auxLambda2 * (aux1 + alfa + ...+ d * auxI) - auxLambda3 * d * auxC + ...+ auxLambda4 * (alfa + b + d - 2 * aux2);
- % Runge-Kutta new approximationLambda1(j-1) = Lambda1(j) - h6 * (auxLambda11 + ...+ 2 * (auxLambda12 + auxLambda13) + auxLambda14);Lambda2(j-1) = Lambda2(j) - h6 * (auxLambda21 + ...+ 2 * (auxLambda22 + auxLambda23) + auxLambda24);Lambda3(j-1) = Lambda3(j) - h6 * (auxLambda31 + ...+ 2 * (auxLambda32 + auxLambda33) + auxLambda34);Lambda4(j-1) = Lambda4(j) - h6 * (auxLambda41 + ...+ 2 * (auxLambda42 + auxLambda43) + auxLambda44);
- end
- % New vector controlfor i = 1:M+1
- vAux(i) = 0.5 * beta * (I(i) + etaC * C(i) + ...+ etaA * A(i)) * S(i) * (Lambda1(i) - Lambda2(i));auxU = min([max([0.0 vAux(i)]) 0.5]);U(i) = 0.5 * (auxU + oldU(i));
- end
- % Absolute error for convergencetemp1 = deltaError * sum(abs(S)) - sum(abs(oldS - S));temp2 = deltaError * sum(abs(I)) - sum(abs(oldI - I));temp3 = deltaError * sum(abs(C)) - sum(abs(oldC - C));temp4 = deltaError * sum(abs(A)) - sum(abs(oldA - A));temp5 = deltaError * sum(abs(U)) - sum(abs(oldU - U));temp6 = deltaError * sum(abs(Lambda1)) - sum(abs(oldLambda1 - Lambda1));temp7 = deltaError * sum(abs(Lambda2)) - sum(abs(oldLambda2 - Lambda2));temp8 = deltaError * sum(abs(Lambda3)) - sum(abs(oldLambda3 - Lambda3));temp9 = deltaError * sum(abs(Lambda4)) - sum(abs(oldLambda4 - Lambda4));test = min(temp1,min(temp2,min(temp3,min(temp4, ...min(temp5,min(temp6,min(temp7,min(temp8,temp9))))))));
- end
- dy(1,:) = t; dy(2,:) = S; dy(3,:) = I;dy(4,:) = C; dy(5,:) = A; dy(6,:) = U;disp("Value of LAMBDA at FINAL TIME");disp([Lambda1(M+1) Lambda2(M+1) Lambda3(M+1) Lambda4(M+1)]);
5. Conclusions
Author Contributions
Funding
Acknowledgments
Conflicts of Interest
References
- Brauer, F.; Castillo-Chavez, C. Mathematical Models in Population Biology and Epidemiology, 2nd ed.; Springer: New York, NY, USA, 2012. [Google Scholar] [CrossRef]
- Elazzouzi, A.; Lamrani Alaoui, A.; Tilioua, M.; Torres, D.F.M. Analysis of a SIRI epidemic model with distributed delay and relapse. Stat. Optim. Inf. Comput. 2019, 7, 545–557. [Google Scholar] [CrossRef]
- Pontryagin, L.S.; Boltyanskii, V.G.; Gamkrelidze, R.V.; Mishchenko, E.F. The Mathematical Theory of Optimal Processes; Translated from the Russian by K.N. Trirogoff; Neustadt, L.W., Ed.; John Wiley & Sons, Inc.: New York, NY, USA, 1962. [Google Scholar]
- Area, I.; Ndaïrou, F.; Nieto, J.J.; Silva, C.J.; Torres, D.F.M. Ebola model and optimal control with vaccination constraints. J. Ind. Manag. Optim. 2018, 14, 427–446. [Google Scholar] [CrossRef] [Green Version]
- Burlacu, R.; Cavache, A. On a class of optimal control problems in mathematical biology. IFAC Proc. Vol. 1999, 32, 3746–3759. [Google Scholar] [CrossRef]
- Deshpande, S. Optimal Input Signal Design for Data-Centric Identification and Control with Applications to Behavioral Health and Medicine; ProQuest LLC: Ann Arbor, MI, USA, 2014. [Google Scholar]
- Silva, C.J.; Torres, D.F.M.; Venturino, E. Optimal spraying in biological control of pests. Math. Model. Nat. Phenom. 2017, 12, 51–64. [Google Scholar] [CrossRef] [Green Version]
- Rosa, S.; Torres, D.F.M. Optimal control and sensitivity analysis of a fractional order TB model. Stat. Optim. Inf. Comput. 2019, 7, 617–625. [Google Scholar] [CrossRef] [Green Version]
- Allali, K.; Harroudi, S.; Torres, D.F.M. Analysis and optimal control of an intracellular delayed HIV model with CTL immune response. Math. Comput. Sci. 2018, 12, 111–127. [Google Scholar] [CrossRef] [Green Version]
- Silva, C.J.; Torres, D.F.M. A SICA compartmental model in epidemiology with application to HIV/AIDS in Cape Verde. Ecol. Complex. 2017, 30, 70–75. [Google Scholar] [CrossRef] [Green Version]
- Silva, C.J.; Torres, D.F.M. Modeling and optimal control of HIV/AIDS prevention through PrEP. Discrete Contin. Dyn. Syst. Ser. S 2018, 11, 119–141. [Google Scholar] [CrossRef]
- An, G. The Crisis of Reproducibility, the Denominator Problem and the Scientific Role of Multi-scale Modeling. Bull. Math. Biol. 2018, 80, 3071–3080. [Google Scholar] [CrossRef] [PubMed] [Green Version]
- Eaton, J.W.; Bateman, D.; Hauberg, S.; Wehbring, R. GNU Octave Version 5.1.0 Manual: A hIgh-Level Interactive Language for Numerical Computations. Available online: https://enacit.epfl.ch/cours/matlab-octave/octave-documentation/octave/octave.pdf (accessed on 6 October 2019).
- Cesari, L. Optimization—Theory and Applications; Springer: New York, NY, USA, 1983. [Google Scholar] [CrossRef]
- Salati, A.B.; Shamsi, M.; Torres, D.F.M. Direct transcription methods based on fractional integral approximation formulas for solving nonlinear fractional optimal control problems. Commun. Nonlinear Sci. Numer. Simul. 2019, 67, 334–350. [Google Scholar] [CrossRef] [Green Version]
- Nemati, S.; Lima, P.M.; Torres, D.F.M. A numerical approach for solving fractional optimal control problems using modified hat functions. Commun. Nonlinear Sci. Numer. Simul. 2019, 78, 104849. [Google Scholar] [CrossRef] [Green Version]
- Jung, E.; Lenhart, S.; Feng, Z. Optimal control of treatments in a two-strain tuberculosis model. Discrete Contin. Dyn. Syst. Ser. B 2002, 2, 473–482. [Google Scholar] [CrossRef]
- Silva, C.J.; Torres, D.F.M. Optimal control for a tuberculosis model with reinfection and post-exposure interventions. Math. Biosci. 2013, 244, 154–164. [Google Scholar] [CrossRef] [PubMed] [Green Version]
- Lenhart, S.; Workman, J.T. Optimal Control Applied to Biological Models; Chapman & Hall/CRC: Boca Raton, FL, USA, 2007. [Google Scholar]
- Rachah, A.; Torres, D.F.M. Mathematical modelling, simulation, and optimal control of the 2014 Ebola outbreak in West Africa. Discrete Dyn. Nat. Soc. 2015. [Google Scholar] [CrossRef] [Green Version]
- Malinzi, J.; Ouifki, R.; Eladdadi, A.; Torres, D.F.M.; White, K.A.J. Enhancement of chemotherapy using oncolytic virotherapy: Mathematical and optimal control analysis. Math. Biosci. Eng. 2018, 15, 1435–1463. [Google Scholar] [CrossRef] [PubMed] [Green Version]
Symbol | Description | Value |
---|---|---|
Natural death rate | ||
b | Recruitment rate | |
HIV transmission rate | ||
Modification parameter | ||
Modification parameter | ||
HIV treatment rate for I individuals | 1 | |
Default treatment rate for I individuals | ||
AIDS treatment rate | ||
Default treatment rate for C individuals | ||
d | AIDS induced death rate | 1 |
System Variables | ||||
---|---|---|---|---|
System Variables | ||||
---|---|---|---|---|
System Variables | ||||
---|---|---|---|---|
© 2019 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).
Share and Cite
Campos, C.; Silva, C.J.; Torres, D.F.M. Numerical Optimal Control of HIV Transmission in Octave/MATLAB. Math. Comput. Appl. 2020, 25, 1. https://doi.org/10.3390/mca25010001
Campos C, Silva CJ, Torres DFM. Numerical Optimal Control of HIV Transmission in Octave/MATLAB. Mathematical and Computational Applications. 2020; 25(1):1. https://doi.org/10.3390/mca25010001
Chicago/Turabian StyleCampos, Carlos, Cristiana J. Silva, and Delfim F. M. Torres. 2020. "Numerical Optimal Control of HIV Transmission in Octave/MATLAB" Mathematical and Computational Applications 25, no. 1: 1. https://doi.org/10.3390/mca25010001
APA StyleCampos, C., Silva, C. J., & Torres, D. F. M. (2020). Numerical Optimal Control of HIV Transmission in Octave/MATLAB. Mathematical and Computational Applications, 25(1), 1. https://doi.org/10.3390/mca25010001