scipplan 0.1.0a0__py2.py3-none-any.whl → 0.1.0a2__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
scipplan/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = "0.1.0alpha0"
1
+ __version__ = "0.1.0alpha2"
2
2
  print(f"SCIPPlan Version: {__version__}")
3
3
  __release__ = "v0.1.0"
4
4
  __author__ = "Ari Gestetner, Buser Say"
5
- __email__ = "ages0001@student.monash.edu, buser.say@monash.edu"
5
+ __email__ = "ari.gestetner@monash.edu, buser.say@monash.edu"
scipplan/config.py CHANGED
@@ -12,7 +12,7 @@ class Config:
12
12
  Alternatively, the `get_config` class method will return a config instance using variables set by the programs args (e.g. -D 'domain').
13
13
  """
14
14
  domain: str
15
- instance: int
15
+ instance: str
16
16
  horizon: int = field(default=None)
17
17
  epsilon: float = field(default=None)
18
18
  gap: float = field(default=None)
@@ -32,17 +32,17 @@ class Config:
32
32
  "gap": False
33
33
  }
34
34
  if self.horizon is None:
35
- print("Horizon is not provided, and is set to 1")
35
+ print("Horizon is not provided, and is set to 1. ")
36
36
  self.horizon = 1
37
37
  self._defaults["horizon"] = True
38
38
 
39
39
  if self.epsilon is None:
40
- print("Epsilon is not provided, and is set to 0.1")
40
+ print("Epsilon is not provided, and is set to 0.1. ")
41
41
  self.epsilon = 0.1
42
42
  self._defaults["epsilon"] = True
43
43
 
44
44
  if self.gap is None:
45
- print("Gap is not provided, and is set to 10.0%")
45
+ print("Gap is not provided, and is set to 10.0%. ")
46
46
  self.gap = 0.1
47
47
  self._defaults["gap"] = True
48
48
 
@@ -55,7 +55,7 @@ class Config:
55
55
  Dt Variable Name: {self.dt_var}
56
56
 
57
57
  Domain (str): {self.domain}
58
- Instance (int): {self.instance}
58
+ Instance (str): {self.instance}
59
59
  Horizon (int): {self.horizon} {'(default)' if self._defaults['horizon'] is True else ''}
60
60
  Epsilon (float): {self.epsilon} {'(default)' if self._defaults['epsilon'] is True else ''}
61
61
  Gap (float): {self.gap * 100}% {'(default)' if self._defaults['gap'] is True else ''}
@@ -64,9 +64,11 @@ class Config:
64
64
  return dedent(text)
65
65
 
66
66
  def increment_horizon(self, value: int = 1):
67
- self._defaults["horizon"] = False
67
+ # self._defaults["horizon"] = False
68
68
  self.horizon += value
69
69
 
70
+ def get_defaults(self) -> dict[str, bool]:
71
+ return self._defaults
70
72
 
71
73
  @classmethod
72
74
  def get_config(cls) -> Config:
@@ -84,7 +86,7 @@ class Config:
84
86
  "-I",
85
87
  "--instance",
86
88
  required=True,
87
- type=int,
89
+ type=str,
88
90
  help="This is the instance number of the domain (e.g. navigation has instances 1, 2 and 3)"
89
91
  )
90
92
  parser.add_argument(
scipplan/parse_model.py CHANGED
@@ -218,53 +218,17 @@ class ParseModel:
218
218
  raise Exception("Unknown ast type")
219
219
 
220
220
 
221
- functions = {
222
- 'exp': exp,
223
- 'log': log,
224
- 'sqrt': sqrt,
225
- 'sin': sin,
226
- 'cos': cos,
227
- }
228
- variables = {
229
- 'c': 0.15,
230
- 'Removed': 634.9055920077616,
231
- 'Removed_dash': 1811.3128718631383,
232
- 'b2': 0.1,
233
- 'Makespan': 180.0,
234
- 'Susceptible': 1218.7473517769768,
235
- 'Susceptible_dash': 87.1003300803328,
236
- 'DurationMax': 90.0,
237
- 'N': 2000.0,
238
- 'Dt': 0.0,
239
- 'Infected': 146.34705621526638,
240
- 'Infected_dash': 101.58679805652946,
241
- 'TotalTime': 90.87927389935685,
242
- 'TotalTime_dash': 136.34829117841537,
243
- 'b': 0.19999999999999973,
244
- 'Epsilon': 1.0,
245
- 'Percentage': 0.8,
246
- 'DurationMin': 30.0,
247
- 'b1': 0.2,
248
- 'Duration': 100.0,
249
- 'D': 150.0,
250
- 'InitialInfected': 50.0,
251
- 'Lockdown': 0.0
252
- }
253
-
254
- constraint = "Infected * exp((b / (b - c)) * log(1 + (Infected / Susceptible))) * exp(-1.0 * (b / (b - c)) * log(1 + (Infected / Susceptible) * exp((b - c) * Dt))) * exp((b - c) * Dt) <= D"
255
-
256
-
257
221
 
258
222
  if __name__ == "__main__":
259
- params = EvalParams.as_calculator(variables, functions, {})
260
- calc = ParseModel(params).evaluate
223
+ # params = EvalParams.as_calculator(variables, functions, {})
224
+ # calc = ParseModel(params).evaluate
261
225
 
262
- print(calc(constraint))
226
+ # print(calc(constraint))
263
227
  eqtns = """
