/********************************************************
BCL Example Problems
====================
file xbfixbv.c
``````````````
Using the complete Coco Problem, as in xbcoco.c,
this program implements a binary fixing heuristic.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, 2001, rev. Mar. 2011
********************************************************/
#include
#include
#include "xprb.h"
#include "xprs.h"
#define PHASE 5
/* Phase = 4: Mines may open/closed freely; when closed save 20000 per month
* Phase = 5: Once closed always closed; larger saving */
#define NP 2 /* Number of products (p) */
#define NF 2 /* factories (f) */
#define NR 2 /* raw materials (r) */
#define NT 4 /* time periods (t) */
#define TOL 5.0E-4
/****DATA****/
double REV[][NT] = /* Unit selling price of product p in period t */
{{400, 380, 405, 350},
{410, 397, 412, 397}};
double CMAK[][NF] = /* Unit cost to make product p at factory f */
{{150, 153},
{ 75, 68}};
double CBUY[][NT] = /* Unit cost to buy raw material r in period t */
{{100, 98, 97, 100},
{200, 195, 198, 200}};
double COPEN[] = /* Fixed cost of factory f being open for one period */
{50000, 63000};
double CPSTOCK = 2.0; /* Unit cost to store any product p */
double CRSTOCK = 1.0; /* Unit cost to store any raw material r */
double REQ[][NR] = /* Requirement by unit of prod. p for raw material r */
{{1.0, 0.5},
{1.3, 0.4}};
double MXSELL[][NT] = /* Max. amount of p that can be sold in period t */
{{650, 600, 500, 400},
{600, 500, 300, 250}};
double MXMAKE[] = /* Max. amount factory f can make over all products */
{400, 500};
double MXRSTOCK = 300; /* Max. amount of r that can be stored each f and t */
double PSTOCK0[][NF] = /* Initial product p stock level at factory f */
{{50, 100},
{50, 50}};
double RSTOCK0[][NF] = /* Initial raw material r stock level at factory f*/
{{100, 150},
{ 50, 100}};
/****VARIABLES****/
XPRBvar openm[NF][NT];
/***********************************************************************/
void modcoco(XPRBprob prob)
{
XPRBvar make[NP][NF][NT], sell[NP][NF][NT], pstock[NP][NF][NT+1],
buy[NR][NF][NT], rstock[NR][NF][NT+1];
XPRBctr ctr;
int p,f,r,t;
/****VARIABLES****/
for(p=0;p |
/********************************************************
BCL Example Problems
====================
file xbfixbvls.c
````````````````
Using the complete Coco Problem, as in xbcoco.c,
this program implements a binary fixing heuristic.
- Model version saving and loading a start solution -
(c) 2009 Fair Isaac Corporation
author: S.Heipcke, Oct. 2009, rev. Mar. 2011
********************************************************/
#include
#include
#include "xprb.h"
#include "xprs.h"
#define PHASE 5
/* Phase = 4: Mines may open/closed freely; when closed save 20000 per month
* Phase = 5: Once closed always closed; larger saving */
#define NP 2 /* Number of products (p) */
#define NF 2 /* factories (f) */
#define NR 2 /* raw materials (r) */
#define NT 4 /* time periods (t) */
#define TOL 5.0E-4
/****DATA****/
double REV[][NT] = /* Unit selling price of product p in period t */
{{400, 380, 405, 350},
{410, 397, 412, 397}};
double CMAK[][NF] = /* Unit cost to make product p at factory f */
{{150, 153},
{ 75, 68}};
double CBUY[][NT] = /* Unit cost to buy raw material r in period t */
{{100, 98, 97, 100},
{200, 195, 198, 200}};
double COPEN[] = /* Fixed cost of factory f being open for one period */
{50000, 63000};
double CPSTOCK = 2.0; /* Unit cost to store any product p */
double CRSTOCK = 1.0; /* Unit cost to store any raw material r */
double REQ[][NR] = /* Requirement by unit of prod. p for raw material r */
{{1.0, 0.5},
{1.3, 0.4}};
double MXSELL[][NT] = /* Max. amount of p that can be sold in period t */
{{650, 600, 500, 400},
{600, 500, 300, 250}};
double MXMAKE[] = /* Max. amount factory f can make over all products */
{400, 500};
double MXRSTOCK = 300; /* Max. amount of r that can be stored each f and t */
double PSTOCK0[][NF] = /* Initial product p stock level at factory f */
{{50, 100},
{50, 50}};
double RSTOCK0[][NF] = /* Initial raw material r stock level at factory f*/
{{100, 150},
{ 50, 100}};
/****VARIABLES****/
XPRBvar openm[NF][NT];
/***********************************************************************/
void modcoco(XPRBprob prob)
{
XPRBvar make[NP][NF][NT], sell[NP][NF][NT], pstock[NP][NF][NT+1],
buy[NR][NF][NT], rstock[NR][NF][NT+1];
XPRBctr ctr;
int p,f,r,t;
/****VARIABLES****/
for(p=0;p |