/******************************************************** Xpress-BCL C++ Example Problems =============================== file xbdlvriis2iso.cxx `````````````````````` Transportation problem (infeasible data). Retrieving and printing IIS. - Using Optimizer functions to retrieve detailed IIS information including isolation rows/bounds - (c) 2008 Fair Isaac Corporation author: S.Heipcke, Jan. 2008, rev. Mar. 2011 ********************************************************/ #include #include #include #include "xprb_cpp.h" #include "xprs.h" using namespace std; using namespace ::dashoptimization; #define NSupp 10 // Number of suppliers #define NCust 7 // Number of customers #define MaxArcs 100 // Max. num. of non-zero cost values #define VANFILE XPRBDATAPATH "/delivery/ifvan.dat" // Van data file #define COSTFILE XPRBDATAPATH "/delivery/cost.dat" // Cost data file /****DATA****/ // Supplier: London Luton B'ham Bristl Derby Stckpt York double SUPPLY[] = {140.0, 200.0, 50.0, 10.0, 400.0, 200.0, 20.0, // Supplier: Derby Soton Scnthp 90.0, 30.0, 12}; // Customer: London Livpol Doncst York Hull Manchr Shffld double DEMAND[] = {1230.3, 560.4, 117.1, 592.8, 310.0, 1247.0, 86}; double COST[NSupp][NCust]; // Cost per supplier-customer pair double IFVAN[NSupp][NCust]; // Non-zero if route uses vans instead // of lorries double VANCAP=40; // Capacity on routes that use vans /***********************************************************************/ void modDelivery(XPRBprob &p) { XPRBexpr lobj, lc; int s,c,i; XPRBvar x[NSupp][NCust]; int numv, numc, numiis, len, ncol, nrow; char *vnames, *cnames; int *viis,*ciis; char **vindex,**cindex; double bnd, rhs; char *ctrtype = NULL; char *bndtype = NULL; double *duals = NULL; double *rdcs = NULL; char *isolationrows = NULL; char *isolationbnds = NULL; const char *isotype[] = {"N/A", "No ", "Yes"}; XPRSprob op; /****VARIABLES****/ for(s=0;s= DEMAND[c]); } for(c=4; c= DEMAND[c]); } for(s=0;s<5;s++) // Keep within supply at each supplier { lc=0; for(c=0; c<4; c++) lc+= x[s][c]; p.newCtr("Supply", lc <= SUPPLY[s]); } for(s=5;s0) { // Print all variables in the IIS for(i=0;i0) { // Print all constraints in the IIS for(i=0;i