Clearing environment

rm(list = ls())

Loading necessary package

require(deSolve)

System of DEs

SARSCOV2Model <- function (t, y, params) {
  
S.h<-y[1] #create local variable S, first element of y
E.h<-y[2] 
I.h<-y[3]
S.l<-y[4]
E.l<-y[5]
I.l<-y[6]
Q<-y[7]
R<-y[8]
V<-y[9]

with(
  as.list(params, y),
  {
dS.h<--q*beta*(I.h+I.l)*S.h/(S.h+E.h+I.h+S.l+E.l+I.l+Q+R)-c*(1-exp((-1/K)*V))*S.h
dE.h<-q*beta*(I.h+I.l)*S.h/(S.h+E.h+I.h+S.l+E.l+I.l+Q+R)+c*(1-exp((-1/K)*V))*S.h-lambda*E.h
dI.h<-lambda*E.h-b*g*I.h-aH*h*(1-g)*I.h-gammaH*(1-h)*(1-g)*I.h
dS.l<--(1-p)*q*beta*(I.h+I.l)*S.l/(S.h+E.h+I.h+S.l+E.l+I.l+Q+R)-(1-p)*c*(1-exp((-1/K)*V))*S.l
dE.l<-(1-p)*q*beta*(I.h+I.l)/(S.h+E.h+I.h+S.l+E.l+I.l+Q+R)+(1-p)*c*(1-exp((-1/K)*V))*S.l-lambda*E.l
dI.l<-lambda*E.l-b*I.l
dQ<-b*I.l+g*b*I.h-aQ*h*Q-gammaQ*(1-h)*Q
dR<-gammaH*(1-h)*(1-g)*I.h+gammaQ*(1-h)*Q
dV<-omega*I.h+(1-p)*omega*I.l-delta*V
  dy<-c(dS.h,dE.h,dI.h,dS.l,dE.l,dI.l,dQ,dR,dV) #combine results into one vector dy
list(dy)
  }
)
}

Initial Values

times<-seq(0,180,by=1) 
covid.params<-c(q=0.5,beta=13,p=.2,c=0,lambda=1/4.43,b=1/0.77,g=0,gammaQ=0.1,gammaH=1/2.7,aQ=1/1.93,aH=1/2.7,h=0.00082,omega=0,delta=1,K=100000)
ystart<-c(S.h=(.2)*100000,E.h=0,I.h=1,S.l=(1-0.2)*100000,E.l=0,I.l=0,Q=0,R=0,V=0)
covid.out <- as.data.frame(lsoda(ystart,times,SARSCOV2Model,covid.params))

Plotting all classes with initial values

op1 <- par(mar=c(6,6,2,2))
plot(covid.out$S.h~covid.out$time,type="l", col="blue", xlab="Days", ylab="Individuals", ylim=c(0,80000))
lines(covid.out$E.h~covid.out$time, col="red")
lines(covid.out$I.h~covid.out$time, col="purple")
lines(covid.out$S.l~covid.out$time, col="green")
lines(covid.out$E.l~covid.out$time, col="orange")
lines(covid.out$I.l~covid.out$time, col="darkturquoise")
lines(covid.out$Q~covid.out$time, col="orchid2")
lines(covid.out$R~covid.out$time, col="deeppink1")
legend(100, 70000,legend = c("Susceptible (High)","Exposed (High)","Infected (High)","Susceptible (Low)","Exposed (Low)","Infected (Low)","Self-Isolating","Recovered"), col = c("blue","red","purple","green","orange","darkturquoise","orchid2","deeppink1"), lty=1, cex=0.8)
par(op1)

op2 <- par(mar=c(6,6,2,2))

plot(covid.out$V~covid.out$time, type="l", col="forestgreen", xlab="Days", ylab="Virus in Environment")
par(op2)

Results of Plot

# first dataframe lists highest values
# second dataframe lists lowest values
# third dataframe lists ending values

