IGJSP 0.0.5__tar.gz → 0.0.7__tar.gz

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.
@@ -0,0 +1,2 @@
1
+ *.whl filter=lfs diff=lfs merge=lfs -text
2
+ *.tar.gz filter=lfs diff=lfs merge=lfs -text
igjsp-0.0.7/.gitignore ADDED
@@ -0,0 +1,171 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ #uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ #poetry.lock
109
+
110
+ # pdm
111
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
112
+ #pdm.lock
113
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
114
+ # in version control.
115
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
116
+ .pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
121
+ __pypackages__/
122
+
123
+ # Celery stuff
124
+ celerybeat-schedule
125
+ celerybeat.pid
126
+
127
+ # SageMath parsed files
128
+ *.sage.py
129
+
130
+ # Environments
131
+ .env
132
+ .venv
133
+ env/
134
+ venv/
135
+ ENV/
136
+ env.bak/
137
+ venv.bak/
138
+
139
+ # Spyder project settings
140
+ .spyderproject
141
+ .spyproject
142
+
143
+ # Rope project settings
144
+ .ropeproject
145
+
146
+ # mkdocs documentation
147
+ /site
148
+
149
+ # mypy
150
+ .mypy_cache/
151
+ .dmypy.json
152
+ dmypy.json
153
+
154
+ # Pyre type checker
155
+ .pyre/
156
+
157
+ # pytype static type analyzer
158
+ .pytype/
159
+
160
+ # Cython debug symbols
161
+ cython_debug/
162
+
163
+ # PyCharm
164
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
165
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
166
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
167
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
168
+ #.idea/
169
+
170
+ # PyPI configuration file
171
+ .pypirc
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 GPS
3
+ Copyright (c) 2025 Planning and Scheduling Research Group
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: IGJSP
3
- Version: 0.0.5
3
+ Version: 0.0.7
4
4
  Summary: Instance generator for JSP
5
5
  Project-URL: Homepage, https://gps.blogs.upv.es/
6
6
  Author-email: GPS-UPV <gps@dsic.upv.es>
@@ -14,31 +14,31 @@ Requires-Dist: scipy
14
14
  Requires-Dist: tqdm
15
15
  Description-Content-Type: text/markdown
16
16
 
17
- # JSP Generator
17
+ # Instance Generator Job Shop Scheduling
18
18
 
19
19
  ## Description
20
20
  Benchmark generator for the Job Shop Problem (BG-JSP)
21
21
 
22
22
  ## Generating a JSP problem instance
23
23
 
24
- To generate an instance of the problem we will use the Generator class, located at the generador module.
24
+ To generate an instance of the problem, we will use the Generator class, located in the Generador module.
25
25
  To do this, we initialize the generator, giving it the following parameters:
26
26
 
27
27
  1. **JSON:`json`**
28
28
  - **Description**: Parameter that indicates if the generated instance will be stored in JSON format.
29
- - **Possible values**: Boolean value. Only can get the values True or False.
29
+ - **Possible values**: Boolean value. Only the values True or False can be obtained.
30
30
  - **Example of possible values**: `True`, `False`
31
31
  - **Default value**: `False`
32
32
 
33
33
  2. **DZN:`dzn`**
34
34
  - **Description**: Parameter that indicates if the generated instance will be stored in DZN format.
35
- - **Possible values**: Boolean value. Only can get the values True or False.
35
+ - **Possible values**: Boolean value. Only the values True or False can be obtained.
36
36
  - **Example of possible values**: `True`, `False`
37
37
  - **Default value**: `False`
38
38
 
39
39
  3. **Taillard:`taillard`**
40
40
  - **Description**: Parameter that indicates if the generated instance will be stored in taillard format.
41
- - **Possible values**: Boolean value. Only can get the values True or False.
41
+ - **Possible values**: Boolean value. Only the values True or False can be obtained.
42
42
  - **Example of possible values**: `True`, `False`
43
43
  - **Default value**: `False`
44
44
 
@@ -49,7 +49,7 @@ To do this, we initialize the generator, giving it the following parameters:
49
49
  - **Default value**: `./output`
50
50
 
51
51
 
52
- Once the generator has been initialized we proceed to generate different instances of the JSP problem with different values for this initialization, for that we use the following function, using the following parameters to customize the generated instances:
52
+ Once the generator has been initialized, we proceed to generate different instances of the JSP problem with different values for this initialization; for that we use the following function using the following parameters to customize the generated instances:
53
53
 
54
54
  1. **Jobs:`jobs`**
55
55
  - **Description**: Number of jobs that will have the problem generated.
