Fd=h2^)9;m(g{9&3e(d=S=eJ%sD_Zm
zMXg;Dz0jU$$32Cq!5IwJkeWio@}oF8aCL=%_#NE(J+KxJ
zY{Pizds;BcR_eL`J>cyOzIqW_>NE)TnIVIs{@P`0>))!2dBLqAP6`Bq2}|D#{W9M2
zQ^H%LA}2@b@#ZQvE{|CdX;<`JB)!=}T4_oJ+A6=b5NQ_ffcsz1*YG(rA*>L^RpcIM
z}SLSOi$F@*93vFNOqTkj5(G&4SAe%&y+^sh6L7O&VIy!ibl=YV?UW
z_(8A&H2$=EU@2J}Dw*-q`g-#4{M+{_n6ltA;{1GI7YYeRbB~{Rl)`!QLObDyiL!;j
za3^0;?WSWjIceeljb$~Pe9G$I?w}@q-U)NvK>UL+(iU^ydWBRqnenE8rN&Y9q9?{g
z;HE&ws^B%IG5C@?7WPyD>?$<*bFSy_goA&1!~l|EWr2x{=r^#b
z7w*wJ6KPG3hM
zgaNnL&Wb5FeIP`t`E%$(XB+x*=!|!(0Afip_)-rgW2(vbAT6KLy7NTR
zN+V`x6H{3XzhNuG>Gs@|+FcsoP0u+CA%_v2m#TM=L3yMnk`Pb!k;A9Du5-yIGSibc
zWIHK+ClZ6P8+wNKz`1RTsrh7JgJ7n1Q8fFCFoTC0u7pMx#y*zjxPy4|OM;N`mL7YQ
z!@{ml0fL7S0yP6wH?m)+8&5vn1N+WS=JQ-#YLTi9Rb|7s_RBXVGNs=%eoS!8O1h>o
zNR+aGooETTZt5{$Fu7m6(*H!H4sRy-AeuRLqeLZHn8=8DF83Ke`E9>fYhkp3Jz6G9
zc$jcEMZ?O0LiyoF`ATkOM<{MsSsAnF%E&UuW2$CzgYKlbgtm4g$CpwIzpsUyPhk
z>Z(h;X}xwx_2d?F+2D%*a(z|nCYrM@U1sQml_2J;F^Ybym0!z~JrNOLqz4n_=v&e9
zBfv*_%y4wi!mMk0xjbs2j1B9mH0EwGMr^~1#nJB3b~mzZ?q&V!5qr#%g~iV~a@p_R
z?1dw7y{Gh4;ya%cCCUk?V8(b?HCau8tZ&jQ3g6T|$Rg0etIU0s0METqBQ2uvMP{_Y
zI%`*+!DXO0j?r8$4t+2VL}D6F^58~O)dfwD>LKi*T_(%?U}ab}YlvJ5Xas_XWF=Ai
zDkHx=Wx>3Q*ClDilNbGc`;0(HOuw@Oc;rI^J%TK&MCt<-2Az;0ls-Lp%J`x3hUzhf
z<%Wtl>Z&+|@LqqqUS|ZN6X^%SOS{dO8cs3tM)1Yf?5Rj8OM>_U-W1k5cnzLa?w=Yu6n2
z&2$%cDyGnQ!~2XaKiuXzedi38ba8};s@9;|4+@H6Vk%1t+LvG6j4W3*C9g{~$)7t^
z2V^^sp|^bNe8l2u8}^d*KqITEtPV2}DQ~3~yXT;SUKCrRMwo@o&)EM))&7}F@^pvc
zrL(`U_V?K9d*B*9_ME??uE&a_up*SfhK_sdQ)-vsTnFHIa+x7oJzQ96*d$g~`|P7r
zc&3TU=EHBP<($Z#tgWZ{E?W6|1yh9^DO~YLy0xte1sD&@!XAdXc*Egt#M=hH+v7U4lQiErBDPdx(C;S3|kB8i5X2!k)3DoDS9no4Gf7bZj`QS8*J$I?N}$s`qf3
z4Z2YfU6Fpc`ZhrWKb)~Jduu&jW%}up@F;_igfb4dnfgavZ%=j!MXRE-Ov}q*KLCBEO*0vHk6HDe+5E5y%TgKXBobw-xQlq)Jbh;XyFFq4ErQNFLZjmpl+ye$`v*okFeYR9KJ(THKZQ+Dnq_em~
zCNo)~pP>|LJ3I`#wnipd(zyNYA0dlW;ZZ>;2SA9#4(}=(-0bi_sHgr7&d1-a(Uwu{VU#IJv|&qx-f>9e44^;W0j1mhgl1w?YHb!SBnZaFLKP6@*9
zm0(KIs$s+#)rRzi6^BIiQp9J5>)vSk4{WA-))MuyO#VS^{x4DHpZrXAKmGpz7Vl-G
literal 0
HcmV?d00001
diff --git a/pfsp_simulated_annealing/workpiece.py b/pfsp_simulated_annealing/workpiece.py
new file mode 100644
index 0000000..d7c9fc4
--- /dev/null
+++ b/pfsp_simulated_annealing/workpiece.py
@@ -0,0 +1,27 @@
+class Workpiece:
+ def __init__(self):
+ self.being_processed = -1 # 当前正在处理的机器索引(-1表示尚未开始处理)被哪台机器加工
+ self.left_time = 0 # 剩余处理时间 初始为0 为0时,表示该工件在当前机器上的处理已完成。
+
+ def being_pro(self):
+ """获取当前正在处理的机器索引"""
+ return self.being_processed
+
+ def left_time(self):
+ """获取剩余处理时间"""
+ return self.left_time
+
+ def next_time(self):
+ """减少剩余处理时间"""
+ if self.left_time > 0:
+ self.left_time -= 1
+
+ def next_machine(self, time):
+ """转移到下一台机器并设置处理时间,因为加工顺序必须是从0 1 2 3 4 这样一台台排下去的"""
+ self.being_processed += 1
+ self.left_time = time
+
+ def reset(self):
+ """重置工件状态"""
+ self.being_processed = -1
+ self.left_time = 0
\ No newline at end of file
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/test_simulate.py b/tests/test_simulate.py
new file mode 100644
index 0000000..e69de29