로드 중...
검색 중...
일치하는 항목 없음
transport10.cpp 파일 참조

이것은 일련의 튜토리얼 예제 중 10번째 모델입니다.더 보기...

#include "슬롯 사이트 추천h"
#include <iostream>
#include <벡터>
#include <QAxObject>
#include <Windows.h>

이 파일의 소스 코드로 이동하세요.

기능

문자열 getModelText ()
 
슬롯 사이트 추천매개변수 sheetToParameter(QAxObject *sheets, 문자열 sheetName,슬롯 사이트 추천데이터베이스db, 문자열 paramName, 문자열 paramText,GAMSSet설정)
 
슬롯 사이트 추천매개변수 sheetToParameter(QAxObject *sheets, 문자열 sheetName,슬롯 사이트 추천데이터베이스db, 문자열 paramName, 문자열 paramText,GAMSSet세트1,GAMSSet세트2)
 
int 메인(int argc, char *argv[])
 

자세한 설명

이것은 일련의 튜토리얼 예제 중 10번째 모델입니다.

여기서 보여드리겠습니다:

  • MS Excel에서 읽어 GAMSDatabase를 채우는 방법

파일의 정의transport10.cpp.

함수 문서

◆ getModelText()

string getModelText ( )

라인 정의49파일transport10.cpp.

50{
51 반환 " 세트 \n"
52 "나는 식물을 통조림으로 만들고 있습니다 \n"
53 " j 시장 \n"
54 " \n"
55 " 매개변수 \n"
56 " a(i) 경우에 따라 공장 i의 용량 \n"
57 " b(j) 경우의 시장 j 수요 \n"
58 " d(i,j) 거리(천 마일 단위) \n"
59 " 스칼라 f 운임(1,000 마일당 케이스당 달러 단위) /90/; \n"
60 " \n"
61 "$if gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름이 설정되지 않았습니다'\n"
62 "$gdxin %gdxincname% \n"
63 "$load i j a b d \n"
64 "$gdxin\n"
65 " \n"
66 " 매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ; \n"
67 " \n"
68 " c(i,j) = f * d(i,j) / 1000 ; \n"
69 " \n"
70 " 변수 \n"
71 " x(i,j) 배송 수량 \n"
72 " z 총 운송 비용(단위: 수천 달러) ; \n"
73 " \n"
74 " 양수 변수 x ; \n"
75 " \n"
76 " 방정식 \n"
77 " 비용 정의 목적 함수 \n"
78 " 공급(i) 공장 i의 공급 제한 준수 \n"
79 " 수요(j)는 시장 j의 수요를 충족시킵니다. \n"
80 " \n"
81 " 비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; \n"
82 " \n"
83 " 공급(i) .. sum(j, x(i,j)) =l= a(i) ; \n"
84 " \n"
85 " 수요(j) .. sum(i, x(i,j)) =g= b(j) ; \n"
86 " \n"
87 " 모델 전송 /all/ ; \n"
88 " \n"
89 " z를 최소화하는 lp를 사용하여 전송 문제를 해결합니다. \n"
90 " \n"
91 " x.l, x.m 표시 ; \n";
92}

참조자메인().

◆ 메인()

int 메인 ( int argc,
문자 * argv[] )

라인 정의165파일transport10.cpp.

166{
167cout <<"---------- 수송 10 ------------"<< endl;
168 시도해 보세요{
169::CoInitialize(0);// ActiveX를 사용하도록 스레드 초기화(일부 시스템에는 CoInitializeEx가 필요할 수 있음)
170
171 GAMSWorkspaceInfowsInfo;
172 if(인수 > 1)
173wsInfo.setSystemDirectory(argv[1]);
175
176 // GAMSDatabase 생성 및 통합 문서 데이터 채우기
178QString fileName = QString::fromStdString(ws.systemDirectory())+ cPathSep +"api파일"+ cPathSep +"데이터"+ cPathSep +"transport.xlsx";
179
180QAxObject* 엑셀 =신규QAxObject("Excel.응용프로그램", 0 );
181QAxObject* 통합 문서 = excel->querySubObject("통합문서");
182QAxObject* 통합 문서 = 통합 문서->querySubObject("열기(const QString&)", 파일 이름 );
183QAxObject* 시트 = 통합 문서->querySubObject("워크시트");
184
185 GAMSSeti = db.추가세트("나", 1,"식물");
186 GAMSSetj = db.추가세트("j", 1,"시장");
187
188 //매개변수 읽기
189 sheetToParameter(시트,"용량", DB,"a", "용량", i);
190 sheetToParameter(시트,"수요",디비,"b", "수요", j);
191 sheetToParameter(시트,"거리", DB,"d", "거리", i, j);
192
193 // 정리하고 닫습니다
194워크북->dynamicCall("닫기()");
195excel->dynamicCall("종료()");
196
197
198 // GAMSJob 생성 및 실행
199 슬롯 사이트 추천옵션opt = ws.addOptions();
200 GAMSJobt10 = ws.addJobFromString(getModelText());
201선택.setDefine("gdxincname", DB.이름());
202선택.setAllModelTypes("익스프레스");
203t10.실행(선택, DB);
204 for (GAMSVariableRecord기록 : t10.outDB().get변수("x"))
205cout <<"x("<< 레코드.키(0) <<","<< 레코드.키(1) <<"): 레벨="<< 레코드.레벨() <<
206 " 한계="<< Record.marginal() << endl;
207
208::CoUninitialize();
209
211cout <<"슬롯 사이트 추천예외 발생: "<< ex.what() << endl;
212}잡기(예외 &ex)
213cout << ex.what() << endl;
214}
215
216 반환0;
217}
GAMSSet addSet(const std::string &name, const int 차원, const std::string &explanatoryText="", GAMSEnum::SetType setType=GAMSEnum::SetType::Multi)
GAMSVariable getVariable(const std::string &name)
슬롯 사이트 추천데이터베이스 outDB()
void setAllModelTypes(const std::string &solver)
void setDefine(const std::string &key, const std::string &value)
void setSystemDirectory(const std::string &systemDir)
GAMSParameter sheetToParameter(QAxObject *sheets, 문자열 sheetName, GAMSDatabase db, 문자열 paramName, 문자열 paramText, GAMSSet 집합)
string getModelText()

