/******************************************************** Xpress-BCL C Example Problems ============================= file folioarr.c ``````````````` Modeling a small LP problem to perform portfolio optimization. -- Array-based formulation -- (c) 2008 Fair Isaac Corporation author: S.Heipcke, Dec. 2003, rev. Mar. 2011 ********************************************************/ #include #include "xprb.h" #define NSHARES 10 /* Number of shares */ #define NRISK 5 /* Number of high-risk shares */ #define NNA 4 /* Number of North-American shares */ double RET[] = {5,17,26,12,8,9,7,6,31,21}; /* Estimated return in investment */ int RISK[] = {1,2,3,8,9}; /* High-risk values among shares */ int NA[] = {0,1,2,3}; /* Shares issued in N.-America */ int main(int argc, char **argv) { int s; XPRBprob prob; XPRBctr Risk,Na,Return,Cap; XPRBarrvar frac; /* Fraction of capital used per share */ prob = XPRBnewprob("FolioLP"); /* Initialize a new problem in BCL */ /* Create the decision variables */ frac = XPRBnewarrvar(prob, NSHARES, XPRB_PL, "frac", 0, XPRB_INFINITY); /* Objective: total return */ Return = XPRBnewarrsum(prob, "Return", frac, RET, XPRB_N, 0); XPRBsetobj(prob,Return); /* Set the objective function */ /* Limit the percentage of high-risk values */ Risk = XPRBnewctr(prob, "Risk", XPRB_L); for(s=0;s