| |||||||||||||||||
Coco - A full production planning example Description The Coco productional planning problem: multi-item,
multi-period, multi-site production planning. A sequence
of model versions show how the model
was developed, to (a) use more sophisticated modeling features
and (b) to extend the model, taking it from a simple linear model
to one with fixed prices and logical decisions.
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
Data Files xbcoco1.c /******************************************************** BCL Example Problems ==================== file xbcoco1.c `````````````` Coco Problem Phase 1. Initial formulation: data, variables, and constraints fixed. (c) 2008-2024 Fair Isaac Corporation author: S.Heipcke, Jan. 2000, rev. Mar. 2011 ********************************************************/ #include <stdio.h> #include "xprb.h" int main(int argc, char **argv) { XPRBvar make11,make21,make12,make22; XPRBctr ctr; XPRBprob prob; prob=XPRBnewprob("Coco1"); /* Initialize a new problem in BCL */ /****VARIABLES****/ make11=XPRBnewvar(prob,XPRB_PL,"make11",0,XPRB_INFINITY); /* Amount of prod. 1 to make at factory 1 */ make21=XPRBnewvar(prob,XPRB_PL,"make21",0,XPRB_INFINITY); /* Amount of prod. 2 to make at factory 1 */ make12=XPRBnewvar(prob,XPRB_PL,"make12",0,XPRB_INFINITY); /* Amount of prod. 1 to make at factory 2 */ make22=XPRBnewvar(prob,XPRB_PL,"make22",0,XPRB_INFINITY); /* Amount of prod. 2 to make at factory 2 */ /****OBJECTIVE****/ ctr = XPRBnewctr(prob,"OBJ",XPRB_N); XPRBaddterm(ctr, make11, 50); /* Objective: maximize total profit */ XPRBaddterm(ctr, make21, 125); XPRBaddterm(ctr, make12, 47); XPRBaddterm(ctr, make22, 132); XPRBsetobj(prob,ctr); /* Select objective function */ /****CONSTRAINTS****/ ctr=XPRBnewctr(prob,"MxMake1",XPRB_L); /* Capacity limit at factory 1 */ XPRBaddterm(ctr, make11, 1); XPRBaddterm(ctr, make21, 1); XPRBaddterm(ctr, NULL, 400); ctr=XPRBnewctr(prob,"MxMake2",XPRB_L); /* Capacity limit at factory 2 */ XPRBaddterm(ctr, make12, 1); XPRBaddterm(ctr, make22, 1); XPRBaddterm(ctr, NULL, 500); ctr=XPRBnewctr(prob,"MxSell1",XPRB_L); /* Limit on amount of prod. 1 to be sold */ XPRBaddterm(ctr, make11, 1); XPRBaddterm(ctr, make12, 1); XPRBaddterm(ctr, NULL, 650); ctr=XPRBnewctr(prob,"MxSell2",XPRB_L); /* Limit on amount of prod. 2 to be sold */ XPRBaddterm(ctr, make21, 1); XPRBaddterm(ctr, make22, 1); XPRBaddterm(ctr, NULL, 600); /****SOLVING + OUTPUT****/ XPRBsetsense(prob, XPRB_MAXIM); /* Choose the sense of optimization */ XPRBlpoptimize(prob, ""); /* Solve the LP-problem */ printf("Objective: %g\n", XPRBgetobjval(prob)); /* Get objective value */ /* Print out the solution values for all variables */ printf("%s: %g\n",XPRBgetvarname(make11),XPRBgetsol(make11)); printf("%s: %g\n",XPRBgetvarname(make21),XPRBgetsol(make21)); printf("%s: %g\n",XPRBgetvarname(make12),XPRBgetsol(make12)); printf("%s: %g\n",XPRBgetvarname(make22),XPRBgetsol(make22)); return 0; } | |||||||||||||||||
© Copyright 2024 Fair Isaac Corporation. |