◆ sheetToParameter()[1/2]

슬롯 사이트 추천매개변수sheetToParameter ( QAxObject * 시트,
문자열 시트이름,
슬롯 사이트 추천데이터베이스 db,
문자열 paramName,
문자열 paramText,
GAMSSet 설정 )

1차원 GAMSParameter를 생성하고 Excel 시트에서 데이터를 전송합니다(가로 정렬)

매개변수
시트열린 Excel 통합 문서의 시트 개체
시트이름읽을 시트의 이름
dbGAMSParameter가 생성된 GAMSDatabase
paramName새 GAMSParameter의 이름
paramText새 GAMSParameter에 대한 설명 텍스트
세트GAMSParameter 차원에 대한 GAMSSet
반환
GAMSDatabase의 새로운 GAMSParameter

라인 정의104파일transport10.cpp.

106{
107QAxObject* 시트 = 시트->querySubObject("아이템(문자열)", sheetName.c_str() );
108 슬롯 사이트 추천매개변수param = db.addParameter(paramName, paramText, set);
109
110QAxObject* 사용 범위 = 시트->querySubObject("사용범위");
111QAxObject * columns = Usedrange->querySubObject("열");
112 intintCols = 열->속성("카운트").toInt();
113
114 for (inti = 1; 나는 <= intCols; 나++)
115std::string 이름 = 시트->querySubObject("셀( int, int )", 1, i)->dynamicCall("값()").toString().toStdString();
116 더블값 = 시트->querySubObject("셀( int, int )", 2, i)->dynamicCall("값()").toDouble();
117설정합니다.추가기록(이름);
118 GAMSParameterRecordrec = 매개변수.추가기록(이름);
119추천세트값(값);
120}
121 반환매개변수;
122}
GAMSParameter addParameter(const std::string &name, const int 차원, const std::string &explanatoryText="")
GAMSParameterRecord addRecord(const std::벡터< std::string > &keys)
GAMSSetRecord addRecord(const std::벡터< std::string > &keys)

참조자메인().

◆ sheetToParameter()[2/2]

슬롯 사이트 추천매개변수sheetToParameter ( QAxObject * 시트,
문자열 시트이름,
슬롯 사이트 추천데이터베이스 db,
문자열 paramName,
문자열 paramText,
GAMSSet 세트1,
GAMSSet 세트2 )

2차원 GAMSParameter를 생성하고 Excel 시트에서 데이터를 전송

매개변수
시트열린 Excel 통합 문서의 시트 개체
시트이름읽을 시트의 이름
dbGAMSParameter가 생성된 GAMSDatabase
paramName새 GAMSParameter의 이름
paramText새 GAMSParameter에 대한 설명 텍스트
set1첫 번째 GAMSParameter 차원에 대한 GAMSSet
set2두 번째 GAMSParameter 차원에 대한 GAMSSet
반품
GAMSDatabase의 새로운 GAMSParameter

라인 정의135파일transport10.cpp.

137{
138QAxObject* 시트 = 시트->querySubObject("항목(문자열)", sheetName.c_str() );
139벡터<GAMSDomain>이 set1, set2를 설정합니다.
140 슬롯 사이트 추천매개변수param = db.addParameter(paramName, paramText, 세트);
141
142QAxObject* Usedrange = 시트->querySubObject("사용범위");
143QAxObject * columns = Usedrange->querySubObject("열");
144 intintCols = 열->속성("카운트").toInt();
145QAxObject * 행 = Usedrange->querySubObject("행");
146 intintRows = 행->속성("카운트").toInt();
147
148 for (intj = 2; j <= intCols; j++)
149 문자열namej = 시트->querySubObject("셀( int, int )", 1, j)->dynamicCall("값()").toString().toStdString();
150 (inti = 2; i <= intRows; ++i)
151 문자열namei = 시트->querySubObject("셀( int, int )", i, 1)->dynamicCall("값()").toString().toStdString();
152 GAMSParameterRecordrec = 매개변수.추가기록(namei, namej);
153 더블값 = 시트->querySubObject("셀( int, int )", i, j)->dynamicCall("값()").toDouble();
154rec.세트값(값);
155}
156}
157 반환매개변수;
158}