로드 중...
검색 중...
일치하는 항목 없음
TransportModel.m
1classdef TransportModel < 핸들
2
3속성(SetAccess =비공개)
4i
5j
6a
7b
8c
9d
10f
11x
12z
13선택
14ws
15dbin1
16dbin2
17dabout1
18직업
19
20
21메소드
22
23함수 무료 슬롯 = TransportModel(ws)
24
25무료 슬롯ws = ws;
26무료 슬롯opt = 무료 슬롯ws.addOptions();
27
28무료 슬롯dbin1 = 무료 슬롯ws.addDatabase('dbIn1');
29무료 슬롯dbin2 = 무료 슬롯ws.addDatabase('dbIn2');
30
31무료 슬롯opt.defines('dbIn1', 'dbIn1');
32무료 슬롯opt.defines('dbIn2', 'dbIn2');
33무료 슬롯opt.setAllModelTypes('cplex');
34무료 슬롯opt.defines('dbOut1', 'dbOut1');
35무료 슬롯opt.solveLink = gams.control.options.SolveLink.LoadLibrary;
36
37무료 슬롯i = 무료 슬롯dbin1.addSet('i', '통조림 식물');
38무료 슬롯j = 무료 슬롯dbin1.addSet('j', '시장');
39무료 슬롯a = 무료 슬롯dbin1.addParameter('a', '경우에 따른 플랜트 i의 용량', 무료 슬롯i);
40무료 슬롯b = 무료 슬롯dbin1.addParameter('b', '경우에 따라 시장 j의 수요', 무료 슬롯j);
41무료 슬롯d = 무료 슬롯dbin1.addParameter('d', '천 마일 단위의 거리', 무료 슬롯i, 무료 슬롯j);
42무료 슬롯f = 무료 슬롯dbin2.addParameter('f', '천 마일당 케이스당 화물(달러)');
43
44무료 슬롯job = 무료 슬롯ws.addJobFromString(무료 슬롯modelSource());
45
46
47함수 실행(무료 슬롯, cp, 출력)
48if ~무료 슬롯dbin1.checkDomains()
49error('데이터베이스 1의 도메인 오류');
50
51if ~무료 슬롯dbin2.checkDomains()
52error('데이터베이스 2의 도메인 오류');
53
54
55if isempty(cp) && isempty(출력)
56무료 슬롯job.run(무료 슬롯opt, false, 무료 슬롯dbin1, 무료 슬롯dbin2);
57elseif isempty(cp)
58무료 슬롯job.run(무료 슬롯opt, 출력, false, 무료 슬롯dbin1, 무료 슬롯dbin2);
59elseif isempty(출력)
60무료 슬롯job.run(무료 슬롯opt, 체크포인트, false, 무료 슬롯dbin1, 무료 슬롯dbin2);
61그밖에
62무료 슬롯job.run(무료 슬롯opt, 체크포인트, 출력, false, 무료 슬롯dbin1, 무료 슬롯dbin2);
63
64
65무료 슬롯dbout1 = 무료 슬롯ws.addDatabaseFromGDX(sprintf('%s.gdx', 무료 슬롯opt.getDefinitionOf('dbOut1')));
66무료 슬롯x = 무료 슬롯dbout1.getVariable('x');
67무료 슬롯z = 무료 슬롯dbout1.getVariable('z');
68
69
70함수 모델 = modelSource(무료 슬롯)
71모델 =
72 '세트'
73 ' 나는 통조림 식물 '
74 ' j 시장 '
75 ' '
76 ' 매개변수 '
77 ' a(i) '의 경우 공장 i의 용량
78 ' b(j) '의 경우 시장 j의 수요
79 ' d(i,j) 거리(천 마일) '
80 ' 스칼라 f 운임(1,000마일당 케이스당 달러); '
81 ' '
82 '$dbIn1 $abort를 설정하지 않은 경우 ''데이터베이스 내 1 파일에 대한 파일 이름이 제공되지 않았습니다.'' '
83 '$gdxin %dbIn1% '
84 '$load i j a b d '
85 '$gdxin '
86 ' '
87 '$dbIn2 $abort를 설정하지 않은 경우 ''제공된 데이터베이스 2 파일에 대한 파일 이름이 없습니다'' '
88 '$gdxin %dbIn2% '
89 '$load f '
90 '$gdxin '
91 ' '
92 ' 매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ; '
93 ' '
94 ' c(i,j) = f * d(i,j) / 1000 ; '
95 ' '
96 ' 변수 '
97 ' x(i,j) '의 경우 배송 수량
98 ' z 총 운송 비용(단위: 수천 달러); '
99 ' '
100 ' 양수 변수 x ; '
101 ' '
102 ' 방정식 '
103 ' '
104 ' 비용 정의 목적 함수 '
105 ' 공급(i) 공장 i의 공급 제한을 준수합니다. '
106 ' 수요(j)는 시장 j의 수요를 충족시킵니다. '
107 ' '
108 ' 비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; '
109 ' '
110 ' 공급(i) .. sum(j, x(i,j)) =l= a(i) ; '
111 ' '
112 ' 수요(j) .. sum(i, x(i,j)) =g= b(j) ; '
113 ' '
114 ' 모델 전송 /all/ ; '
115 ' '
116 ' z 를 최소화하는 lp를 사용하여 전송을 해결합니다. '
117 ' '
118 ' x.l, x.m 표시 ; '
119 '$dbOut1 $abort를 설정하지 않은 경우 ''데이터베이스 외부 1 파일에 대한 파일 이름이 제공되지 않음'' '
120 'execute_unload ''%dbOut1%'', x, z; '
121 ' '};
122모델 = 스프린트f('%s\n', 모델:);
123
124
125
126
127