87천 마일당 케이스당 달러 단위의 스칼라 f 화물
90$if 설정되지 않음 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음'
91$gdxLoad %gdxincname% i j a b d f bmult
95매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ;
96c(i,j) = f * d(i,j) / 1000 ;
107수요(j)는 시장 j의 수요를 충족합니다. ;
109비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ;
110공급(i) .. 합계(j, x(i,j)) =l= a(i) ;
111수요(j) .. sum(i, x(i,j)) =g= bmult*b(j) ;
115z를 최소화하는 lp를 사용하여 전송을 해결합니다;
117스칼라 ms '모델 상태', ss '해결 상태';
134int 메인(
intargc,
문자* 인수[])
136cout <<
"------------ 운송 엔진 ------------"<< endl;
143파일 시스템::remove(ws.workingDirectory().append(
"/test.txt"));
149 for (
const 문자열&
id: {
"URL",
"사용자",
"비밀번호",
"NAMESPACE"}) {
154errno_t err = _dupenv_s( &buffer, &len, (envPrefix +
id).c_str() );
156envValues[index++] = 문자열(버퍼);
160cerr <<
"엔진 없음_"<<
id<<
" 설정"<< endl;
164 const 문자* 값 = getenv((envPrefix +
id).c_str());
166cerr <<
"엔진 없음_"<<
id<<
" 설정"<< endl;
169envValues[index++] = 값;
174GAMSEngineConfiguration 엔진Conf(envValues[0], envValues[1],
175envValues[2], envValues[3]);
179 피망 슬롯옵션defaultOptions = ws.addOptions();
182jobData.
runEngine(engineConf, &defaultOptions,
nullptr, &cout);
183jobData.
outDB().
do내보내기(파일 시스템::absolute(ws.workingDirectory().append(
"/tdata.gdx")).string());
185map<string, double> ExpectLevels =
"seattle.new-york", 0.0 },
186{
"seattle.chicago", 300.0 },
187{
"seattle.topeka", 0.0 },
188{
"san-diego.new-york", 325.0 },
189{
"san-diego.chicago", 0.0 },
190{
"san-diego.topeka", 275.0 }
202jobModel.
runEngine(engineConf, &opt,
nullptr, &cout, ,
"tdata.gdx"},
204{
"inex_string",
"\"유형\": \"포함\", \"파일\": [\"*.gdx\"]"}
208cout <<
"x("<< Rec.key(0) <<
","+ Rec.key(1) <<
"): 레벨="<< Rec.level()
209<<
"한계="<< Rec.marginal() <<
"\n";
211 if(expectedLevels.at(rec.key(0).append(
".").append(rec.key(1))) != rec.level())
212cout <<
"예상치 못한 결과, 예상 수준: "
213<< 예상 레벨.at(rec.key(0).append(
".").append(rec.key(1)))
219 if(filesystem::exists(filesystem::path(ws.workingDirectory()).append(
"test.txt"))) {
220cout <<
"Test.txt를 다시 보내서는 안 됩니다 - inex_string 실패"<< endl;
232직업A.
runEngine(engineConf, &defaultOptions,
nullptr, &cout);
238직업B.
runEngine(engineConf, &opt, &cp, &cout, 벡터<GAMSDatabase>jobA.
outDB()});
241cout <<
"x("<< Rec.key(0) <<
","+ Rec.key(1) <<
"): 레벨="<< Rec.level()
242<<
"한계="<< Rec.marginal() <<
"\n";
244 if(expectedLevels.at(rec.key(0).append(
".").append(rec.key(1))) != rec.level())
245cout <<
"예상치 못한 결과, 예상 수준: "
246<< 예상 레벨.at(rec.key(0).append(
".").append(rec.key(1)))
251벡터<map<string, double>> bmultExpected
252{{
"bmult", 0.9 }, {
"ms", 1 }, {
"ss", 1 }, {
"obj", 138.31 } },
253{{
"bmult", 1.2 }, {
"ms", 4 }, {
"ss", 1 }, {
"obj", 184.41 } }
256 for(map<string, double> &m : bmultExpected)
257 GAMSJobtEbmult = ws.addJobFromString(
"bmult="+ to_string(m[
"bmult"])
258 +
"; lp를 사용하여 전송 최소 z 해결; ms=transport.modelstat; "
259 "ss=transport.solvestat;", cp);
262tEbmult.
runEngine(engineConf, &defaultOptions,
nullptr, &cout);
263cout <<
"시나리오 bmult="<< to_string(m[
"bmult"]) <<
":"<< endl;
268cout <<
"예기치 않은 입력, 예상되는 bmult: "+ to_string(m[
"bmult"]) << endl;
272cout <<
"예상치 못한 결과, 예상 ms: "+ to_string(m[
"ms"]);
276cout <<
"예상치 못한 결과, 예상된 ss: "+ to_string(m[
"ss"]);
280cout <<
"예상치 못한 결과, 예상된 객체: "+ to_string(m[
"obj"]);
286cout <<
"예외 발생:"<< ex.what() << endl;
293 GAMSJobjc = ws.addJobFromGamsLib(
"입은");
329벡터<GAMSDatabase>(), set<string> optFile1Path, optFile2Path,
"claddat.gdx"},
void runEngine(const GAMSEngineConfiguration &engineConfiguration, GAMSOptions *gamsOptions, 피망 슬롯::GAMSCheckpoint *checkpoint, std::ostream *output=nullptr, const std::Vector< 피망 슬롯::GAMSDatabase > &databases=, const std::set< std::string > &extraModelFiles=, const std::unordered_map< std::string, std::string > &engineOptions=, bool createOutDB=true, bool RemoveResults=true)
std::string getDataText()