Initial Commit.

This commit is contained in:
Saturneric 2021-04-18 13:53:07 +08:00
commit 335fc32732
9 changed files with 187 additions and 0 deletions

8
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

7
.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 (scheduling)" project-jdk-type="Python SDK" />
</project>

8
.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/scheduling.iml" filepath="$PROJECT_DIR$/.idea/scheduling.iml" />
</modules>
</component>
</project>

10
.idea/scheduling.iml generated Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.7 (scheduling)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml generated Normal file
View File

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

95
model.py Normal file
View File

@ -0,0 +1,95 @@
from __future__ import annotations
from datetime import datetime
from typing import List, Dict, Set
class Order:
def __init__(self, order_id: str, description: str):
self.order_id: str = order_id
self.description: str = description
self.earliest_start_time: datetime = datetime.today()
self.latest_end_time: datetime = datetime.today()
self.products: List[Dict[str, any]] = []
def set_time(self, earliest_start_time: datetime, latest_end_time: datetime):
self.earliest_start_time = earliest_start_time
self.latest_end_time = latest_end_time
def add_product(self, product, amount):
self.products.append({
"product": product,
"amount": amount
})
class Product:
def __init__(self, product_id: str, product_name: str):
self.product_id: str = product_id
self.product_name: str = product_name
class Workspace:
def __init__(self, name: str):
self.name: str = name
class Process:
def __init__(self,
pcs_id: str,
pcs_name: str,
product: Product,
prev_pcs: Process,
last_pcs: Process,
workspace: Workspace):
self.pcs_id: str = pcs_id
self.pcs_name: str = pcs_name
self.product: Product = product
self.production_mode: int = 0
self.min_quantity: int = 0
self.max_quantity: int = 0
self.pdt_time: int = 0
self.prev_pcs: Process = prev_pcs
self.last_pcs: Process = last_pcs
self.res_needs: List[Dict[str, any]] = []
self.workspace: Workspace = workspace
def set_mode_quantity(self, production_mode: int, min_quantity: int, max_quantity: int):
self.production_mode: int = production_mode
self.min_quantity: int = max_quantity
self.max_quantity: int = min_quantity
def set_product_time(self, pdt_time: int):
self.pdt_time: int = pdt_time
def add_res_need(self, rcs_attrs, amount):
self.res_needs.append({
"rcs_attrs": rcs_attrs,
"amount": amount
})
class Resource:
def __init__(self, rsc_id: str, rsc_name: str, rsc_type: str, workspace: Workspace):
self.rsc_id: str = rsc_id
self.rsc_name: str = rsc_name
self.rsc_type: str = rsc_type
self.attr: str = ""
self.basic_attrs: Set = set()
self.workspace: Workspace = workspace
def set_attr(self, attr: str, basic_attrs: List[str]):
if attr not in basic_attrs:
raise Exception("Attr NOT IN Basic_Attrs")
self.attr: str = attr
self.basic_attrs: List[str] = basic_attrs

33
runtime.py Normal file
View File

@ -0,0 +1,33 @@
import model
from datetime import datetime, timedelta
from typing import List
class RuntimeProduct:
def __init__(self, product, amount):
self.ddl: datetime = datetime.today()
self.product: model.Product = product
self.amount: int = amount
def set_ddl(self, ddl: datetime):
self.ddl = ddl
pass
class ProductLine:
def __init__(self, product: model.Product):
self.product: product = product
self.runtime_products: List[RuntimeProduct] = []
def add_runtime_product(self, runtime_product: RuntimeProduct):
self.runtime_products.append(runtime_product)
class RuntimeProcess:
def __init__(self, runtime_product: RuntimeProduct, process: model.Process):
self.runtime_product = runtime_product
self.process = process
self.start_ddl = self.runtime_product.ddl - timedelta(minutes=process.pdt_time)

14
scheduling.py Normal file
View File

@ -0,0 +1,14 @@
import runtime
import model
import csv
from typing import List
from datetime import datetime
import time
def read_dataset():
order_list: List[model.Order] = []
if __name__ == "__main__":
read_dataset()