@@ -64,10 +64,10 @@ Once the generator has been initialized we proceed to generate different instanc
64
64
  - **Default value**: `4`
65
65
 
66
66
  3. **Release and Due Date:`ReleaseDateDueDate`**
67
- - **Descripción**: Establish that each task has an instant of release and an instant of completion limit.
67
+ - **Descripción**: Establish that each task has an instant of release and completion limit.
68
68
  - **Possible values**:
69
- - `0`: Neither the works and operations of each of them will have an instant of release or time limit for completion.
70
- - `1`: The work will have instant of release and instant of completion limit.
69
+ - `0`: Neither the works nor the operations of each of them will have an instant release or time limit for completion.
70
+ - `1`: The work will have an instant of release and instant of completion limit.
71
71
  - `2`: The operations of each job will have a release time and a limiting end time.
72
72
  - **Example of possible values**: `1`, `2`
73
73
  - **Default value**: `0`
@@ -80,7 +80,7 @@ Once the generator has been initialized we proceed to generate different instanc
80
80
 
81
81
  5. **Distribution:`distribution`**
82
82
  - **Description**: Type of distribution to be followed for data generation.
83
- - **Possible values**: You can only set one of the following values: `uniform` `normal` `exponential`
83
+ - **Possible values**: You can only set one of the following values: `uniform` `normal` `exponential.`
84
84
  - **Example of possible values**: `uniform`, `exponential`
85
85
  - **Default value**: `normal`
86
86
 
@@ -92,7 +92,7 @@ Once the generator has been initialized we proceed to generate different instanc
92
92
 
93
93
  ## Example of JSON generated
94
94
 
95
- This JSON shows how the data generated from an JSP problem with 2 machines and 4 jobs will look like. For this generation we have the following code:
95
+ This JSON shows how the data generated from a JSP problem with 2 machines and 4 jobs will look. For this generation, we have the following code:
96
96
  ``` python
97
97
  from IGJSP.generador import Generator
98
98
  generator = Generator(json=True,savepath="output")
@@ -213,4 +213,4 @@ generator.generate_new_instance(jobs=4,machines=2,ReleaseDateDueDate=2,distribut
213
213
  "maxMinMakespan": 14,
214
214
  "maxMinEnergy": 0
215
215
  }
216
- ```
216
+ ```
@@ -1,28 +1,28 @@
1
- # JSP Generator
1
+ # Instance Generator Job Shop Scheduling
2
2
 
3
3
  ## Description
4
4
  Benchmark generator for the Job Shop Problem (BG-JSP)
5
5
 
6
6
  ## Generating a JSP problem instance
7
7
 
8
- To generate an instance of the problem we will use the Generator class, located at the generador module.
8
+ To generate an instance of the problem, we will use the Generator class, located in the Generador module.
9
9
  To do this, we initialize the generator, giving it the following parameters:
10
10
 
11
11
  1. **JSON:`json`**
12
12
  - **Description**: Parameter that indicates if the generated instance will be stored in JSON format.
13
- - **Possible values**: Boolean value. Only can get the values True or False.
13
+ - **Possible values**: Boolean value. Only the values True or False can be obtained.
14
14
  - **Example of possible values**: `True`, `False`
15
15
  - **Default value**: `False`
16
16
 
17
17
  2. **DZN:`dzn`**
18
18
  - **Description**: Parameter that indicates if the generated instance will be stored in DZN format.
19
- - **Possible values**: Boolean value. Only can get the values True or False.
19
+ - **Possible values**: Boolean value. Only the values True or False can be obtained.
20
20
  - **Example of possible values**: `True`, `False`
21
21
  - **Default value**: `False`
22
22
 
23
23
  3. **Taillard:`taillard`**
24
24
  - **Description**: Parameter that indicates if the generated instance will be stored in taillard format.
25
- - **Possible values**: Boolean value. Only can get the values True or False.
25
+ - **Possible values**: Boolean value. Only the values True or False can be obtained.
26
26
  - **Example of possible values**: `True`, `False`
27
27
  - **Default value**: `False`
28
28
 
@@ -33,7 +33,7 @@ To do this, we initialize the generator, giving it the following parameters:
33
33
  - **Default value**: `./output`
34
34
 
35
35
 
36
- Once the generator has been initialized we proceed to generate different instances of the JSP problem with different values for this initialization, for that we use the following function, using the following parameters to customize the generated instances:
36
+ Once the generator has been initialized, we proceed to generate different instances of the JSP problem with different values for this initialization; for that we use the following function using the following parameters to customize the generated instances:
37
37
 
38
38
  1. **Jobs:`jobs`**
39
39
  - **Description**: Number of jobs that will have the problem generated.
@@ -48,10 +48,10 @@ Once the generator has been initialized we proceed to generate different instanc
48
48
  - **Default value**: `4`
49
49
 
50
50
  3. **Release and Due Date:`ReleaseDateDueDate`**
51
- - **Descripción**: Establish that each task has an instant of release and an instant of completion limit.
51
+ - **Descripción**: Establish that each task has an instant of release and completion limit.
52
52
  - **Possible values**:
53
- - `0`: Neither the works and operations of each of them will have an instant of release or time limit for completion.
54
- - `1`: The work will have instant of release and instant of completion limit.
53
+ - `0`: Neither the works nor the operations of each of them will have an instant release or time limit for completion.
54
+ - `1`: The work will have an instant of release and instant of completion limit.
55
55
  - `2`: The operations of each job will have a release time and a limiting end time.
56
56
  - **Example of possible values**: `1`, `2`
57
57
  - **Default value**: `0`
@@ -64,7 +64,7 @@ Once the generator has been initialized we proceed to generate different instanc
64
64
 
65
65
  5. **Distribution:`distribution`**
66
66
  - **Description**: Type of distribution to be followed for data generation.
67
- - **Possible values**: You can only set one of the following values: `uniform` `normal` `exponential`
67
+ - **Possible values**: You can only set one of the following values: `uniform` `normal` `exponential.`
68
68
  - **Example of possible values**: `uniform`, `exponential`
69
69
  - **Default value**: `normal`
70
70
 
@@ -76,7 +76,7 @@ Once the generator has been initialized we proceed to generate different instanc
76
76
 
77
77
  ## Example of JSON generated
78
78
 
79
- This JSON shows how the data generated from an JSP problem with 2 machines and 4 jobs will look like. For this generation we have the following code:
79
+ This JSON shows how the data generated from a JSP problem with 2 machines and 4 jobs will look. For this generation, we have the following code:
80
80
  ``` python