264
228
  1 + 2
265
229
  1 + 5 < 5
266
230
  """
267
- print(calc(eqtns))
231
+ print((eqtns))
268
232
  # print(calc(
269
233
  # """
270
234
  # a >= b if a + b + c >= 5 else a - b - c == 10
scipplan/scipplan.py CHANGED
@@ -130,9 +130,10 @@ class SCIPPlan:
130
130
 
131
131
  @classmethod
132
132
  def solve(cls, config: Config) -> tuple[SCIPPlan, float]:
133
+ # Time total solve time including incrementing horizon
134
+ start_time = time.time()
133
135
  while True:
134
136
  model = SCIPPlan(config)
135
- start_time = time.time()
136
137
  try:
137
138
  print(f"Encoding the problem over horizon h={config.horizon}.")
138
139
  print("Solving the problem.")
@@ -144,12 +145,21 @@ class SCIPPlan:
144
145
  return model, solve_time
145
146
 
146
147
 
147
- except InfeasibilityError:
148
+ except InfeasibilityError:
149
+ if config.get_defaults().get("horizon") is False:
150
+ print(f"Horizon of h={model.config.horizon} is infeasible.")
151
+
152
+ solve_time = (time.time() - start_time)
153
+ print(f"Total time: {solve_time:.3f}")
154
+
155
+ raise InfeasibilityError
156
+
157
+
148
158
  # print("Problem is infeasible for the given horizon.")
149
- print(f"Horizon of h={model.config.horizon} is infeasible, incrementing to h={model.config.horizon + 1}")
159
+ print(f"Horizon of h={model.config.horizon} is infeasible, incrementing to h={model.config.horizon + 1}.")
150
160
  config.increment_horizon()
151
161
  if config.show_output is True:
152
- print(f"Horizon Time: {(time.time() - start_time): .3f} seconds")
162
+ print(f"Horizon Time: {(time.time() - start_time): .3f} seconds.")
153
163
 
154
164
 
155
165
  def save_values(self, iteration: int):
@@ -162,8 +172,11 @@ def main():
162
172
  print(f"PySCIPOpt Version: {version('pyscipopt')}\n")
163
173
  config = Config.get_config()
164
174
  print(config)
165
-
166
- plan, solve_time = SCIPPlan.solve(config)
175
+
176
+ try:
177
+ plan, solve_time = SCIPPlan.solve(config)
178
+ except InfeasibilityError:
179
+ return None
167
180
 
168
181
  if config.save_sols is True:
169
182
  write_to_csv("new_constraints", plan.new_constraints, config)
@@ -185,9 +198,9 @@ def main():
185
198
  for action_name in action_names:
186
199
  if action_name == config.dt_var:
187
200
  continue
188
- print(f"{action_name} at step {step} by value {plan.scip_model.getVal(plan.plan.variables[(action_name, step)].model_var):.3f}")
201
+ print(f"{action_name} at step {step} by value {plan.scip_model.getVal(plan.plan.variables[(action_name, step)].model_var):.3f}.")
189
202
 
190
- print(f"Dt at step {step} by value {plan.scip_model.getVal(plan.plan.variables[('Dt', step)].model_var):.3f} \n")
203
+ print(f"Dt at step {step} by value {plan.scip_model.getVal(plan.plan.variables[('Dt', step)].model_var):.3f}. \n")
191
204
 
