1함수transportEngine(varargin)
5wsInfo = 슬롯 무료체험control.WorkspaceInfo();
6wsInfo.systemDirectory = varargin1;
7ws = 슬롯 무료체험control.Workspace(wsInfo);
9ws = 슬롯 무료체험control.Workspace();
12%가 환경 변수에서 엔진 구성을 읽었습니다.
13engine_url = getenv(
'ENGINE_URL');
15오류(
'환경 변수 ENGINE_URL이 설정되지 않았습니다');
17engine_user = getenv(
'ENGINE_USER');
18 ifisempty(engine_user)
19오류(
'환경 변수 ENGINE_USER가 설정되지 않았습니다');
21engine_password = getenv(
'엔진_비밀번호');
22 ifisempty(engine_password)
23오류(
'환경 변수 ENGINE_PASSWORD가 설정되지 않음');
25engine_namespace = getenv(
'ENGINE_NAMESPACE');
26 ifisempty(engine_namespace)
27오류(
'환경 변수 ENGINE_NAMESPACE가 설정되지 않았습니다');
30 %
세트업 구성 필요
for슬롯 무료체험 엔진의 모든 작업
31engine_configuration = gams.control.슬롯 무료체험Configuration(엔진_url, 엔진_사용자, ...
32엔진_비밀번호,
"", 엔진_네임스페이스);
34출력 = 슬롯 무료체험control.PrintStream();
36runEngineJob1(ws, 엔진_구성, 출력);
37runEngineJob2(ws, 엔진_구성, 출력);
38runEngineJob3(ws, 엔진_구성, 출력);
41함수runEngineJob1(ws, 엔진_구성, 출력)
42% a의 데이터로 실행
문자열슬롯 무료체험 구문 포함
명시적GDX 파일로 내보내기
44job = ws.addJobFromString(data());
46engine_run_parameters = gams.control.슬롯 무료체험RunParameters();
47engine_run_parameters.configuration = 엔진_구성;
48engine_run_parameters.output = 출력;
50output.println(
'문자열에서 데이터 실행중...');
51job.runEngine(engine_run_parameters);
52job.outDB.export(
'tdata.gdx');
55함수runEngineJob2(ws, 엔진_구성, 출력)
56% 작업 실행
사용 중데이터 포함 파일을 정의하는 옵션의 인스턴스
58job = ws.addJobFromString(model());
60opt.defines(
'gdxincname',
'tdata');
61opt.setAllModelTypes(
'익스프레스');
63engine_run_parameters = gams.control.슬롯 무료체험RunParameters();
64engine_run_parameters.configuration = 엔진_구성;
65engine_run_parameters.output = 출력;
66engine_run_parameters.options = 선택;
67engine_run_parameters.extraModelFiles =
"tdata.gdx"};
68engine_run_parameters.engineOptions = 컨테이너.맵(...
69{
'inex_string'}, {
'"유형": "포함", "파일": ["*.gdx"]'});
71output.println(
'데이터 포함 파일을 정의하는 옵션 인스턴스를 사용하여 실행 중...');
72job.runEngine(engine_run_parameters);
74% 변수 검색
'x'욥으로부터
의 출력 데이터베이스
75for x = job.outDB.getVariable('x
').기록
76fprintf('x(%s,%s): 레벨=%g 한계=%g\n
', x1.keys:, x1.level, x1.marginal);
80함수 runEngineJob3(ws, 엔진_구성, 출력)
81% 2와 동일하지만 암시적 데이터베이스 통신이 있음
83job1 = ws.addJobFromString(data());
85engine_run_parameters = gams.control.슬롯 무료체험RunParameters();
86engine_run_parameters.configuration = 엔진_구성;
87engine_run_parameters.output = 출력;
89output.println('문자열에서 데이터를 실행하는 중...
');
90job1.runEngine(engine_run_parameters);
92job2 = ws.addJobFromString(model());
93cp = ws.addCheckpoint();
95opt.defines('gdxincname
', job1.outDB.name);
96opt.setAllModelTypes('익스프레스
');
98engine_run_parameters = gams.control.슬롯 무료체험RunParameters();
99engine_run_parameters.configuration = 엔진_구성;
100engine_run_parameters.output = 출력;
101engine_run_parameters.options = 선택;
102engine_run_parameters.checkpoint = cp;
103engine_run_parameters.databases = job1.outDB;
105output.println('체크포인트 암시적 데이터베이스 통신을 사용하여 문자열에서 모델을 실행 중...
');
106job2.runEngine(engine_run_parameters);
108% 검색 변수 'x
' 욥에게서's 출력 데이터베이스
109for x = job2.outDB.getVariable(
'x').기록
110fprintf(
'x(%s,%s): 레벨=%g 한계=%g\n', x1.keys:, x1.level, x1.marginal);
117 ' 나는 통조림 공장 / 시애틀, 샌디에고 / '
118 ' j 마켓 / 뉴욕, 시카고, 토피카 / ; '
121 ' a(i) '의 경우 공장 i의 용량
125 ' b(j) '의 경우 시장 j의 수요
130 '테이블 d(i,j) 거리(천 마일 단위) '
133 ' 샌디에고 2.5 1.8 1.4 ; '
135 '천 마일당 케이스당 달러 단위의 스칼라 f 화물 /90/ '
136 ' bmult 수요 승수 /1/; '};
137데이터 = 스프린트f(
'%s\n', 데이터:);
147 ' a(i) '의 경우 공장 i의 용량
148 ' b(j) '의 경우 시장 j의 수요
151 ' 스칼라 f 운임(1,000마일당 케이스당 달러); '
154 '$gdxincname $abort가 설정되지 않은 경우 ''제공된 데이터 파일에 대한 포함 파일 이름이 없습니다'''
155 '$gdxin %gdxincname% '
156 '$load i j a b d f bmult '
159 ' 매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ; '
160 ' c(i,j) = f * d(i,j) / 1000 ; '
164 ' z 총 운송 비용(단위: 수천 달러); '
170 ' 공급(i) 공장 i의 공급 제한을 준수합니다. '
171 ' 수요(j)는 시장 j의 수요를 충족시킵니다. '
173 ' 비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; '
175 ' 공급(i) .. sum(j, x(i,j)) =l= a(i) ; '
177 ' 수요(j) .. sum(i, x(i,j)) =g= bmult*b(j) ; '
181 ' z 를 최소화하는 lp를 사용하여 전송을 해결합니다. '
188모델 = 스프린트f(
'%s\n', 모델:);