로드 중...
검색 중...
일치하는 항목 없음
clad.py
이 파일의 문서로 이동하세요.
1
16
17fromio가져오기문자열IO
18가져오기os
19가져오기sys
20from스레딩가져오기스레드
21from감스가져오기GamsWorkspace, SolveLink
22
23if__name__ =="__main__":
24sys_dir = sys.argv[1]iflen(sys.argv) > 1그밖에 없음
25work_dir = sys.argv[2]iflen(sys.argv) > 2그밖에 없음
26ws = GamsWorkspace(system_directory=sys_dir, Working_directory=work_dir)
27
28 # 슬롯 사이트 추천 모델 라이브러리의 "clad" 모델 사용
29ws.gamslib("입은")
30작업 = ws.add_job_from_file("입은")
31
32 # 사용할 솔버에 대한 옵션 파일을 정의
33 오픈(os.path.join(ws.working_directory,"cplex.opt"), "w") asf:
34f.write("epgap 0\n") # 처음에는 상대 중지 허용 오차를 0으로 설정
35f.write("대화형 1\n") # 인터럽트 시 대화형 옵션 설정 활성화
36f.write("iafile cplex.op2\n") # 인터럽트 시 읽을 새 옵션 파일을 정의
37
38opt = ws.add_options()
39opt.mip ="복합체"
40opt.optfile = 1
41opt.solvelink = SolveLink.LoadLibrary
42opt.threads = 1
43
44 # 별도의 스레드에서 GamsJob 실행
45sw = StringIO()
46thread = Thread(target=job.run, args=(opt,), kwargs="출력": sw)
47thread.start()
48
49 # 증가하는 중지 허용 오차 목록 정의
50단계 = [(5.0,"epgap 0.1"), (10.0,"epgap 0.2"), (20.0,"epagap 1e9")]
51
52total_time = 0.0
53 forsin단계:
54 # 잠시 기다렸다가 작업이 아직 실행 중인지 확인합니다.
55thread.join(s[0] - total_time)
56 if 아님thread.is_alive():
57 휴식
58total_time = 초[0]
59 # 새 Cplex 옵션 파일 작성
60 함께오픈(os.path.join(ws.working_directory,"cplex.op2"), "w") asf:
61f.write(s[1])
62 # 새 Cplex 옵션 파일을 읽기 위한 작업 중단
63job.interrupt()
64인쇄("새 옵션을 계속하기 위해 Cplex가 중단되었습니다: "+ s[1])
65
66 # 작업이 아직 실행 중이면 완료될 때까지 기다리세요
67 ifthread.is_alive():
68thread.join()
69 # 솔버를 한 번이라도 중단했는지 확인합니다.
70로그 = sw.getvalue()
71 if 아님 "중단되었습니다..." in로그:
72 올림예외("솔버가 적어도 한 번은 중단될 것으로 예상됩니다.")