BAB V KESIMPULAN DAN SARAN
5.2 Saran
Pada penelitian ini dibahas mengenai analisis kestabilan model penyebaran virus HIV dengan menggunakan laju pertumbuhan sel CD4 yang konstan. Oleh karena itu terbuka peluang untuk pembaca melakukan penelitian selanjutnya menggunakan laju pertumbuhan sel CD4 yang tidak konstan. Selain itu juga untuk hasil yang lebih baik, dapat menggunakan kondisi free final state dan free final time atau dengan kata lain bebas menentukan waktu dan state akhirnya, karena pada skripsi ini waktu akhir telah ditentukan (fix final time) dan state akhir yang bebas (free final state), sehingga tidak dapat mengetahui pada hari ke berapa state
DAFTAR PUSTAKA
1. Anton, H., 1987, Aljabar Linier Elementer, Erlangga, Jakarta
2. Bronson R., Costa G.B., 2007, Differential Equations, The Mc Grow-Hill Companies,Inc., New Jersey
3. Felissa R. L., Jerry D. D., 2009, The person with HIV/AIDS: nursing perspectives, Springer Publishing Company, Inggris
4. Graham, A., dan Gurghes, D.N., Introduction to Control Theory Including Optimal Control, Halsted Press, New York
5. http://kkp-balikpapan.blogspot.com/2011/05/seputar-cd4.html, 3 April 2012 6. http://www.cdc.gov/hiv/resources/qa/transmission.htm, 9 April 2012
7. Jenny P., Maylani L., Delene P., Monica J., 2006. Working with HIV/AIDS, Juta Legal and Academic Publishers, Cape Town
8. Jones, D.S., Sleeman B.D., 2003, Differential Equations and Mathematical Biology, CRC Press, New York
9. Lewis F.L., Syrmos V.L., 1995, Optimal Control, Willy Interscience, Canada 10.Merkin, D.R., 1997, Introduction to the Theory of Stability, Springer, New
York
11. Naidu D.S., 2002, Optimal Control Systems, CRC Press, New York 12. Olsder, G.J., 1992, Mathematical System Theory, Delft, The Natherland 13. Schoub B. D., 1999, AIDS and HIV in Perspective: A Guide to
Understanding the Virus and its Consequences. Cambridge University Press, Inggris
14. Shirazian M., Farahi M. H., 2010, Optimal Control Strategy for a Fully Determined HIV Model, vol.1, Intelligent Control and Automation, pg. 15-19 15.Sontag E.D., Thoma M., 2001, Control Theory for Linier Systems, Springer,
London
16. Vandermeer, J., 1981, Elementary Mathematical Ecology, A Wiley-Interscience Publication, Canada
17. Wardah, F., 2012, http://www.voaindonesia.com/content/penderita-baru-hivaids-di-jakarta-berjumlah-1184-orang-134637773/101326.html, 15 Maret 2012
18.Weisstein, Eric W., 1999, Eigen Decomposition, http://mathworld.wolfram.com/EigenDecomposition.html , 24 April 2012 19. Zhou, K. Doyle, J. C., dan Glover, K., 1996, Robust and Optimal Control,
Lampiran 1
Skrip M-File pada MATLAB
untuk Model Penyebaran Virus HIV Tanpa Pengontrol
% A MATLAB example described in detail in the technical report %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %
% DOTcvp - Dynamic Optimization Toolbox with CVP approach for %
% handling continuous and mixed-integer dynamic optimization problems %
% Copyright (C) 2007-2010 %
% Tomas Hirmajer et al., [email protected] %
% %
% The DOTcvp toolbox is completely free of charge under the creative %
% commons license. The conditions of the license can be found on the %
% following web page: % % http://creativecommons.org/licenses/by-nc-nd/3.0/ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %
clear mex; clear all; close all;
% --- % % Initialization:
% --- %
data.name = 'HIVTanpaKontrol';
data.compiler = 'None'; %['None'|'FORTRAN']
% --- % % Settings for IVP (ODEs, sensitivities):
% --- %
data.odes.Def_FORTRAN = {}; %this option is needed only for
FORTRAN parameters definition, e.g. {'double precision k10, k20, ..'}
data.odes.parameters = {}; %constant parameters before ODE
{'T=300','..}
data.odes.Def_MATLAB = {}; %this option is needed only for
MATLAB parameters definition
data.odes.res(1) = {
data.odes.res(2) = {
'0.00000042163*y(1)*y(3)-0.0999*y(2)'};
data.odes.res(3) = {'90.67*y(2)-0.2*y(3)'};
data.odes.black_box = {'None','1','FunctionName'};
%['None'|'Full'],[penalty coefficient for all constraints],[a black box model function name]
data.odes.ic = [1000 0 7000];
data.odes.NUMs = size(data.odes.res,2); %number of
state variables (y)
data.odes.t0 = 0.0; %initial time
data.odes.tf = 1000.0; %final time
data.odes.NonlinearSolver = 'Newton'; %['Newton'|'Functional']
/Newton for stiff problems; Functional for non-stiff problems
data.odes.LinearSolver = 'Dense'; %direct
['Dense'|'Diag'|'Band']; iterative ['GMRES'|'BiCGStab'|'TFQMR'] /for the Newton NLS
data.odes.LMM = 'Adams'; %['Adams'|'BDF'] /Adams for
non-stiff problems; BDF for stiff problems
data.odes.MaxNumStep = 500; %maximum number of steps
data.odes.RelTol = 1*10^(-7); %IVP relative tolerance
level
data.odes.AbsTol = 1*10^(-7); %IVP absolute tolerance
level
data.sens.SensAbsTol = 1*10^(-7); %absolute tolerance for
sensitivity variables
data.sens.SensMethod = 'Simultaneous';
%['Staggered'|'Staggered1'|'Simultaneous']
data.sens.SensErrorControl= 'on'; %['on'|'off']
% --- % % NLP definition:
% --- %
data.nlp.RHO = 10; %number of time intervals
data.nlp.problem = 'min'; %['min'|'max']
data.nlp.J0 = '0'; %cost function: min-max(cost
function)
data.nlp.u0 = [0]; %initial value for control values
data.nlp.lb = [0]; %lower bounds for control values
data.nlp.ub = [1]; %upper bounds for control values
data.nlp.p0 = []; %initial values for
time-independent parameters
data.nlp.lbp = []; %lower bounds for time-independent
parameters
data.nlp.ubp = []; %upper bounds for time-independent
parameters
data.nlp.solver = 'FMINCON';
%['FMINCON'|'IPOPT'|'SRES'|'DE'|'ACOMI'|'MISQP'|'MITS']
data.nlp.SolverSettings = 'None'; %insert the name of the file
that contains settings for NLP solver, if does not exist use ['None']
data.nlp.NLPtol = 1*10^(-5); %NLP tolerance level
data.nlp.GradMethod = 'SensitivityEq';
%['SensitivityEq'|'FiniteDifference'|'None']
data.nlp.MaxIter = 1000; %Maximum number of iterations
data.nlp.MaxCPUTime = 60*60*0.50; %Maximum CPU time of the
data.nlp.approximation = 'PWC'; %['PWC'|'PWL'] PWL only for: FMINCON & without the free time problem
data.nlp.FreeTime = 'off'; %['on'|'off'] set 'on' if free
time is considered
data.nlp.t0Time = [data.odes.tf/data.nlp.RHO]; %initial
size of the time intervals, e.g. [data.odes.tf/data.nlp.RHO] or for the each time interval separately [dt1 dt2 dt3]
data.nlp.lbTime = 0.01; %lower bound of the time
intervals
data.nlp.ubTime = data.odes.tf; %upper bound of the time
intervals
data.nlp.NUMc = size(data.nlp.u0,2); %number of
control variables (u)
data.nlp.NUMi = 0; %number of integer variables (u)
taken from the last control variables, if not equal to 0 you need to use some MINLP solver ['ACOMI'|'MISQP'|'MITS']
data.nlp.NUMp = size(data.nlp.p0,2); %number of
time-independent parameters (p)
% --- % % Equality constraints (ECs):
% --- %
data.nlp.eq.status = 'off'; %['on'|'off'] ECs
data.nlp.eq.NEC = 1; %number of active ECs
data.nlp.eq.eq(1) = {''};
data.nlp.eq.time(1) = data.nlp.RHO;
data.nlp.eq.PenaltyFun = 'off'; %['on'|'off'] ECs penalty
function
data.nlp.eq.PenaltyCoe = [1.0];
%J0=J0+data.nlp.eq.PenaltyCoe*ViolationOfEqualityConstraint /* only for stochastic solvers */
% --- % % Inequality /path/ constraints (INECs):
% --- %
data.nlp.ineq.status = 'off'; %['on'|'off'] INECs
data.nlp.ineq.NEC = 2; %number of active INECs
data.nlp.ineq.InNUM = 1; %how many inequality constraints
are '>' else '<'
data.nlp.ineq.eq(1) = {''};
data.nlp.ineq.eq(2) = {''};
data.nlp.ineq.Tol = 0.0005; %tolerance level of violation
of INECs
data.nlp.ineq.PenaltyFun = 'off'; %['on'|'off'] INECs penalty
function
data.nlp.ineq.PenaltyCoe = [1.0 1.0];
%J0=J0+data.nlp.ineq.PenaltyCoe*ViolationOfInequalityConstraint /* for every inequality constraint one parameter */
% --- % % Options for setting of the final output:
% --- %
data.options.intermediate = 'off'; %['on'|'off'|'silent'] display
of the intermediate results
data.options.display = 'on'; %['on'|'off'] display of the
data.options.title = 'on'; %['on'|'off'] display of the figure title
data.options.state = 'on'; %['on'|'off'] display of the
state trajectory
data.options.control = 'on'; %['on'|'off'] display of the
control trajectory
data.options.ConvergCurve = 'on'; %['on'|'off'] display of the
convergence curve
data.options.Pict_Format = 'eps'; %['eps'|'wmf'|'both'] save
figures as
data.options.report = 'on'; %['on'|'off'] save data in the
dat file
data.options.commands = {''}; %additional commands, e.g.
'figure(1),.. '
data.options.trajectories = data.odes.NUMs; %how many state
trajectories will be displayed
data.options.profiler = 'off'; %['on'|'off']
data.options.multistart = 1; %set 1 if the multistart is off,
otherwise you have to put here some integer value
data.options.action = 'single-optimization';
%['single-optimization'|'re-optimization'|'hybrid-strategy'|'simulation'] % --- %
% Call of the main function (you do not change this!): % --- %
Lampiran 2
Skrip M-File pada MATLAB
untuk Model Penyebaran Virus HIV Dengan Pengontrol
% A MATLAB example described in detail in the technical report %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %
% DOTcvp - Dynamic Optimization Toolbox with CVP approach for %
% handling continuous and mixed-integer dynamic optimization problems %
% Copyright (C) 2007-2010 %
% Tomas Hirmajer et al., [email protected] %
% %
% The DOTcvp toolbox is completely free of charge under the creative %
% commons license. The conditions of the license can be found on the %
% following web page: % % http://creativecommons.org/licenses/by-nc-nd/3.0/ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %
clear mex; clear all; close all;
% --- % % Initialization:
% --- %
data.name = 'HIVDenganKontrol';
data.compiler = 'None'; %['None'|'FORTRAN']
% --- % % Settings for IVP (ODEs, sensitivities):
% --- %
data.odes.Def_FORTRAN = {}; %this option is needed only for
FORTRAN parameters definition, e.g. {'double precision k10, k20, ..'}
data.odes.parameters = {}; %constant parameters before ODE
{'T=300','..}
data.odes.Def_MATLAB = {}; %this option is needed only for
MATLAB parameters definition
data.odes.res(1) = {
data.odes.res(2) = {
'0.00000042163*y(1)*y(3)-0.00000042163*y(1)*y(3)*u(1)-0.0999*y(2)'};
data.odes.res(3) = {'90.67*y(2)-0.2*y(3)'};
data.odes.res(4) = {'y(1)-(1/2*110*(u(1))^2)'};
data.odes.black_box = {'None','1','FunctionName'};
%['None'|'Full'],[penalty coefficient for all constraints],[a black box model function name]
data.odes.ic = [363 57 28860 0];
data.odes.NUMs = size(data.odes.res,2); %number of
state variables (y)
data.odes.t0 = 0.0; %initial time
data.odes.tf = 1000.0; %final time
data.odes.NonlinearSolver = 'Newton'; %['Newton'|'Functional']
/Newton for stiff problems; Functional for non-stiff problems
data.odes.LinearSolver = 'Dense'; %direct
['Dense'|'Diag'|'Band']; iterative ['GMRES'|'BiCGStab'|'TFQMR'] /for the Newton NLS
data.odes.LMM = 'Adams'; %['Adams'|'BDF'] /Adams for
non-stiff problems; BDF for stiff problems
data.odes.MaxNumStep = 500; %maximum number of steps
data.odes.RelTol = 1*10^(-7); %IVP relative tolerance
level
data.odes.AbsTol = 1*10^(-7); %IVP absolute tolerance
level
data.sens.SensAbsTol = 1*10^(-7); %absolute tolerance for
sensitivity variables
data.sens.SensMethod = 'Simultaneous';
%['Staggered'|'Staggered1'|'Simultaneous']
data.sens.SensErrorControl= 'on'; %['on'|'off']
% --- % % NLP definition:
% --- %
data.nlp.RHO = 20; %number of time intervals
data.nlp.problem = 'max'; %['min'|'max']
data.nlp.J0 = 'y(4)'; %cost function: min-max(cost
function)
data.nlp.u0 = [0]; %initial value for control values
data.nlp.lb = [0]; %lower bounds for control values
data.nlp.ub = [1]; %upper bounds for control values
data.nlp.p0 = []; %initial values for
time-independent parameters
data.nlp.lbp = []; %lower bounds for time-independent
parameters
data.nlp.ubp = []; %upper bounds for time-independent
parameters
data.nlp.solver = 'FMINCON';
%['FMINCON'|'IPOPT'|'SRES'|'DE'|'ACOMI'|'MISQP'|'MITS']
data.nlp.SolverSettings = 'None'; %insert the name of the file
that contains settings for NLP solver, if does not exist use ['None']
data.nlp.NLPtol = 1*10^(-5); %NLP tolerance level
data.nlp.GradMethod = 'SensitivityEq';
%['SensitivityEq'|'FiniteDifference'|'None']
data.nlp.MaxCPUTime = 60*60*0.50; %Maximum CPU time of the optimization (60*60*0.25) = 15 minutes
data.nlp.approximation = 'PWC'; %['PWC'|'PWL'] PWL only for:
FMINCON & without the free time problem
data.nlp.FreeTime = 'off'; %['on'|'off'] set 'on' if free
time is considered
data.nlp.t0Time = [data.odes.tf/data.nlp.RHO]; %initial
size of the time intervals, e.g. [data.odes.tf/data.nlp.RHO] or for the each time interval separately [dt1 dt2 dt3]
data.nlp.lbTime = 0.01; %lower bound of the time
intervals
data.nlp.ubTime = data.odes.tf; %upper bound of the time
intervals
data.nlp.NUMc = size(data.nlp.u0,2); %number of
control variables (u)
data.nlp.NUMi = 0; %number of integer variables (u)
taken from the last control variables, if not equal to 0 you need to use some MINLP solver ['ACOMI'|'MISQP'|'MITS']
data.nlp.NUMp = size(data.nlp.p0,2); %number of
time-independent parameters (p)
% --- % % Equality constraints (ECs):
% --- %
data.nlp.eq.status = 'off'; %['on'|'off'] ECs
data.nlp.eq.NEC = 1; %number of active ECs
data.nlp.eq.eq(1) = {''};
data.nlp.eq.time(1) = data.nlp.RHO;
data.nlp.eq.PenaltyFun = 'off'; %['on'|'off'] ECs penalty
function
data.nlp.eq.PenaltyCoe = [1.0];
%J0=J0+data.nlp.eq.PenaltyCoe*ViolationOfEqualityConstraint /* only for stochastic solvers */
% --- % % Inequality /path/ constraints (INECs):
% --- %
data.nlp.ineq.status = 'off'; %['on'|'off'] INECs
data.nlp.ineq.NEC = 2; %number of active INECs
data.nlp.ineq.InNUM = 1; %how many inequality constraints
are '>' else '<'
data.nlp.ineq.eq(1) = {''};
data.nlp.ineq.eq(2) = {''};
data.nlp.ineq.Tol = 0.0005; %tolerance level of violation
of INECs
data.nlp.ineq.PenaltyFun = 'off'; %['on'|'off'] INECs penalty
function
data.nlp.ineq.PenaltyCoe = [1.0 1.0];
%J0=J0+data.nlp.ineq.PenaltyCoe*ViolationOfInequalityConstraint /* for every inequality constraint one parameter */
% --- % % Options for setting of the final output:
% --- %
data.options.intermediate = 'off'; %['on'|'off'|'silent'] display
data.options.display = 'on'; %['on'|'off'] display of the figures
data.options.title = 'on'; %['on'|'off'] display of the
figure title
data.options.state = 'on'; %['on'|'off'] display of the
state trajectory
data.options.control = 'on'; %['on'|'off'] display of the
control trajectory
data.options.ConvergCurve = 'on'; %['on'|'off'] display of the
convergence curve
data.options.Pict_Format = 'eps'; %['eps'|'wmf'|'both'] save
figures as
data.options.report = 'on'; %['on'|'off'] save data in the
dat file
data.options.commands = {''}; %additional commands, e.g.
'figure(1),.. '
data.options.trajectories = data.odes.NUMs-1; %how many state
trajectories will be displayed
data.options.profiler = 'off'; %['on'|'off']
data.options.multistart = 1; %set 1 if the multistart is off,
otherwise you have to put here some integer value
data.options.action = 're-optimization';
%['single-optimization'|'re-optimization'|'hybrid-strategy'|'simulation'] % --- %
% Call of the main function (you do not change this!): % --- %
Lampiran 3
Output pada Command Window MATLAB untuk Model Penyebaran Virus HIV Tanpa Pengontrol
________________________________________________________ DOTcvp: Dynamic Optimization Toolbox with CVP approach for handling continuous and mixed-integer DO problems Main author: Tomas Hirmajer, [email protected] Coauthors: Eva Balsa-Canto and Julio R. Banga Web pages: http://www.iim.csic.es/~dotcvp/ http://www.iim.csic.es/~dotcvpsb/ Core version: DOTcvp_R2010_E3
________________________________________________________ ________________________________________________________ DOTcvp - a Module for Single Optimization
________________________________________________________
!!! Warning: gnumex or mingw not find -> FORTRAN option is switched off !!! Saving of the ODE ... done!
Generation of the file: cvm_rhs.m (ODE - MATLAB) ... done! Saving of the parameters ... done!
Generation of the file: cvm_d/bjac.m (Jacobian - MATLAB) ... done! Saving of the cost function (J0) ... done!
Generation of the gradients (J0) ... done!
Generation of the file: cvm_rhsS.m (sensitivities - MATLAB) ... done! Generation of the file: temp_cvfdx.m (main IVP file) ... done!
Optimizing of the process (N=10; min(J0); FMINCON; HIVTanpaKontrol) ... in progress
Default settings are loading ... done!
Generation of the file: cvm_rhs.m (ODE - MATLAB) ... done! Generation of the file: temp_cvfdx.m (main IVP file) ... done! Simulation of the process ... done!
Save of the data ... done! Deleting of the temporary files ... done! ____________________________
Final results [single-optimization]:
... Problem name: HIVTanpaKontrol ... NLP or MINLP solver: FMINCON
. Number of time intervals: 10
... IVP relative tolerance: 1.000000e-007 ... IVP absolute tolerance: 1.000000e-007 . Sens. absolute tolerance: 1.000000e-007 ... NLP tolerance: 1.000000e-005
... Final state values: 5.232428e+002 3.357243e+001 1.521358e+004 ... 1th optimal control: 0.000000e+000 0.000000e+000 0.000000e+000
0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000
____________________________
... Final CPUtime: 3.58802300 seconds . Cost function [min(J_0)]: 0.00000000
Lampiran 4
Output pada Command Window MATLAB untuk Model Penyebaran Virus HIV Dengan Pengontrol
________________________________________________________ DOTcvp: Dynamic Optimization Toolbox with CVP approach for handling continuous and mixed-integer DO problems Main author: Tomas Hirmajer, [email protected] Coauthors: Eva Balsa-Canto and Julio R. Banga Web pages: http://www.iim.csic.es/~dotcvp/ http://www.iim.csic.es/~dotcvpsb/ Core version: DOTcvp_R2010_E3
________________________________________________________ ________________________________________________________ DOTcvp - a Module for Single Optimization
________________________________________________________
!!! Warning: gnumex or mingw not find -> FORTRAN option is switched off !!! Saving of the ODE ... done!
Generation of the file: cvm_rhs.m (ODE - MATLAB) ... done! Saving of the parameters ... done!
Generation of the file: cvm_d/bjac.m (Jacobian - MATLAB) ... done! Saving of the cost function (J0) ... done!
Generation of the gradients (J0) ... done!
Generation of the file: cvm_rhsS.m (sensitivities - MATLAB) ... done! Generation of the file: temp_cvfdx.m (main IVP file) ... done!
Optimizing of the process (N=20; max(J0); FMINCON; HIVDenganKontrol) ... in progress
Default settings are loading ... done!
Generation of the file: cvm_rhs.m (ODE - MATLAB) ... done! Generation of the file: temp_cvfdx.m (main IVP file) ... done! Simulation of the process ... done!
Save of the data ... done! Deleting of the temporary files ... done! ____________________________
Final results [single-optimization]:
... Problem name: HIVDenganKontrol ... NLP or MINLP solver: FMINCON . Number of time intervals: 20
... IVP relative tolerance: 1.000000e-007 ... IVP absolute tolerance: 1.000000e-007 . Sens. absolute tolerance: 1.000000e-007 ... NLP tolerance: 1.000000e-005
... Final state values: 9.870580e+002 4.049094e+000 1.527869e+003 8.961011e+005
... 1th optimal control: 9.999909e-001 5.349776e-001 4.665382e-001 4.668006e-001 4.704759e-001 4.709377e-001 4.706718e-001 4.699118e-001 4.683051e-001 4.654527e-001 4.608519e-001 4.525102e-001 4.416731e-001 4.297100e-001 4.167878e-001 3.997642e-001 3.731624e-001 3.310193e-001 2.589508e-001 1.083172e-001
____________________________
... Final CPUtime: 154.70619170 seconds . Cost function [max(J_0)]: 896101.13263563