로드 중...
검색 중...
일치하는 항목 없음
transport2.py
이 파일의 문서로 이동하세요.
1
6
7가져오기os
8가져오기sys
9from게임가져오기GamsWorkspace
10
11GAMS_DATA ="""
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스칼라 f '1,000마일당 케이스당 운임(달러)' / 90 /;
32"""
33
34GAMS_MODEL ="""
35설정
36i '통조림 식물'
37j '시장';
38
39매개변수
40a(i) '경우에 따른 식물 i의 용량'
41b(j) '경우에 따라 시장 j의 수요'
42d(i,j) '거리(천 마일)';
43
44$if not set incname $abort '제공된 데이터 파일에 대한 포함 파일 이름이 없습니다'
45$include %incname%
46
47매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
48c(i,j) = f*d(i,j)/1000;
49
50변수
51x(i,j) '케이스 내 배송 수량'
52z '총 운송 비용(수천 달러)';
53
54양수 변수 x;
55
56수식
57비용 '목적 함수 정의'
58supply(i) '공장 i의 공급 제한을 준수하세요'
59demand(j) '시장 j의 수요 충족';
60
61비용.. z =e= sum((i,j), c(i,j)*x(i,j));
62
63공급(i).. 합계(j, x(i,j)) =l= a(i);
64
65수요(j).. 합계(i, x(i,j)) =g= b(j);
66
67모델 전송 /all/;
68
69z를 최소화하는 lp를 사용하여 전송을 해결합니다.
70
71x.l, x.m 표시;
72"""
73
74if__name__ =="__main__":
75sys_dir = sys.argv[1]iflen(sys.argv) > 1그밖에 없음
76work_dir = sys.argv[2]iflen(sys.argv) > 2그밖에 없음
77ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
78
79 함께오픈(os.path.join(ws.working_directory,"tdata.gms"), "w") as파일:
80파일.쓰기(GAMS_DATA)
81
82작업 = ws.add_job_from_string(GAMS_MODEL)
83opt = ws.add_options()
84opt.defines["inc이름"] ="tdata"
85job.run(옵션)
86 forrecjob.out_db["x"]:
87인쇄(
88f"x(rec.key(0),rec.key(1)): 레벨=rec.level 한계=rec.marginal"
89 )