192
205
  print(f"Total reward: {(plan.scip_model.getObjVal()):.3f}")
193
206
  print(f"Total time: {solve_time:.3f}")
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scipplan
3
- Version: 0.1.0a0
3
+ Version: 0.1.0a2
4
4
  Summary: Metric Hybrid Factored Planning in Nonlinear Domains with Constraint Generation in Python.
5
5
  Author: Ari Gestetner, Buser Say
6
- Author-email: ages0001@student.monash.edu, buser.say@monash.edu
6
+ Author-email: ari.gestetner@monash.edu, buser.say@monash.edu
7
7
  License: MIT License
8
8
  Keywords: scip,automated planner
9
9
  Classifier: Development Status :: 3 - Alpha
@@ -1,54 +1,38 @@
1
- scipplan/__init__.py,sha256=DFKsXFuWCEPlRh1XozFuUiyTqLf47yVYHnKpFjKtbkI,196
2
- scipplan/config.py,sha256=VmsdogXHy535KheufJtREI8ZQ7lJVxYxzzPXzLoU-38,5136
1
+ scipplan/__init__.py,sha256=jClOsjTAC0gEL9LxLj39i7JJf5UcYhIofSUwQKwZnag,193
2
+ scipplan/config.py,sha256=0D6UcLjrv4PTjYRiPoIYXAsRu4nwcaOIWnsI4lAdK6Y,5221
3
3
  scipplan/helpers.py,sha256=YwEr0NeDvb29_Ot686km3ZMJ-vHu-L8zjuexmlKDjpY,974
4
- scipplan/parse_model.py,sha256=THP1TX6kllK4fwvxVGuzGIS4w2PVCg83GP1QhLiA8U0,10516
4
+ scipplan/parse_model.py,sha256=-vssLQZHbXxkoiHjTHD-ZxY2h0w9LvGuJZXSd4RZvlM,9564
5
5
  scipplan/plan_model.py,sha256=daHnVHn2e89OtXXMl63QEoeKGOmy_LwT2oCRTjUUlKQ,11145
6
- scipplan/scipplan.py,sha256=aoHXP4YhYn9IAY4N2ZKQGgzKTG1tDEC_TpVctnO307k,7741
6
+ scipplan/scipplan.py,sha256=z6cuRug4amCg6LU7S4RYHcV6uT3vWLHYGRh9OXFkKoU,8225
7
7
  scipplan/variables.py,sha256=3sxY3zQuxsa5z2fTFjv4zOSb9GarzojZ4W4kIx9FX68,2561
8
8
  scipplan/zero_crossing.py,sha256=kGyJsWZLLXqLW1p3LPDlPC34rTkFF8daDzqgbEcaXus,1043
9
- scipplan/translation/constants_infection_1.txt,sha256=7MFkFGycNWOrdDJ7gZyEPmVtAzphbJXnXMFv1ogT3bg,179
10
9
  scipplan/translation/constants_navigation_1.txt,sha256=X0jvJe5MiwvayKBVXo9TQlGZGfUlpnFpMiReL68rsXc,43
11
10
  scipplan/translation/constants_navigation_2.txt,sha256=eMN8PnTBS5qc_8u6W7Q-wSlXvX_wFjFaFCT38wviiQE,44
12
11
  scipplan/translation/constants_navigation_3.txt,sha256=ItHwvPfASUvSbdKlek4GFZweDGmxT1wRr3SH7W4-CBc,24
13
- scipplan/translation/constants_pandemic_1.txt,sha256=7MFkFGycNWOrdDJ7gZyEPmVtAzphbJXnXMFv1ogT3bg,179
14
- scipplan/translation/goals_infection_1.txt,sha256=IuVcZ7jkt1f12UR0y8FsyqUNZ8ypYLLqlTeFte5u6zQ,49
15
12
  scipplan/translation/goals_navigation_1.txt,sha256=uxlsrr_M5maa8FGVZXrsnzu7CG-R1ubKVu8Wj5eAqks,35
16
13
  scipplan/translation/goals_navigation_2.txt,sha256=uxlsrr_M5maa8FGVZXrsnzu7CG-R1ubKVu8Wj5eAqks,35
17
14
  scipplan/translation/goals_navigation_3.txt,sha256=uxlsrr_M5maa8FGVZXrsnzu7CG-R1ubKVu8Wj5eAqks,35
18
- scipplan/translation/goals_pandemic_1.txt,sha256=IuVcZ7jkt1f12UR0y8FsyqUNZ8ypYLLqlTeFte5u6zQ,49
19
- scipplan/translation/initials_infection_1.txt,sha256=PM5-6kvHk-VMV_sSWpvC2tbq5Uvavm4DRelrRKOGsCQ,95
20
15
  scipplan/translation/initials_navigation_1.txt,sha256=6uKI2B_vG-AACgFrBmmPBqC_NEQ2znHTcV44aI-rbXY,66
21
16
  scipplan/translation/initials_navigation_2.txt,sha256=s7ukUEHwcmMsey1bHCRJh515PLKYXODz8Sb5jQBtGeM,65
22
17
  scipplan/translation/initials_navigation_3.txt,sha256=s7ukUEHwcmMsey1bHCRJh515PLKYXODz8Sb5jQBtGeM,65
23
- scipplan/translation/initials_pandemic_1.txt,sha256=PM5-6kvHk-VMV_sSWpvC2tbq5Uvavm4DRelrRKOGsCQ,95
24
- scipplan/translation/instantaneous_constraints_infection_1.txt,sha256=gr9bxKFi_A3ZMCxB1nFemLrnJZpNvWzc9em4lk8AZuc,167
25
18
  scipplan/translation/instantaneous_constraints_navigation_1.txt,sha256=WbITeszv_n93_BhE2eiNqFPAZVO4f2s44KcKUsNURyA,244
26
19
  scipplan/translation/instantaneous_constraints_navigation_2.txt,sha256=e5YdZn3OKLJh0kEiCNqpOgxgAAQxIHMB3J5OTYvPlgw,333
27
20
  scipplan/translation/instantaneous_constraints_navigation_3.txt,sha256=HnzfFntGIQ0WIMnEfcYPg1cy7u9dJn3xuYqdXZVFFvE,422
28
- scipplan/translation/instantaneous_constraints_pandemic_1.txt,sha256=gr9bxKFi_A3ZMCxB1nFemLrnJZpNvWzc9em4lk8AZuc,167
29
- scipplan/translation/pvariables_infection_1.txt,sha256=TfBDRG_FrKgxRYUFCA2ypQJZCIWLvDhUzLr_DwQFiKA,187
30
21
  scipplan/translation/pvariables_navigation_1.txt,sha256=97t5uPWAWKmtbDPJZIor5nn5qPU6aMcGdpLAuKnlDbQ,217
31
22
  scipplan/translation/pvariables_navigation_2.txt,sha256=lGUNN04bC-CJFTThNC3dwP9kU2xGftSshx-24I6zlZw,216
32
23
  scipplan/translation/pvariables_navigation_3.txt,sha256=1-yvM5BSJ5TXBlHkMbcXWd5zoc2ezSBpIIuM_zwEXSo,216
33
- scipplan/translation/pvariables_pandemic_1.txt,sha256=TfBDRG_FrKgxRYUFCA2ypQJZCIWLvDhUzLr_DwQFiKA,187
34
- scipplan/translation/reward_infection_1.txt,sha256=3AZZGt7w5voiqwVlEkc2-NXXh6NxBqFPWraCZKwhpcM,20
35
24
  scipplan/translation/reward_navigation_1.txt,sha256=dvR0CkxkWRbO3wP0fenXDSDMpueEUtSUqw990UnCcJY,26
36
25
  scipplan/translation/reward_navigation_2.txt,sha256=ck6uUGNhM_DWiG1hHN6_xTps1muychzqTOpz1iLF9bk,26
37
26
  scipplan/translation/reward_navigation_3.txt,sha256=O8unFCIySCz4GCBX_9mQcm-JMn5Ur6upp3HBbA4e_C8,22
38
- scipplan/translation/reward_pandemic_1.txt,sha256=3AZZGt7w5voiqwVlEkc2-NXXh6NxBqFPWraCZKwhpcM,20
39
- scipplan/translation/temporal_constraints_infection_1.txt,sha256=pReUU1lQsTwrREYJwlEeslSp56boHCKaIE1kIrXbPV8,175
40
27
  scipplan/translation/temporal_constraints_navigation_1.txt,sha256=h06iRA5TDr6R5XdjhEyYnZ3f-FQwUkbKGNw-t0k0jm8,875
41
28
  scipplan/translation/temporal_constraints_navigation_2.txt,sha256=x73dbxxb_YzvdvtVNaJfG-S9ggf-yqTYdoU6NiDQBqk,1319