results <- data.frame(
  S.h = c(max(covid.out[ ,2]),min(covid.out[ ,2]),tail(covid.out[ ,2],n=1)),
  E.h = c(max(covid.out[ ,3]),min(covid.out[ ,3]),tail(covid.out[ ,3],n=1)),
  I.h = c(max(covid.out[ ,4]),min(covid.out[ ,4]),tail(covid.out[ ,4],n=1)),
  S.l = c(max(covid.out[ ,5]),min(covid.out[ ,5]),tail(covid.out[ ,5],n=1)),
  E.l = c(max(covid.out[ ,6]),min(covid.out[ ,6]),tail(covid.out[ ,6],n=1)),
  I.l = c(max(covid.out[ ,7]),min(covid.out[ ,7]),tail(covid.out[ ,7],n=1)),
  Q = c(max(covid.out[ ,8]),min(covid.out[ ,8]),tail(covid.out[ ,8],n=1)),
  R = c(max(covid.out[ ,9]),min(covid.out[ ,9]),tail(covid.out[ ,9],n=1)),
  V = c(max(covid.out[ ,10]),min(covid.out[ ,10]),tail(covid.out[ ,10],n=1))
)

`.rowNamesDF<-`(results,make.names=FALSE,c('Highest','Lowest','Ending'))
LS0tDQp0aXRsZTogIlNBUlMtQ29WLTIgTW9kZWwgKEluaXRpYWwgVmFsdWVzKSINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICBodG1sX2RvY3VtZW50Og0KICAgIGRmX3ByaW50OiBwYWdlZA0KICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQNCi0tLQ0KQ2xlYXJpbmcgZW52aXJvbm1lbnQNCmBgYHtyfQ0Kcm0obGlzdCA9IGxzKCkpDQpgYGANCg0KTG9hZGluZyBuZWNlc3NhcnkgcGFja2FnZQ0KYGBge3J9DQpyZXF1aXJlKGRlU29sdmUpDQpgYGANCg0KU3lzdGVtIG9mIERFcw0KYGBge3J9DQpTQVJTQ09WMk1vZGVsIDwtIGZ1bmN0aW9uICh0LCB5LCBwYXJhbXMpIHsNCiAgDQpTLmg8LXlbMV0gI2NyZWF0ZSBsb2NhbCB2YXJpYWJsZSBTLCBmaXJzdCBlbGVtZW50IG9mIHkNCkUuaDwteVsyXSANCkkuaDwteVszXQ0KUy5sPC15WzRdDQpFLmw8LXlbNV0NCkkubDwteVs2XQ0KUTwteVs3XQ0KUjwteVs4XQ0KVjwteVs5XQ0KDQp3aXRoKA0KICBhcy5saXN0KHBhcmFtcywgeSksDQogIHsNCmRTLmg8LS1xKmJldGEqKEkuaCtJLmwpKlMuaC8oUy5oK0UuaCtJLmgrUy5sK0UubCtJLmwrUStSKS1jKigxLWV4cCgoLTEvSykqVikpKlMuaA0KZEUuaDwtcSpiZXRhKihJLmgrSS5sKSpTLmgvKFMuaCtFLmgrSS5oK1MubCtFLmwrSS5sK1ErUikrYyooMS1leHAoKC0xL0spKlYpKSpTLmgtbGFtYmRhKkUuaA0KZEkuaDwtbGFtYmRhKkUuaC1iKmcqSS5oLWFIKmgqKDEtZykqSS5oLWdhbW1hSCooMS1oKSooMS1nKSpJLmgNCmRTLmw8LS0oMS1wKSpxKmJldGEqKEkuaCtJLmwpKlMubC8oUy5oK0UuaCtJLmgrUy5sK0UubCtJLmwrUStSKS0oMS1wKSpjKigxLWV4cCgoLTEvSykqVikpKlMubA0KZEUubDwtKDEtcCkqcSpiZXRhKihJLmgrSS5sKS8oUy5oK0UuaCtJLmgrUy5sK0UubCtJLmwrUStSKSsoMS1wKSpjKigxLWV4cCgoLTEvSykqVikpKlMubC1sYW1iZGEqRS5sDQpkSS5sPC1sYW1iZGEqRS5sLWIqSS5sDQpkUTwtYipJLmwrZypiKkkuaC1hUSpoKlEtZ2FtbWFRKigxLWgpKlENCmRSPC1nYW1tYUgqKDEtaCkqKDEtZykqSS5oK2dhbW1hUSooMS1oKSpRDQpkVjwtb21lZ2EqSS5oKygxLXApKm9tZWdhKkkubC1kZWx0YSpWDQogIGR5PC1jKGRTLmgsZEUuaCxkSS5oLGRTLmwsZEUubCxkSS5sLGRRLGRSLGRWKSAjY29tYmluZSByZXN1bHRzIGludG8gb25lIHZlY3RvciBkeQ0KbGlzdChkeSkNCiAgfQ0KKQ0KfQ0KYGBgDQoNCkluaXRpYWwgVmFsdWVzDQpgYGB7cn0NCnRpbWVzPC1zZXEoMCwxODAsYnk9MSkgDQpjb3ZpZC5wYXJhbXM8LWMocT0wLjUsYmV0YT0xMyxwPS4yLGM9MCxsYW1iZGE9MS80LjQzLGI9MS8wLjc3LGc9MCxnYW1tYVE9MC4xLGdhbW1hSD0xLzIuNyxhUT0xLzEuOTMsYUg9MS8yLjcsaD0wLjAwMDgyLG9tZWdhPTAsZGVsdGE9MSxLPTEwMDAwMCkNCnlzdGFydDwtYyhTLmg9KC4yKSoxMDAwMDAsRS5oPTAsSS5oPTEsUy5sPSgxLTAuMikqMTAwMDAwLEUubD0wLEkubD0wLFE9MCxSPTAsVj0wKQ0KY292aWQub3V0IDwtIGFzLmRhdGEuZnJhbWUobHNvZGEoeXN0YXJ0LHRpbWVzLFNBUlNDT1YyTW9kZWwsY292aWQucGFyYW1zKSkNCmBgYA0KDQpQbG90dGluZyBhbGwgY2xhc3NlcyB3aXRoIGluaXRpYWwgdmFsdWVzDQpgYGB7cn0NCm9wMSA8LSBwYXIobWFyPWMoNiw2LDIsMikpDQpwbG90KGNvdmlkLm91dCRTLmh+Y292aWQub3V0JHRpbWUsdHlwZT0ibCIsIGNvbD0iYmx1ZSIsIHhsYWI9IkRheXMiLCB5bGFiPSJJbmRpdmlkdWFscyIsIHlsaW09YygwLDgwMDAwKSkNCmxpbmVzKGNvdmlkLm91dCRFLmh+Y292aWQub3V0JHRpbWUsIGNvbD0icmVkIikNCmxpbmVzKGNvdmlkLm91dCRJLmh+Y292aWQub3V0JHRpbWUsIGNvbD0icHVycGxlIikNCmxpbmVzKGNvdmlkLm91dCRTLmx+Y292aWQub3V0JHRpbWUsIGNvbD0iZ3JlZW4iKQ0KbGluZXMoY292aWQub3V0JEUubH5jb3ZpZC5vdXQkdGltZSwgY29sPSJvcmFuZ2UiKQ0KbGluZXMoY292aWQub3V0JEkubH5jb3ZpZC5vdXQkdGltZSwgY29sPSJkYXJrdHVycXVvaXNlIikNCmxpbmVzKGNvdmlkLm91dCRRfmNvdmlkLm91dCR0aW1lLCBjb2w9Im9yY2hpZDIiKQ0KbGluZXMoY292aWQub3V0JFJ+Y292aWQub3V0JHRpbWUsIGNvbD0iZGVlcHBpbmsxIikNCmxlZ2VuZCgxMDAsIDcwMDAwLGxlZ2VuZCA9IGMoIlN1c2NlcHRpYmxlIChIaWdoKSIsIkV4cG9zZWQgKEhpZ2gpIiwiSW5mZWN0ZWQgKEhpZ2gpIiwiU3VzY2VwdGlibGUgKExvdykiLCJFeHBvc2VkIChMb3cpIiwiSW5mZWN0ZWQgKExvdykiLCJTZWxmLUlzb2xhdGluZyIsIlJlY292ZXJlZCIpLCBjb2wgPSBjKCJibHVlIiwicmVkIiwicHVycGxlIiwiZ3JlZW4iLCJvcmFuZ2UiLCJkYXJrdHVycXVvaXNlIiwib3JjaGlkMiIsImRlZXBwaW5rMSIpLCBsdHk9MSwgY2V4PTAuOCkNCnBhcihvcDEpDQoNCm9wMiA8LSBwYXIobWFyPWMoNiw2LDIsMikpDQpwbG90KGNvdmlkLm91dCRWfmNvdmlkLm91dCR0aW1lLCB0eXBlPSJsIiwgY29sPSJmb3Jlc3RncmVlbiIsIHhsYWI9IkRheXMiLCB5bGFiPSJWaXJ1cyBpbiBFbnZpcm9ubWVudCIpDQpwYXIob3AyKQ0KYGBgDQoNClJlc3VsdHMgb2YgUGxvdA0KYGBge3J9DQojIGZpcnN0IGRhdGFmcmFtZSBsaXN0cyBoaWdoZXN0IHZhbHVlcw0KIyBzZWNvbmQgZGF0YWZyYW1lIGxpc3RzIGxvd2VzdCB2YWx1ZXMNCiMgdGhpcmQgZGF0YWZyYW1lIGxpc3RzIGVuZGluZyB2YWx1ZXMNCg0KcmVzdWx0cyA8LSBkYXRhLmZyYW1lKA0KICBTLmggPSBjKG1heChjb3ZpZC5vdXRbICwyXSksbWluKGNvdmlkLm91dFsgLDJdKSx0YWlsKGNvdmlkLm91dFsgLDJdLG49MSkpLA0KICBFLmggPSBjKG1heChjb3ZpZC5vdXRbICwzXSksbWluKGNvdmlkLm91dFsgLDNdKSx0YWlsKGNvdmlkLm91dFsgLDNdLG49MSkpLA0KICBJLmggPSBjKG1heChjb3ZpZC5vdXRbICw0XSksbWluKGNvdmlkLm91dFsgLDRdKSx0YWlsKGNvdmlkLm91dFsgLDRdLG49MSkpLA0KICBTLmwgPSBjKG1heChjb3ZpZC5vdXRbICw1XSksbWluKGNvdmlkLm91dFsgLDVdKSx0YWlsKGNvdmlkLm91dFsgLDVdLG49MSkpLA0KICBFLmwgPSBjKG1heChjb3ZpZC5vdXRbICw2XSksbWluKGNvdmlkLm91dFsgLDZdKSx0YWlsKGNvdmlkLm91dFsgLDZdLG49MSkpLA0KICBJLmwgPSBjKG1heChjb3ZpZC5vdXRbICw3XSksbWluKGNvdmlkLm91dFsgLDddKSx0YWlsKGNvdmlkLm91dFsgLDddLG49MSkpLA0KICBRID0gYyhtYXgoY292aWQub3V0WyAsOF0pLG1pbihjb3ZpZC5vdXRbICw4XSksdGFpbChjb3ZpZC5vdXRbICw4XSxuPTEpKSwNCiAgUiA9IGMobWF4KGNvdmlkLm91dFsgLDldKSxtaW4oY292aWQub3V0WyAsOV0pLHRhaWwoY292aWQub3V0WyAsOV0sbj0xKSksDQogIFYgPSBjKG1heChjb3ZpZC5vdXRbICwxMF0pLG1pbihjb3ZpZC5vdXRbICwxMF0pLHRhaWwoY292aWQub3V0WyAsMTBdLG49MSkpDQopDQoNCmAucm93TmFtZXNERjwtYChyZXN1bHRzLG1ha2UubmFtZXM9RkFMU0UsYygnSGlnaGVzdCcsJ0xvd2VzdCcsJ0VuZGluZycpKQ0KYGBgDQoNCg==