로드 중...
검색 중...
일치하는 항목 없음
transport5.py
이 파일의 문서로 이동하세요.
1
7
8가져오기sys
9에서게임가져오기GamsWorkspace
10
11GAMS_MODEL ="""
12설정
13i '통조림 공장' / 시애틀, 샌디에이고 /
14j 'markets' / 뉴욕, 시카고, 토피카 /;
15
16매개변수
17a(i) '경우에 따른 식물 i의 용량'
18/ 시애틀 350
19샌디에고 600 /
20
21b(j) '경우에 따라 시장 j의 수요'
22/뉴욕 325
23시카고 300
24토피카 275 /;
25
26테이블 d(i,j) '거리(천 마일)'
27뉴욕 시카고 토피카
28시애틀 2.5 1.7 1.8
29산디에고 2.5 1.8 1.4;
30
31스칼라
32f '1,000마일당 케이스당 운임(달러)' / 90 /
33bmult '수요 승수' / 1 /;
34
35매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
36c(i,j) = f*d(i,j)/1000;
37
38변수
39x(i,j) '케이스의 배송 수량'
40z '총 운송 비용(수천 달러)';
41
42양수 변수 x;
43
44방정식
45비용 '목적 함수 정의'
46supply(i) '공장 i의 공급 제한을 준수하세요'
47demand(j) '시장 j의 수요를 충족';
48
49비용.. z =e= sum((i,j), c(i,j)*x(i,j));
50
51공급(i).. 합계(j, x(i,j)) =l= a(i);
52
53수요(j).. sum(i, x(i,j)) =g= bmult*b(j);
54
55모델 전송 /all/;
56
57스칼라 ms '모델 상태', ss '해결 상태';
58"""
59
60if__name__ =="__main__":
61sys_dir = sys.argv[1]iflen(sys.argv) > 1그밖에 없음
62work_dir = sys.argv[2]iflen(sys.argv) > 2그밖에 없음
63ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
64
65cp = ws.add_checkpoint()
66
67 # GamsJob을 실행하여 GamsCheckpoint를 초기화합니다.
68작업 = ws.add_job_from_string(GAMS_MODEL)
69job.run(체크포인트=cp)
70
71bmult = [0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3]
72
73 # GamsCheckpoint에서 초기화되는 새로운 GamsJob 생성
74 forbb다중:
75작업 = ws.add_job_from_string(
76f"bmult=b; lp를 사용하여 전송 최소 z 해결; ms=transport.modelstat; ss=transport.solvestat;",
77cp,
78 )
79job.run()
80인쇄(f"시나리오 bmult=b:")
81인쇄(f" 모델 상태: job.out_db['ms'].find_record().value")
82인쇄(f" 해결 상태: job.out_db['ss'].find_record().value")
83인쇄(f" Obj: job.out_db['z'].find_record().level")