#include #include"ilcplex/ilocplex.h"; using namespace std; int main(int argc, char** argv) { //Ime instance se prosledjuje kao argument komandne linije i to bez ekstenzije txt. Na primer pcp, pmed, tp,... char ime_instance[20]; sprintf(ime_instance, "%s", argv[1]); char celo_ime[24]; sprintf(celo_ime, "%s.txt", argv[1]); ifstream data(celo_ime); IloEnv env; try { IloModel model(env); IloInt n, m, p, check; data >> n; data >> m; data >> p; IloArrayc(env, n); for (int i = 0; i < n; i++) { c[i] = IloNumArray(env, m); for (int j = 0; j < m; j++) { data >> c[i][j]; } } data >> check; if (!check == 777) cout << "Podaci nisu ucitani kako treba."; IloNumVarArray y(env, m, 0, 1, ILOBOOL); IloArray x(env, n); for (int i = 0; i < n; i++) { x[i] = IloNumVarArray(env, m, 0, 1, ILOBOOL); } IloNumVar w(env); IloExpr fc(env); fc = w; model.add(IloMinimize(env, fc)); IloExpr cond1(env); for (int j = 0; j < m; j++) { cond1 += y[j]; } model.add(cond1 == p); cond1.end(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { IloExpr cond2(env); cond2 = x[i][j] - y[j]; model.add(cond2 <= 0); cond2.end(); } } for (int i = 0; i < n; i++) { IloExpr cond3(env); for (int j = 0; j < m; j++) { cond3 += x[i][j]; } model.add(cond3 == 1); cond3.end(); } for (int i = 0; i < n; i++) { IloExpr cond4(env); for (int j = 0; j < m; j++) { cond4 += c[i][j] * x[i][j]; } model.add(cond4 - w <= 0); cond4.end(); } IloCplex cplex(model); cplex.setOut(env.getNullStream()); if (!cplex.solve()) cout << "Nije nadjeno resenje."; cout << "Vrednost f-je cilja: " << cplex.getObjValue() << endl; cout << "Vreme: " << cplex.getTime() << endl; cout << "Status: " << cplex.getStatus(); char ime_izlazne_datoteke[20]; sprintf(ime_izlazne_datoteke, "%s_izlaz.txt", ime_instance); ofstream izlaz(ime_izlazne_datoteke); izlaz << "Reseavana je instanca: " << ime_instance << endl; izlaz << "Dobijena je vrednost funkcije cilja: " << cplex.getObjValue()<