/******************************************************** BCL Example Problems ==================== file xbscenar.c ``````````````` Different demand scenarios implemented with multiple threads. Win32 version (c) 2008-2023 Fair Isaac Corporation author: S. Heipcke, 2001, rev. Mar. 2011 ********************************************************/ #include #include #include #include #include "xprb.h" #define NSCENARIO 4 /* Number of demand scenarios */ #define MaxSuppliers 50 /* Max. number of suppliers */ #define MaxCustomers 50 /* Max. number of customers */ #define MaxArcs 100 /* Max. number of non-zero cost values */ #define DEMANDFILE XPRBDATAPATH "/trans/ex2dem" /* Demand data file (name completed below) */ #define AVAILFILE XPRBDATAPATH "/trans/ex2avail.dat" /* Supply data file */ #define COSTFILE XPRBDATAPATH "/trans/ex2cost.dat" /* Cost data file */ struct Costarcs{ int suppl; int custm; double value; }; DWORD WINAPI trans(LPVOID param); void XPRB_CC userprint(XPRBprob prob, void *file, const char *msg); /***********************************************************************/ /**********************/ /* Where things start */ /**********************/ int main(int argc,char *argv[]) { HANDLE tosolve[NSCENARIO]; int i; XPRBinit(); /* Initialize BCL */ /* Start the building+solving in parallel */ for(i=0;i0) XPRBprintf(prob, "%s (%g) -> %s (%g): %g\n", XPRBgetidxelname(Suppliers,COST[a].suppl), AVAIL[COST[a].suppl], XPRBgetidxelname(Customers,COST[a].custm), DEMAND[COST[a].custm], XPRBgetsol(x[a])); } else XPRBprintf(prob, "Problem %s is infeasible\n", XPRBgetprobname(prob)); free(x); free(av); free(de); XPRBdelprob(prob); fclose(outfile); return 0; } void XPRB_CC userprint(XPRBprob prob, void *file, const char *msg) { /* Print output of each example into a different file */ fprintf((FILE *)file, "%s", msg); }