81
81
  from IGJSP.generador import Generator
82
82
  generator = Generator(json=True,savepath="output")
@@ -197,4 +197,4 @@ generator.generate_new_instance(jobs=4,machines=2,ReleaseDateDueDate=2,distribut
197
197
  "maxMinMakespan": 14,
198
198
  "maxMinEnergy": 0
199
199
  }
200
- ```
200
+ ```
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "IGJSP"
7
- version = "0.0.5"
7
+ version = "0.0.7"
8
8
  authors = [
9
9
  { name="GPS-UPV", email="gps@dsic.upv.es" },
10
10
  ]
@@ -27,11 +27,11 @@ class JSP:
27
27
  def __init__(self, jobs, machines, ProcessingTime=np.array([]), EnergyConsumption=np.array([]), ReleaseDateDueDate=np.array([]), Orden=np.array([])) -> None:
28
28
  self.numJobs = jobs
29
29
  self.numMchs = machines
30
- self.speed = ProcessingTime.shape[-1] if ProcessingTime else 0
30
+ self.speed = ProcessingTime.shape[-1] if ProcessingTime.size else 0
31
31
  self.ProcessingTime = ProcessingTime
32
32
  self.EnergyConsumption = EnergyConsumption
33
33
  self.Orden = Orden
34
- self.rddd = ReleaseDateDueDate.ndim - 1 if ReleaseDateDueDate else 0
34
+ self.rddd = ReleaseDateDueDate.ndim - 1 if ReleaseDateDueDate.size else 0
35
35
 
36
36
  def fill_random_values(self, speed, rddd, distribution, seed, tpm=[]):
37
37
  np.random.seed(seed)
@@ -451,8 +451,8 @@ class Generator:
451
451
  self.taillard = taillard
452
452
  self.savepath = savepath
453
453
 
454
- def generate_new_instance(self, jobs = 10, machines = 4, ProcessingTime=[], EnergyConsumption=[], Orden=[],speed = 1, ReleaseDateDueDate = 0, distribution = "uniform" , seed = 0, tpm=[]):
455
- jsp = JSP(jobs=jobs, machines=machines,ProcessingTime=ProcessingTime,EnergyConsumption=EnergyConsumption,Orden=Orden)
454
+ def generate_new_instance(self, jobs = 10, machines = 4,speed = 1, ReleaseDateDueDate = 0, distribution = "uniform" , seed = 0, tpm=[]):
455
+ jsp = JSP(jobs=jobs, machines=machines)
456
456
  jsp.fill_random_values(speed = speed, rddd = ReleaseDateDueDate, distribution = distribution, seed = seed,tpm = tpm)
457
457
  if not (self.json or self.dzn or self.taillard): return jsp
458
458
 
File without changes
File without changes