diff --git a/.gitignore b/.gitignore index 13d1490..927f0b2 100644 --- a/.gitignore +++ b/.gitignore @@ -128,4 +128,4 @@ dmypy.json # Pyre type checker .pyre/ - +.idea/ diff --git a/Network Dimensioning Practice.pdf b/Network Dimensioning Practice.pdf new file mode 100644 index 0000000..8954fd9 Binary files /dev/null and b/Network Dimensioning Practice.pdf differ diff --git a/Strats/tut.py b/Strats/tut.py new file mode 100644 index 0000000..5084dcd --- /dev/null +++ b/Strats/tut.py @@ -0,0 +1,10 @@ +# neptun1 neptun2 + +def init_bw(): + return 200 + +def decision(new, list_entry): +# print '--', new, list_entry +# print [1,[1 for x in list_entry]] + return [1,[1 for x in list_entry]] + diff --git a/Strats/tutgold.py b/Strats/tutgold.py new file mode 100644 index 0000000..07239d5 --- /dev/null +++ b/Strats/tutgold.py @@ -0,0 +1,17 @@ +# neptun1 neptun2 + +def init_bw(): + return 150 + +def decision(new, list_entry): +# print '--', new, list_entry + bw={'bronze': 1, 'silver': 3, 'gold': 10} + if new != 'gold': + br=len([x for x in list_entry if x[0]=='bronze']) + go=len([x for x in list_entry if x[0]=='bronze']) + si=len([x for x in list_entry if x[0]=='silver']) + bwn=sum([bw[x[0]] for x in list_entry]) + if bwn > init_bw()-bw['gold']: + return [0,[1 for x in list_entry]] + return [1,[1 for x in list_entry]] + diff --git a/Strats/tutplus.py b/Strats/tutplus.py new file mode 100644 index 0000000..30059c4 --- /dev/null +++ b/Strats/tutplus.py @@ -0,0 +1,14 @@ +# neptun1 neptun2 + +def init_bw(): + return 80 + +def decision(new, list_entry): +# print '--', new, list_entry + if new == 'gold': +# print [1,[1 for x in list_entry]] + return [1,[1 for x in list_entry]] + else: +# print [0,[1 for x in list_entry]] + return [0,[1 for x in list_entry]] + diff --git a/Strats/tutpro.py b/Strats/tutpro.py new file mode 100644 index 0000000..8e66d8e --- /dev/null +++ b/Strats/tutpro.py @@ -0,0 +1,17 @@ +# neptun1 neptun2 + +def init_bw(): + return 100 + +def decision(new, list_entry): +# print '--', new, list_entry + bw={'bronze': 1, 'silver': 3, 'gold': 10} + if new == 'gold': + b=sum([bw[x[0]] for x in list_entry]) + if b+10>init_bw(): + br=len([x for x in list_entry if x[0]=='bronze']) + si=len([x for x in list_entry if x[0]=='silver']) + if b+10-br<=init_bw(): + return [1,[0 if x[0]=='bronze' else 0 for x in list_entry]] + return [1,[1 for x in list_entry]] + diff --git a/bw.json b/bw.json new file mode 100644 index 0000000..7f8b6e8 --- /dev/null +++ b/bw.json @@ -0,0 +1 @@ +{'bronze':{'bw': 1, 'value': 2, 'damage':4, 'duration': 100, 'pr': 0.4}, 'silver': {'bw': 3, 'value': 5, 'damage':6, 'duration': 50, 'pr': 0.3}, 'gold':{'bw': 10, 'value': 30, 'damage':80, 'duration': 70, 'pr': 0.1}} diff --git a/event1.txt b/event1.txt new file mode 100644 index 0000000..0dd0d78 --- /dev/null +++ b/event1.txt @@ -0,0 +1,1618 @@ +0 bronze +1 bronze +2 gold +3 silver +4 bronze +5 silver +6 silver +8 silver +9 silver +10 bronze +11 silver +13 bronze +14 silver +15 silver +16 bronze +18 silver +19 gold +20 bronze +22 bronze +23 gold +24 silver +25 bronze +26 bronze +27 bronze +28 silver +29 bronze +31 gold +32 bronze +33 bronze +35 bronze +36 bronze +37 bronze +38 bronze +39 bronze +40 silver +41 bronze +42 silver +43 silver +45 gold +46 bronze +47 gold +49 bronze +51 gold +52 bronze +53 bronze +55 bronze +56 silver +57 silver +59 gold +60 bronze +63 silver +64 bronze +65 silver +66 bronze +68 bronze +69 silver +71 gold +72 gold +73 gold +74 gold +75 silver +76 bronze +79 silver +80 bronze +81 bronze +82 bronze +84 silver +85 silver +86 bronze +87 bronze +88 bronze +89 bronze +90 gold +91 silver +92 bronze +93 gold +94 silver +97 silver +100 bronze +101 gold +102 silver +106 bronze +107 silver +108 bronze +109 gold +111 gold +112 bronze +113 bronze +114 gold +115 gold +116 bronze +117 silver +118 silver +119 bronze +120 bronze +121 bronze +123 bronze +124 silver +125 silver +127 bronze +128 bronze +130 bronze +131 silver +132 bronze +133 gold +134 bronze +135 silver +136 silver +138 silver +139 silver +141 bronze +143 bronze +145 bronze +146 bronze +147 bronze +148 bronze +149 bronze +151 bronze +152 bronze +153 bronze +156 silver +158 gold +160 bronze +161 bronze +163 silver +164 bronze +165 bronze +166 gold +167 gold +168 bronze +169 bronze +170 bronze +172 bronze +173 bronze +174 silver +175 gold +176 silver +177 gold +178 bronze +179 bronze +180 bronze +182 bronze +183 bronze +184 gold +186 bronze +187 bronze +188 silver +189 bronze +190 bronze +191 bronze +192 bronze +193 bronze +194 bronze +195 silver +196 silver +197 silver +200 gold +201 bronze +202 silver +203 bronze +205 silver +206 bronze +207 bronze +208 silver +209 bronze +211 silver +212 silver +213 silver +214 silver +216 bronze +217 bronze +218 silver +219 bronze +221 silver +222 silver +223 bronze +225 silver +226 silver +227 silver +228 silver +229 silver +230 silver +232 bronze +235 silver +236 silver +237 silver +238 bronze +239 silver +241 silver +242 bronze +243 bronze +244 silver +245 silver +247 bronze +248 gold +249 silver +250 bronze +251 bronze +252 bronze +254 bronze +255 silver +256 bronze +257 gold +258 silver +259 bronze +260 silver +261 bronze +262 bronze +264 gold +265 silver +266 bronze +267 silver +268 bronze +270 silver +273 silver +274 silver +275 bronze +277 bronze +278 bronze +280 bronze +281 bronze +282 bronze +283 bronze +284 silver +285 bronze +286 bronze +287 silver +288 bronze +289 bronze +291 silver +292 silver +293 gold +294 bronze +295 silver +296 silver +297 bronze +298 silver +299 bronze +300 bronze +301 gold +303 gold +304 silver +305 bronze +307 silver +309 bronze +312 silver +313 gold +314 silver +316 bronze +317 bronze +320 bronze +321 bronze +323 silver +324 bronze +326 gold +327 silver +328 silver +329 gold +330 bronze +331 bronze +332 silver +333 silver +334 bronze +335 bronze +336 gold +337 silver +338 bronze +339 bronze +341 bronze +342 gold +346 silver +347 bronze +348 bronze +349 bronze +350 silver +351 bronze +352 gold +353 silver +356 silver +357 bronze +358 silver +359 bronze +360 gold +361 silver +362 bronze +364 silver +365 silver +366 silver +367 bronze +368 bronze +369 silver +370 bronze +371 silver +372 bronze +373 silver +376 bronze +379 silver +380 silver +382 bronze +383 silver +384 bronze +385 silver +387 bronze +388 silver +389 silver +390 bronze +391 silver +392 silver +393 silver +394 bronze +395 bronze +396 bronze +397 gold +398 bronze +399 silver +400 silver +401 silver +402 bronze +403 silver +405 silver +407 gold +408 silver +409 bronze +411 bronze +412 silver +414 silver +416 bronze +419 silver +420 bronze +421 silver +422 gold +423 silver +424 bronze +425 bronze +426 silver +429 silver +430 gold +431 gold +432 bronze +433 silver +434 silver +435 silver +436 bronze +437 silver +438 bronze +439 gold +440 bronze +441 bronze +442 bronze +443 bronze +444 gold +446 bronze +447 gold +448 bronze +449 bronze +450 bronze +451 silver +452 bronze +453 bronze +454 bronze +455 bronze +457 silver +458 bronze +459 gold +460 silver +461 bronze +462 bronze +463 silver +464 bronze +465 bronze +467 silver +468 bronze +469 silver +470 bronze +471 bronze +475 bronze +476 bronze +477 bronze +478 silver +480 bronze +481 bronze +482 silver +484 gold +486 bronze +487 bronze +488 bronze +489 silver +490 silver +491 bronze +492 bronze +493 bronze +494 bronze +495 silver +496 bronze +497 silver +498 silver +499 bronze +501 silver +502 bronze +503 bronze +505 bronze +506 bronze +507 silver +509 bronze +510 silver +511 silver +513 silver +514 gold +515 bronze +516 silver +518 bronze +520 bronze +521 gold +522 silver +523 silver +524 bronze +525 bronze +526 gold +529 bronze +530 silver +531 silver +532 gold +533 gold +536 silver +537 gold +539 bronze +540 silver +541 bronze +543 gold +544 silver +545 bronze +546 silver +547 silver +548 bronze +550 gold +551 gold +552 silver +553 bronze +554 bronze +555 bronze +556 bronze +558 bronze +559 silver +560 gold +562 gold +563 silver +564 silver +565 silver +566 silver +567 bronze +568 bronze +569 silver +570 silver +572 bronze +573 bronze +574 bronze +575 silver +577 bronze +579 silver +580 bronze +582 bronze +583 silver +584 gold +585 bronze +586 bronze +587 bronze +588 bronze +590 bronze +591 bronze +592 gold +593 bronze +594 bronze +595 silver +596 bronze +598 gold +599 bronze +600 bronze +601 bronze +603 silver +604 bronze +605 bronze +606 bronze +607 bronze +608 silver +609 bronze +610 bronze +611 silver +612 bronze +613 silver +615 silver +616 gold +617 bronze +618 gold +619 gold +620 silver +623 gold +624 gold +626 silver +627 silver +628 bronze +629 bronze +630 silver +632 silver +633 bronze +634 bronze +636 silver +637 bronze +638 silver +639 bronze +641 silver +642 bronze +643 bronze +645 silver +646 silver +647 bronze +649 bronze +650 silver +651 bronze +652 bronze +653 silver +654 silver +655 gold +656 bronze +658 bronze +659 bronze +660 silver +661 bronze +662 gold +663 silver +664 silver +665 bronze +666 silver +668 gold +669 bronze +671 bronze +672 silver +673 bronze +674 bronze +675 gold +676 silver +677 silver +678 bronze +680 silver +682 bronze +683 bronze +684 silver +685 bronze +687 silver +688 gold +689 bronze +690 gold +692 silver +693 silver +694 silver +695 silver +696 silver +697 gold +698 bronze +699 gold +700 bronze +701 silver +702 silver +704 silver +706 gold +707 silver +709 bronze +711 bronze +712 bronze +713 gold +716 bronze +718 bronze +719 bronze +720 bronze +722 silver +723 bronze +724 gold +725 bronze +726 bronze +728 bronze +729 bronze +730 gold +731 silver +732 silver +734 bronze +735 bronze +736 bronze +737 bronze +738 bronze +739 bronze +740 silver +741 gold +742 silver +743 bronze +744 silver +745 silver +746 silver +747 silver +748 silver +750 silver +752 silver +753 bronze +755 silver +756 silver +757 bronze +758 bronze +759 bronze +760 bronze +761 bronze +762 bronze +763 bronze +764 silver +765 bronze +766 bronze +768 bronze +769 gold +770 gold +771 bronze +772 bronze +773 bronze +774 bronze +775 silver +777 silver +779 silver +780 bronze +783 bronze +784 silver +785 bronze +786 bronze +787 bronze +789 bronze +790 gold +791 silver +792 silver +793 silver +794 silver +795 gold +796 gold +797 bronze +798 gold +799 bronze +801 silver +802 silver +803 silver +804 bronze +805 silver +807 gold +808 bronze +809 bronze +812 gold +813 bronze +814 bronze +815 bronze +816 silver +817 silver +818 bronze +819 bronze +820 silver +821 bronze +822 bronze +823 silver +826 bronze +827 silver +828 silver +829 bronze +830 bronze +831 silver +834 gold +836 bronze +837 bronze +838 silver +839 bronze +840 bronze +841 silver +842 bronze +843 silver +844 bronze +845 bronze +847 gold +848 bronze +851 bronze +852 silver +853 bronze +854 bronze +855 silver +856 silver +857 bronze +858 bronze +859 silver +860 bronze +861 silver +862 silver +863 gold +867 bronze +869 bronze +870 silver +872 bronze +873 bronze +874 bronze +875 silver +876 bronze +878 silver +879 gold +883 silver +885 bronze +886 silver +888 bronze +890 silver +891 silver +892 bronze +893 silver +894 silver +898 silver +899 silver +900 bronze +901 bronze +902 silver +903 bronze +904 bronze +906 silver +907 silver +908 bronze +909 silver +910 silver +911 bronze +912 bronze +914 silver +915 silver +916 bronze +917 silver +918 silver +919 bronze +920 silver +921 bronze +924 silver +925 bronze +927 silver +928 silver +930 silver +931 bronze +932 bronze +933 bronze +934 silver +937 gold +938 silver +940 bronze +941 bronze +943 bronze +944 bronze +946 bronze +947 bronze +948 silver +949 silver +950 bronze +951 silver +952 bronze +953 silver +955 gold +956 gold +957 bronze +958 silver +959 bronze +960 bronze +961 gold +963 silver +964 silver +965 bronze +966 bronze +967 silver +968 bronze +969 silver +971 bronze +972 bronze +973 bronze +974 bronze +975 silver +976 bronze +977 bronze +979 bronze +980 silver +981 bronze +982 bronze +984 bronze +985 bronze +986 silver +987 silver +988 silver +990 bronze +991 bronze +992 silver +994 bronze +995 bronze +996 bronze +997 bronze +998 bronze +999 gold +1000 bronze +1001 bronze +1003 bronze +1004 silver +1006 silver +1007 bronze +1008 silver +1009 gold +1010 bronze +1011 bronze +1012 silver +1014 silver +1016 bronze +1018 silver +1019 bronze +1020 bronze +1021 bronze +1022 bronze +1024 gold +1025 bronze +1026 gold +1028 bronze +1029 bronze +1030 silver +1034 gold +1035 gold +1036 bronze +1037 bronze +1038 bronze +1039 gold +1040 bronze +1041 bronze +1042 silver +1043 bronze +1044 silver +1045 bronze +1046 silver +1047 bronze +1048 bronze +1049 bronze +1050 silver +1052 bronze +1053 bronze +1054 gold +1055 silver +1056 bronze +1057 silver +1058 bronze +1059 bronze +1060 gold +1061 bronze +1062 bronze +1064 silver +1065 silver +1066 silver +1067 silver +1069 bronze +1070 bronze +1071 silver +1072 bronze +1073 bronze +1074 silver +1075 bronze +1076 gold +1077 bronze +1078 bronze +1079 silver +1080 bronze +1081 bronze +1082 bronze +1083 silver +1084 bronze +1086 silver +1088 bronze +1089 bronze +1091 bronze +1092 silver +1093 gold +1094 bronze +1095 silver +1096 silver +1097 bronze +1098 bronze +1099 gold +1100 silver +1101 bronze +1102 silver +1103 bronze +1104 bronze +1105 bronze +1106 bronze +1108 silver +1109 bronze +1111 gold +1112 bronze +1113 silver +1114 silver +1116 silver +1117 bronze +1118 silver +1119 gold +1120 silver +1122 gold +1123 gold +1124 bronze +1125 bronze +1126 bronze +1127 silver +1128 bronze +1129 bronze +1130 bronze +1131 bronze +1132 bronze +1133 silver +1135 silver +1136 silver +1137 bronze +1138 gold +1139 gold +1140 silver +1141 silver +1142 gold +1143 bronze +1144 silver +1145 bronze +1146 silver +1147 silver +1148 silver +1149 silver +1150 silver +1151 silver +1152 bronze +1153 gold +1154 bronze +1155 bronze +1156 bronze +1157 gold +1158 bronze +1159 bronze +1160 bronze +1161 bronze +1162 bronze +1163 bronze +1164 bronze +1165 silver +1166 bronze +1167 gold +1168 bronze +1170 bronze +1171 silver +1172 gold +1173 bronze +1175 silver +1176 bronze +1177 gold +1178 silver +1179 silver +1180 silver +1181 bronze +1182 silver +1184 bronze +1185 silver +1187 bronze +1188 silver +1189 silver +1190 silver +1193 bronze +1195 silver +1196 bronze +1197 bronze +1199 gold +1200 silver +1201 gold +1202 gold +1203 silver +1204 bronze +1205 gold +1206 silver +1208 silver +1210 silver +1211 bronze +1212 bronze +1213 silver +1215 bronze +1217 bronze +1218 gold +1219 bronze +1220 gold +1224 bronze +1225 silver +1226 gold +1227 bronze +1228 bronze +1229 bronze +1230 bronze +1232 silver +1233 silver +1234 gold +1235 gold +1236 silver +1237 silver +1238 bronze +1240 bronze +1241 silver +1242 bronze +1243 silver +1244 silver +1245 bronze +1246 bronze +1247 bronze +1249 bronze +1252 bronze +1254 gold +1255 silver +1256 gold +1257 silver +1258 gold +1259 bronze +1260 bronze +1262 bronze +1263 silver +1264 bronze +1265 bronze +1266 gold +1267 bronze +1268 bronze +1269 bronze +1270 silver +1271 silver +1272 silver +1273 gold +1274 silver +1275 bronze +1276 bronze +1278 silver +1279 bronze +1280 bronze +1281 bronze +1282 silver +1283 bronze +1284 bronze +1285 silver +1286 bronze +1287 silver +1288 silver +1289 silver +1290 bronze +1291 bronze +1292 bronze +1293 bronze +1294 bronze +1295 silver +1296 bronze +1297 bronze +1298 bronze +1299 bronze +1300 bronze +1301 gold +1302 silver +1303 silver +1306 silver +1310 gold +1311 bronze +1312 bronze +1313 bronze +1314 silver +1315 gold +1316 bronze +1317 silver +1319 bronze +1320 bronze +1321 silver +1322 bronze +1323 bronze +1324 bronze +1325 bronze +1327 bronze +1328 silver +1330 silver +1331 gold +1332 silver +1333 bronze +1334 bronze +1335 silver +1337 bronze +1338 silver +1339 bronze +1342 bronze +1343 bronze +1345 silver +1347 silver +1348 bronze +1350 bronze +1351 silver +1352 silver +1353 gold +1356 bronze +1357 bronze +1358 bronze +1359 silver +1360 bronze +1361 silver +1362 bronze +1363 gold +1364 bronze +1365 silver +1366 bronze +1367 bronze +1369 gold +1370 bronze +1371 bronze +1373 bronze +1374 bronze +1375 silver +1376 bronze +1377 bronze +1379 silver +1380 bronze +1381 silver +1382 bronze +1383 bronze +1385 bronze +1386 silver +1387 bronze +1388 bronze +1389 bronze +1390 silver +1391 bronze +1392 gold +1397 silver +1398 bronze +1399 silver +1401 gold +1402 silver +1405 bronze +1406 bronze +1409 bronze +1410 bronze +1411 bronze +1413 gold +1414 silver +1415 bronze +1417 gold +1418 bronze +1419 gold +1420 bronze +1421 silver +1422 silver +1423 bronze +1424 silver +1425 silver +1426 silver +1427 bronze +1428 bronze +1429 bronze +1430 gold +1431 bronze +1432 silver +1433 bronze +1434 silver +1435 silver +1436 silver +1437 bronze +1438 bronze +1439 silver +1440 silver +1442 silver +1443 silver +1444 gold +1445 bronze +1447 gold +1448 gold +1449 bronze +1450 silver +1451 bronze +1452 silver +1453 bronze +1454 gold +1455 silver +1456 bronze +1457 bronze +1458 bronze +1459 silver +1460 bronze +1461 bronze +1462 bronze +1463 silver +1465 silver +1466 bronze +1468 bronze +1469 silver +1471 bronze +1472 bronze +1474 bronze +1475 bronze +1476 silver +1477 silver +1479 silver +1480 gold +1481 silver +1482 bronze +1483 gold +1488 silver +1491 silver +1492 bronze +1493 silver +1494 silver +1495 bronze +1497 silver +1498 bronze +1499 gold +1500 bronze +1501 bronze +1502 gold +1503 gold +1505 bronze +1508 bronze +1509 silver +1510 silver +1511 silver +1514 bronze +1515 bronze +1516 silver +1517 bronze +1518 silver +1520 silver +1521 silver +1522 bronze +1524 bronze +1525 bronze +1526 bronze +1527 bronze +1530 bronze +1531 bronze +1532 silver +1533 bronze +1534 bronze +1535 bronze +1536 gold +1537 bronze +1538 bronze +1539 bronze +1542 bronze +1543 silver +1544 silver +1545 bronze +1546 bronze +1547 silver +1548 gold +1550 silver +1551 bronze +1553 bronze +1554 gold +1555 bronze +1556 silver +1557 silver +1558 gold +1559 bronze +1560 bronze +1561 bronze +1562 bronze +1563 bronze +1565 bronze +1566 silver +1567 silver +1568 silver +1569 silver +1570 silver +1571 bronze +1572 gold +1573 bronze +1575 bronze +1576 gold +1577 silver +1578 silver +1579 bronze +1580 bronze +1582 bronze +1583 silver +1584 bronze +1585 bronze +1586 silver +1587 bronze +1588 bronze +1589 silver +1590 silver +1591 bronze +1592 silver +1593 bronze +1594 bronze +1597 bronze +1598 gold +1599 silver +1600 gold +1602 bronze +1603 bronze +1604 silver +1606 silver +1607 silver +1608 silver +1609 silver +1610 silver +1611 bronze +1612 silver +1613 silver +1614 bronze +1616 bronze +1617 silver +1618 bronze +1619 bronze +1621 bronze +1622 bronze +1623 bronze +1624 silver +1625 silver +1626 bronze +1627 gold +1628 bronze +1630 gold +1631 silver +1633 bronze +1634 silver +1635 bronze +1636 bronze +1637 silver +1638 bronze +1639 silver +1640 silver +1642 silver +1644 bronze +1645 gold +1646 bronze +1647 silver +1648 silver +1649 bronze +1650 bronze +1651 silver +1652 silver +1653 bronze +1654 bronze +1655 bronze +1656 bronze +1657 bronze +1658 silver +1659 bronze +1660 bronze +1661 bronze +1662 bronze +1663 silver +1664 bronze +1665 bronze +1666 bronze +1667 silver +1668 silver +1669 bronze +1670 bronze +1671 bronze +1673 gold +1674 silver +1675 silver +1677 bronze +1678 bronze +1679 bronze +1680 bronze +1681 silver +1683 bronze +1684 bronze +1686 bronze +1687 silver +1688 bronze +1690 bronze +1691 bronze +1693 silver +1694 silver +1695 bronze +1696 silver +1699 bronze +1702 bronze +1703 silver +1704 bronze +1705 bronze +1708 silver +1709 silver +1710 bronze +1711 silver +1713 bronze +1714 bronze +1715 silver +1716 silver +1717 bronze +1718 bronze +1720 bronze +1722 gold +1723 gold +1724 silver +1725 bronze +1726 gold +1727 bronze +1728 bronze +1731 silver +1732 bronze +1733 silver +1734 bronze +1737 silver +1739 bronze +1742 silver +1743 silver +1744 bronze +1745 bronze +1746 bronze +1747 bronze +1748 silver +1749 bronze +1750 gold +1751 bronze +1752 silver +1753 bronze +1755 silver +1757 bronze +1758 bronze +1759 gold +1760 bronze +1761 gold +1763 bronze +1764 silver +1765 bronze +1767 gold +1769 gold +1770 silver +1771 bronze +1772 bronze +1774 bronze +1776 silver +1777 bronze +1778 bronze +1780 bronze +1781 bronze +1782 silver +1783 silver +1784 silver +1785 bronze +1786 gold +1788 bronze +1789 bronze +1790 silver +1792 silver +1794 silver +1796 bronze +1797 bronze +1798 bronze +1799 bronze +1800 gold +1801 silver +1802 silver +1803 silver +1804 silver +1805 silver +1806 silver +1807 silver +1808 bronze +1811 bronze +1812 bronze +1814 silver +1815 silver +1816 silver +1817 bronze +1819 gold +1820 silver +1822 silver +1823 silver +1824 bronze +1825 bronze +1826 silver +1827 bronze +1830 silver +1831 silver +1832 bronze +1833 silver +1834 bronze +1836 gold +1837 silver +1838 silver +1839 silver +1840 bronze +1841 silver +1842 silver +1843 silver +1844 silver +1845 bronze +1846 silver +1848 silver +1849 gold +1850 silver +1852 bronze +1853 silver +1854 silver +1855 silver +1856 silver +1857 bronze +1858 silver +1859 silver +1860 bronze +1861 bronze +1862 silver +1863 bronze +1864 bronze +1866 bronze +1867 bronze +1868 bronze +1869 bronze +1870 bronze +1871 silver +1872 gold +1873 silver +1874 silver +1875 bronze +1876 bronze +1877 bronze +1878 silver +1879 bronze +1880 silver +1883 gold +1884 bronze +1885 bronze +1886 bronze +1888 silver +1889 bronze +1891 bronze +1892 bronze +1893 bronze +1894 bronze +1895 gold +1896 gold +1897 bronze +1898 silver +1901 silver +1902 bronze +1904 silver +1905 bronze +1907 bronze +1908 bronze +1909 bronze +1910 bronze +1911 bronze +1912 bronze +1913 bronze +1914 bronze +1916 silver +1917 bronze +1918 silver +1919 bronze +1920 silver +1921 bronze +1922 silver +1923 silver +1924 bronze +1925 gold +1926 bronze +1927 bronze +1928 bronze +1929 bronze +1930 bronze +1931 bronze +1932 bronze +1933 gold +1934 silver +1936 bronze +1937 bronze +1938 silver +1939 silver +1940 bronze +1942 bronze +1943 bronze +1945 gold +1946 bronze +1947 silver +1948 bronze +1949 silver +1950 bronze +1951 silver +1952 silver +1953 bronze +1954 bronze +1955 bronze +1956 bronze +1957 silver +1958 bronze +1959 silver +1960 silver +1961 bronze +1962 silver +1963 silver +1965 gold +1966 bronze +1967 silver +1970 bronze +1971 bronze +1972 silver +1973 bronze +1974 gold +1975 bronze +1977 silver +1979 bronze +1980 gold +1981 bronze +1982 silver +1984 bronze +1985 bronze +1986 bronze +1987 bronze +1988 silver +1989 gold +1990 bronze +1991 bronze +1992 bronze +1993 bronze +1994 silver +1996 gold +1997 bronze +1998 bronze +1999 silver + + diff --git a/event_gen.py b/event_gen.py new file mode 100644 index 0000000..7268909 --- /dev/null +++ b/event_gen.py @@ -0,0 +1,20 @@ +import numpy as np +import numpy.random as rnd + +def event_gen(n): + events=[] + for t in range(n): + r=rnd.choice(range(10)) + if r<4: + events.append([t,'bronze']) + elif r<7: + events.append([t,'silver']) + elif r<8: + events.append([t,'gold']) + return events + +if __name__ == "__main__": + events = event_gen(2000) + for event in events: + print (event[0], event[1]) + diff --git a/sim.py b/sim.py new file mode 100644 index 0000000..c1e156c --- /dev/null +++ b/sim.py @@ -0,0 +1,101 @@ +import os +import numpy as np +import numpy.random as rnd +import sys +import importlib +import imp +import ctypes +import ctypes.util +from numpy.ctypeslib import ndpointer +import event_gen as eg + +PPP=60 +claim_types={'bronze':{'bw': 1, 'value': 2, 'damage':4, 'duration': 100, 'pr': 0.4}, + 'silver': {'bw': 3, 'value': 5, 'damage':6, 'duration': 50, 'pr': 0.3}, + 'gold':{'bw': 10, 'value': 30, 'damage':80, 'duration': 70, 'pr': 0.1}} + + +class Claim: + def __init__(self,ty,time): + self.ty = ty + self.bw=claim_types[ty]['bw'] + self.val=claim_types[ty]['value'] + self.dam=claim_types[ty]['damage'] + self.dur=claim_types[ty]['duration'] + self.init_time=time + self.end_time=time+self.dur + +class Sim: + def __init__(self,bw): + self.queue=[] + self.bw=bw + self.free=bw + self.budget=(-1)*PPP*self.bw + + def step(self, lista): + self.budget-=sum([self.queue[i].dam for i in range(len(self.queue)) if lista[i]==0]) + self.queue = [self.queue[i] for i in range(len(self.queue)) if lista[i]==1] + + def new(self, item): + if item.bw<=self.free: + self.queue.append(item) + + def process(self,time): + for i in range(len(self.queue)-1,-1,-1): + if self.queue[i].end_time<=time: + self.budget+=self.queue[i].val + del self.queue[i] + self.free=self.bw + for item in self.queue: + self.free-=item.bw + + def get_queue_list(self,time): + lista=[] + for item in self.queue: + lista.append([item.ty,item.end_time-time]) + return lista + +results={} +folder='Strats' + +sys.path.append(folder) +strats=os.listdir(folder) +strats_py=[x.split('.')[0] for x in strats if x.split('.')[-1]=="py"] +#strats_py=['tut_mymy'] + +for _ in range(10): + events=eg.event_gen(2000) + """ + os.system('python event_gen.py >event1.txt') + with open('event1.txt') as inf: + for line in inf: + a=line.split() + # print a + if a: + events.append([int(a[0]),a[1]]) + + #print events + """ + for strat in strats_py: + mod=importlib.import_module(strat) + sim=Sim(max(0,mod.init_bw())) + for e in events: + [time,claim]=e + sim.process(time) + [new,lista]=mod.decision(claim, sim.get_queue_list(time)) + sim.step(lista) + if new==1: + sim.new(Claim(claim,time)) + sim.process(time+1000) + if not strat in results: + results[strat]=0 + results[strat]+=sim.budget +for key in results: + results[key]/=10.0 +print results +""" +strat=strats[0] +mod=importlib.import_module(strat) +for _ in range(10): + print mod.decision(1,[3,3]) +""" diff --git a/sim_p3.py b/sim_p3.py new file mode 100644 index 0000000..99dcb20 --- /dev/null +++ b/sim_p3.py @@ -0,0 +1,95 @@ +import os +import numpy as np +import numpy.random as rnd +import sys +import importlib +#import imp +import ctypes +import ctypes.util +from numpy.ctypeslib import ndpointer +import event_gen as eg + +PPP=60 +claim_types={'bronze':{'bw': 1, 'value': 2, 'damage':4, 'duration': 100, 'pr': 0.4}, + 'silver': {'bw': 3, 'value': 5, 'damage':6, 'duration': 50, 'pr': 0.3}, + 'gold':{'bw': 10, 'value': 30, 'damage':80, 'duration': 70, 'pr': 0.1}} + + +class Claim: + def __init__(self,ty,time): + self.ty = ty + self.bw=claim_types[ty]['bw'] + self.val=claim_types[ty]['value'] + self.dam=claim_types[ty]['damage'] + self.dur=claim_types[ty]['duration'] + self.init_time=time + self.end_time=time+self.dur + +class Sim: + def __init__(self,bw): + self.queue=[] + self.bw=bw + self.free=bw + self.budget=(-1)*PPP*self.bw + + def step(self, lista): + self.budget-=sum([self.queue[i].dam for i in range(len(self.queue)) if lista[i]==0]) + self.queue = [self.queue[i] for i in range(len(self.queue)) if lista[i]==1] + + def new(self, item): + if item.bw<=self.free: + self.queue.append(item) + + def process(self,time): + for i in range(len(self.queue)-1,-1,-1): + if self.queue[i].end_time<=time: + self.budget+=self.queue[i].val + del self.queue[i] + self.free=self.bw + for item in self.queue: + self.free-=item.bw + + def get_queue_list(self,time): + lista=[] + for item in self.queue: + lista.append([item.ty,item.end_time-time]) + return lista + +results={} +folder='Strats' + +sys.path.append(folder) +strats=os.listdir(folder) +strats_py=[x.split('.')[0] for x in strats if x.split('.')[-1]=="py"] +#strats_py=['tut_mymy'] + +for _ in range(10): + events=eg.event_gen(2000) + """ + os.system('python event_gen.py >event1.txt') + with open('event1.txt') as inf: + for line in inf: + a=line.split() + # print a + if a: + events.append([int(a[0]),a[1]]) + + #print events + """ + for strat in strats_py: + mod=importlib.import_module(strat) + sim=Sim(max(0,mod.init_bw())) + for e in events: + [time,claim]=e + sim.process(time) + [new,lista]=mod.decision(claim, sim.get_queue_list(time)) + sim.step(lista) + if new==1: + sim.new(Claim(claim,time)) + sim.process(time+1000) + if not strat in results: + results[strat]=0 + results[strat]+=sim.budget +for key in results: + results[key]/=10.0 +print(results)