42
29
  scipplan/translation/temporal_constraints_navigation_3.txt,sha256=Ki4nAX9-QtBbY9ZdHwHdqta8JQoLrAVvlZrLa1pWLnQ,1668
43
- scipplan/translation/temporal_constraints_pandemic_1.txt,sha256=pReUU1lQsTwrREYJwlEeslSp56boHCKaIE1kIrXbPV8,175
44
- scipplan/translation/transitions_infection_1.txt,sha256=iDxrZUngYgxgZmGTur4sSWLZssG9AGGuY_BaYHmoxn0,564
45
30
  scipplan/translation/transitions_navigation_1.txt,sha256=kfnr3_A9mCfflLsL4aq7OeR_BHSNST6eYuAg4ZxaPoU,411
46
31
  scipplan/translation/transitions_navigation_2.txt,sha256=kfnr3_A9mCfflLsL4aq7OeR_BHSNST6eYuAg4ZxaPoU,411
47
32
  scipplan/translation/transitions_navigation_3.txt,sha256=aIPP3FOjXZ3G6sTqicEIZ0JKJxdxHCRRZIdc5bUPFBM,395
48
- scipplan/translation/transitions_pandemic_1.txt,sha256=iDxrZUngYgxgZmGTur4sSWLZssG9AGGuY_BaYHmoxn0,564
49
- scipplan-0.1.0a0.dist-info/LICENSE,sha256=tfR4peJA8KJtYEn1NzNV-LWQVRAserdq7OJgYghreR0,1057
50
- scipplan-0.1.0a0.dist-info/METADATA,sha256=BePW-SSEWLg7-0QhOoaiBRWI336Wp6wJ8hB3iRg8flA,11236
51
- scipplan-0.1.0a0.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
52
- scipplan-0.1.0a0.dist-info/entry_points.txt,sha256=3qiNbbp6qIwivyPmmikyp7ByCfmsa9rGFNJPcN9Is8I,52
53
- scipplan-0.1.0a0.dist-info/top_level.txt,sha256=xO2FLRn7YQ-C25E8lagIEbik5T5FTr-Ta5bdiZezEPY,9
54
- scipplan-0.1.0a0.dist-info/RECORD,,
33
+ scipplan-0.1.0a2.dist-info/LICENSE,sha256=tfR4peJA8KJtYEn1NzNV-LWQVRAserdq7OJgYghreR0,1057
34
+ scipplan-0.1.0a2.dist-info/METADATA,sha256=MUXEq6y_8mBhdIUWVA9qUtfJof6yRVD70AWe9Wml_1s,11233
35
+ scipplan-0.1.0a2.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
36
+ scipplan-0.1.0a2.dist-info/entry_points.txt,sha256=3qiNbbp6qIwivyPmmikyp7ByCfmsa9rGFNJPcN9Is8I,52
37
+ scipplan-0.1.0a2.dist-info/top_level.txt,sha256=xO2FLRn7YQ-C25E8lagIEbik5T5FTr-Ta5bdiZezEPY,9
38
+ scipplan-0.1.0a2.dist-info/RECORD,,
@@ -1,17 +0,0 @@
1
- b1 = 0.2
2
- b2 = 0.1
3
- c = 0.15
4
- N = 2000.0
5
- D = 150.0
6
-
7
- Makespan = 180.0
8
-
9
- Epsilon = 1.0
10
-
11
- Duration = 100.0
12
- DurationMin = 30.0
13
- DurationMax = 90.0
14
-
15
- Percentage = 0.8
16
-
17
- InitialInfected = 50.0
@@ -1,17 +0,0 @@
1
- b1 = 0.2
2
- b2 = 0.1
3
- c = 0.15
4
- N = 2000.0
5
- D = 150.0
6
-
7
- Makespan = 180.0
8
-
9
- Epsilon = 1.0
10
-
11
- Duration = 100.0
12
- DurationMin = 30.0
13
- DurationMax = 90.0
14
-
15
- Percentage = 0.8
16
-
17
- InitialInfected = 50.0
@@ -1,3 +0,0 @@
1
- Removed >= N * Percentage
2
-
3
- TotalTime == Makespan
@@ -1,3 +0,0 @@
1
- Removed >= N * Percentage
2
-
3
- TotalTime == Makespan
@@ -1,5 +0,0 @@
1
- Susceptible == N - InitialInfected
2
- Infected == InitialInfected
3
- Removed == 0.0
4
-
5
- TotalTime == 0.0
@@ -1,5 +0,0 @@
1
- Susceptible == N - InitialInfected
2
- Infected == InitialInfected
3
- Removed == 0.0
4
-
5
- TotalTime == 0.0
@@ -1,12 +0,0 @@
1
- b - b1 + Lockdown >= 0.0
2
- b - b1 - Lockdown <= 0.0
3
-
4
- b - b2 + (1 - Lockdown) >= 0.0
5
- b - b2 - (1 - Lockdown) <= 0.0
6
-
7
-
8
- b <= b1
9
- b >= b2
10
-
11
- Dt >= DurationMin
12
- Dt <= DurationMax
@@ -1,12 +0,0 @@
1
- b - b1 + Lockdown >= 0.0
2
- b - b1 - Lockdown <= 0.0
3
-
4
- b - b2 + (1 - Lockdown) >= 0.0
5
- b - b2 - (1 - Lockdown) <= 0.0
6
-
7
-
8
- b <= b1
9
- b >= b2
10
-
11
- Dt >= DurationMin
12
- Dt <= DurationMax
@@ -1,12 +0,0 @@
1
- state_continuous: Susceptible
2
- state_continuous: Infected
3
- state_continuous: Removed
4
-
5
- state_continuous: TotalTime
6
-
7
- action_boolean: Lockdown
8
- action_continuous: Dt
9
-
10
- auxiliary_continuous: b
11
-
12
-
@@ -1,12 +0,0 @@
1
- state_continuous: Susceptible
2
- state_continuous: Infected
3
- state_continuous: Removed
4
-
5
- state_continuous: TotalTime
6
-
7
- action_boolean: Lockdown
8
- action_continuous: Dt
9
-
10
- auxiliary_continuous: b
11
-
12
-
@@ -1 +0,0 @@
1
- -1.0 * Lockdown * Dt
@@ -1 +0,0 @@
1
- -1.0 * Lockdown * Dt
@@ -1 +0,0 @@
1
- Infected * exp((b / (b - c)) * log(1 + (Infected / Susceptible))) * exp(-1.0 * (b / (b - c)) * log(1 + (Infected / Susceptible) * exp((b - c) * Dt))) * exp((b - c) * Dt) <= D
@@ -1 +0,0 @@
1
- Infected * exp((b / (b - c)) * log(1 + (Infected / Susceptible))) * exp(-1.0 * (b / (b - c)) * log(1 + (Infected / Susceptible) * exp((b - c) * Dt))) * exp((b - c) * Dt) <= D
@@ -1,7 +0,0 @@
1
- Susceptible_dash - Susceptible * exp((b / (b - c)) * log(1 + (Infected / Susceptible))) * exp(-1.0 * (b / (b - c)) * log(1 + (Infected / Susceptible) * exp((b - c) * Dt))) == 0.0
2
-
3
- Infected_dash - Infected * exp((b / (b - c)) * log(1 + (Infected / Susceptible))) * exp(-1.0 * (b / (b - c)) * log(1 + (Infected / Susceptible) * exp((b - c) * Dt))) * exp((b - c) * Dt) == 0.0
4
-
5
- Removed_dash - N + exp((b / (b - c)) * log(Susceptible + Infected)) * exp(-1.0 * (c / (b - c)) * log(Susceptible + Infected * exp((b - c) * Dt))) == 0.0
6
-
7
- TotalTime_dash - TotalTime - Dt == 0
@@ -1,7 +0,0 @@
1
- Susceptible_dash - Susceptible * exp((b / (b - c)) * log(1 + (Infected / Susceptible))) * exp(-1.0 * (b / (b - c)) * log(1 + (Infected / Susceptible) * exp((b - c) * Dt))) == 0.0
2
-
3
- Infected_dash - Infected * exp((b / (b - c)) * log(1 + (Infected / Susceptible))) * exp(-1.0 * (b / (b - c)) * log(1 + (Infected / Susceptible) * exp((b - c) * Dt))) * exp((b - c) * Dt) == 0.0
4
-
5
- Removed_dash - N + exp((b / (b - c)) * log(Susceptible + Infected)) * exp(-1.0 * (c / (b - c)) * log(Susceptible + Infected * exp((b - c) * Dt))) == 0.0
6
-
7
- TotalTime_dash - TotalTime - Dt == 0