This commit is contained in:
2020-02-13 16:18:17 -07:00
parent 7272f50290
commit abe8e40f5a
742 changed files with 117851 additions and 106552 deletions

2
HW2_KnapSack/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,2 @@
# Default ignored files
/workspace.xml

11
HW2_KnapSack/.idea/HW2_KnapSack.iml generated Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
</component>
</module>

View File

@@ -0,0 +1,5 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="PROJECT_PROFILE" />
</settings>
</component>

7
HW2_KnapSack/.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
</project>

8
HW2_KnapSack/.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/HW2_KnapSack.iml" filepath="$PROJECT_DIR$/.idea/HW2_KnapSack.iml" />
</modules>
</component>
</project>

7
HW2_KnapSack/.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
<mapping directory="$PROJECT_DIR$/metapensiero.pj" vcs="Git" />
</component>
</project>

BIN
HW2_KnapSack/Archive 2.zip Normal file

Binary file not shown.

BIN
HW2_KnapSack/Archive.zip Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

View File

@@ -0,0 +1,111 @@
import time
import matplotlib.pyplot as plt
from random import random, randint
import numpy as np
def knapsackBool(i, size):
# knapsack is full
if(size == 0):
return True;
#over full
if(size < 0):
return False;
# no more objects
if(i == 0):
return knapsackBool(i-1, size) or knapsackBool(i-1, size -S[i])
def modifiedKnapsack(i, k1, k2):
if(i == 0):
return 0
if((k2-S[i]<0) and (k1-S[i]<0)) :
return modifiedKnapsack(i-1, k1, k2)
if(i == 1):
return V[i]
if(k1 -S[i]>=0):
return max(modifiedKnapsack(i-1,k1,k2), modifiedKnapsack(i-1, k1-S[i],k2) + V[i])
return max(modifiedKnapsack(i-1,k1,k2), modifiedKnapsack(i-1, k1,k2-S[i]) + V[i])
def memoKnap(i, k1, k2):
if(C[i][k1][k2] != None):
return C[i][k1][k2]
if(i == 0):
rv = 0
elif(i==1):
rv = 0
elif(S[i] > k2 and S[i]> k1):
rv = memoKnap(i-1, k1, k2)
elif (k1 - S[i] >= 0):
rv = max(memoKnap(i - 1, k1, k2), memoKnap(i - 1, k1 - S[i], k2) + V[i])
elif((k2-S[i] < 0) and (k1-S[i]<0)):
rv = memoKnap(i-1, k1, k2)
else:
rv = max(memoKnap(i-1, k1, k2), memoKnap(i-1,k1,k2-S[i])+V[i])
C[i][k1][k2] = rv
return rv
def dpKnap(i, k1, k2):
if k1 < 0 or k2 < 0:
return float("-inf")
if array[i][k1][k2] is not None:
return array[i][k1][k2]
if i == 0:
array[i][k1][k2] = 0
return 0
array[i][k1][k2] = max(dpKnap(i - 1, k1, k2),dpKnap(i - 1, k1 - S[i], k2) + V[i], dpKnap(i - 1, k1, k2 - S[i]) + V[i])
return array[i][k1][k2]
def probGen(N, aSize):
V = [random() for x in range(0, N+1)]
S = [randint(1, 2 * aSize) for x in range(0, N+1)]
return S, V
K1 = 100
K2 = 100
N = 50
_memoTime = []
_size = []
_dpTime = []
for _ in range(0, 10):
C = [[[None for k in range(0, 100 + 1)] for t in range(0, 100 + 1)] for b in range(0, N+1)]
aSize = randint(1,2*N)
S, V = probGen(N, aSize)
memoTime = 0
dpTime = 0
for _ in range(1, 20):
startMemo = time.time()
memo = memoKnap(N, K1, K2)
endMemo = time.time()
memoTime += endMemo - startMemo
array = np.full((N + 1, K1 + 1, K2 + 1), None)
startDp = time.time()
dp = dpKnap(N, K1, K2)
endDp = time.time()
dpTime += endDp - startDp
_memoTime.append(memoTime)
_dpTime.append(dpTime)
_size.append(aSize)
plt.plot(_size, _memoTime, color='blue', label = "Memo Knapsack")
plt.plot(_size, _dpTime, color='red', label = "DP Knapsack")
plt.xlabel('Average Size')
plt.ylabel('Run Time (seconds)')
plt.title("Memoized vs Dynamic Knapsack Run Times")
plt.legend()
plt.show()
plt.savefig("test.png")

BIN
HW2_KnapSack/test.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB