1classdef TransportModel < 핸들
23함수 크레이지 슬롯 = TransportModel(ws)
26크레이지 슬롯opt = 크레이지 슬롯ws.addOptions();
28크레이지 슬롯dbin1 = 크레이지 슬롯ws.addDatabase('dbIn1');
29크레이지 슬롯dbin2 = 크레이지 슬롯ws.addDatabase('dbIn2');
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;
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', '천 마일당 케이스당 화물(달러)');
44크레이지 슬롯job = 크레이지 슬롯ws.addJobFromString(크레이지 슬롯modelSource());
48if ~크레이지 슬롯dbin1.checkDomains()
49error('데이터베이스 1의 도메인 오류');
51if ~크레이지 슬롯dbin2.checkDomains()
52error('데이터베이스 2의 도메인 오류');
55if isempty(cp) && isempty(출력)
56크레이지 슬롯job.run(크레이지 슬롯opt, false, 크레이지 슬롯dbin1, 크레이지 슬롯dbin2);
58크레이지 슬롯job.run(크레이지 슬롯opt, 출력, false, 크레이지 슬롯dbin1, 크레이지 슬롯dbin2);
60크레이지 슬롯job.run(크레이지 슬롯opt, 체크포인트, false, 크레이지 슬롯dbin1, 크레이지 슬롯dbin2);
62크레이지 슬롯job.run(크레이지 슬롯opt, 체크포인트, 출력, false, 크레이지 슬롯dbin1, 크레이지 슬롯dbin2);
65크레이지 슬롯dbout1 = 크레이지 슬롯ws.addDatabaseFromGDX(sprintf('%s.gdx', 크레이지 슬롯opt.getDefinitionOf('dbOut1')));
66크레이지 슬롯x = 크레이지 슬롯dbout1.getVariable('x');
67크레이지 슬롯z = 크레이지 슬롯dbout1.getVariable('z');
70함수 모델 = modelSource(크레이지 슬롯)
80 ' 스칼라 f 운임(1,000마일당 케이스당 달러); '
82 '$dbIn1 $abort를 설정하지 않은 경우 ''데이터베이스 내 1 파일에 대한 파일 이름이 제공되지 않았습니다.'' '
87 '$dbIn2 $abort를 설정하지 않은 경우 ''제공된 데이터베이스 2 파일에 대한 파일 이름이 없습니다'' '
92 ' 매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ; '
94 ' c(i,j) = f * d(i,j) / 1000 ; '
98 ' z 총 운송 비용(단위: 수천 달러); '
105 ' 공급(i) 공장 i의 공급 제한을 준수합니다. '
106 ' 수요(j)는 시장 j의 수요를 충족시킵니다. '
108 ' 비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; '
110 ' 공급(i) .. sum(j, x(i,j)) =l= a(i) ; '
112 ' 수요(j) .. sum(i, x(i,j)) =g= b(j) ; '
116 ' z 를 최소화하는 lp를 사용하여 전송을 해결합니다. '
119 '$dbOut1 $abort를 설정하지 않은 경우 ''데이터베이스 외부 1 파일에 대한 파일 이름이 제공되지 않음'' '
120 'execute_unload ''%dbOut1%'', x, z; '
122모델 = 스프린트f(
'%s\n', 모델:);