folioinput.c |
/********************************************************
Xpress Optimizer Example Problems
=================================
file folioinput.c
`````````````````
Loading an LP problem via matrix input.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003, rev. Feb. 2023
********************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "xprs.h"
int main(int argc, char **argv)
{
XPRSprob prob;
int s, status, ncol;
double objval, *sol;
/* Initialize Xpress */
if (XPRSinit(NULL)) {
char message[512];
XPRSgetlicerrmsg(message,512);
printf("%s\n", message);
return -1;
}
XPRScreateprob(&prob); /* Create a new problem */
XPRSreadprob(prob, "Folio",""); /* Read the problem matrix */
XPRSchgobjsense(prob, XPRS_OBJ_MAXIMIZE); /* Set sense to maximization */
XPRSlpoptimize(prob, ""); /* Solve the problem */
XPRSwriteprtsol(prob, "Folio.prt", ""); /* Write results to file `Folio.prt' */
/*
XPRSgetintattrib(prob, XPRS_LPSTATUS, &status); / * Get LP sol. status * /
if(status == XPRS_LP_OPTIMAL)
{
XPRSgetdblattrib(prob, XPRS_LPOBJVAL, &objval); / * Get objective value * /
printf("Total return: %g\n", objval);
XPRSgetintattrib(prob, XPRS_INPUTCOLS, &ncol); / * Get total no. of rows * /
sol = (double *)malloc(ncol*sizeof(double));
XPRSgetsolution(prob, NULL, sol, 0, ncol-1); / * Get primal solution * /
for(s=0;s<ncol;s++) printf("%d: %g%%\n", s+1, sol[s]*100);
}
*/
XPRSdestroyprob(prob); /* Delete the problem */
XPRSfree(); /* Terminate Xpress */
return 0;
}
|
|
foliolp.c |
/********************************************************
Xpress Optimizer Example Problems
=================================
file foliolp.c
``````````````
Loading a small LP problem via XPRSloadlp.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003, rev. June 2010
********************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "xprs.h"
int main(int argc, char **argv)
{
XPRSprob prob;
int s, status;
double objval, *sol;
/* Problem parameters */
int ncol = 10;
int nrow = 3;
/* Row data */
char rowtype[] = { 'L','G','E'};
double rhs[] = {1.0/3,0.5, 1};
/* Column data */
double obj[] = { 5, 17, 26, 12, 8, 9, 7, 6, 31, 21};
double lb[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
double ub[] = {0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3};
/* Matrix coefficient data */
int colbeg[] = {0, 2, 5, 8, 11,12,13,14,15, 17, 19};
int rowidx[] = {1,2,0,1,2,0,1,2,0,1,2, 2, 2, 2, 2, 0,2, 0,2};
double matval[] = {1,1,1,1,1,1,1,1,1,1,1, 1, 1, 1, 1, 1,1, 1,1};
/* Initialize Xpress */
if (XPRSinit(NULL)) {
printf("Failed to initialize Xpress.\n");
return -1;
}
XPRScreateprob(&prob); /* Create a new problem */
XPRSsetlogfile(prob, "logfile.txt"); /* Set optimizer output log file */
/* Load the problem matrix */
XPRSloadlp(prob, "FolioLP", ncol, nrow, rowtype, rhs, NULL,
obj, colbeg, NULL, rowidx, matval, lb, ub);
XPRSchgobjsense(prob, XPRS_OBJ_MAXIMIZE); /* Set sense to maximization */
XPRSlpoptimize(prob, ""); /* Solve the problem */
XPRSgetintattrib(prob, XPRS_LPSTATUS, &status); /* Get LP sol. status */
if(status == XPRS_LP_OPTIMAL)
{
XPRSgetdblattrib(prob, XPRS_LPOBJVAL, &objval); /* Get objective value */
printf("Total return: %g\n", objval);
sol = (double *)malloc(ncol*sizeof(double));
XPRSgetsolution(prob, NULL, sol, 0, ncol-1); /* Get primal solution */
for(s=0;s<ncol;s++) printf("%d: %g%%\n", s+1, sol[s]*100);
}
XPRSdestroyprob(prob); /* Delete the problem */
XPRSfree(); /* Terminate Xpress */
return 0;
}
|
|
foliomip1.c |
/********************************************************
Xpress Optimizer Example Problems
=================================
file foliomip1.c
````````````````
Loading a small MIP problem via XPRSloadmip.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003, rev. Sep. 2022
********************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "xprs.h"
int main(int argc, char **argv)
{
XPRSprob prob;
int s, status;
double objval, *sol;
/* Problem parameters */
int ncol = 20;
int nrow = 14;
int nmip = 10;
/* Row data */
char rowtype[] = { 'L','G','E','L','L','L','L','L','L','L','L','L','L','L'};
double rhs[] = {1.0/3,0.5, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
/* Column data */
double obj[] = { 5, 17, 26, 12, 8, 9, 7, 6, 31, 21,0,0,0,0,0,0,0,0,0,0};
double lb[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0,0};
double ub[] = {0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,1,1,1,1,1,1,1,1,1,1};
/* Matrix coefficient data */
int colbeg[] = {0,3,7,11,15,17,19,21,23,26,29,31,33,35,37,39,41,43,45,47,49};
int rowidx[] = {1,2,4,0,1,2,5,0,1,2,6,0,1,2,7,2,8,2,9,2,10,2,11,0,2,12,0,2,13,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13};
double matval[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1};
/* MIP problem data */
char miptype[] = {'B','B','B','B','B','B','B','B','B','B'};
int mipcol[] = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
/* Initialize Xpress */
if (XPRSinit(NULL)) {
printf("Failed to initialize Xpress.\n");
return -1;
}
XPRScreateprob(&prob); /* Create a new problem */
/* Load the problem matrix */
XPRSloadmip(prob, "FolioMIP1", ncol, nrow, rowtype, rhs, NULL,
obj, colbeg, NULL, rowidx, matval, lb, ub,
nmip, 0, miptype, mipcol, NULL, NULL, NULL, NULL, NULL);
XPRSchgobjsense(prob, XPRS_OBJ_MAXIMIZE); /* Set sense to maximization */
XPRSmipoptimize(prob, ""); /* Solve the problem */
XPRSgetintattrib(prob, XPRS_MIPSTATUS, &status); /* Get MIP sol. status */
if((status == XPRS_MIP_OPTIMAL) || (status == XPRS_MIP_SOLUTION))
{
XPRSgetdblattrib(prob, XPRS_MIPOBJVAL, &objval); /* Get objective value */
printf("Total return: %g\n", objval);
sol = (double *)malloc(ncol*sizeof(double));
XPRSgetsolution(prob, NULL, sol, 0, ncol-1); /* Get primal solution */
for(s=0;s<ncol/2;s++)
printf("%d: %g%% (%g)\n", s, sol[s]*100, sol[ncol/2+s]);
}
XPRSdestroyprob(prob); /* Delete the problem */
XPRSfree(); /* Terminate Xpress */
return 0;
}
|
|
foliomip2.c |
/********************************************************
Xpress Optimizer Example Problems
=================================
file foliomip.c
```````````````
Loading a small MIP problem via XPRSloadmip.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003, rev. Sep. 2022
********************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "xprs.h"
int main(int argc, char **argv)
{
XPRSprob prob;
int s, status;
double objval, *sol;
/* Problem parameters */
int ncol = 10;
int nrow = 3;
int nmip = 10;
/* Row data */
char rowtype[] = { 'L','G','E'};
double rhs[] = {1.0/3,0.5, 1};
/* Column data */
double obj[] = { 5, 17, 26, 12, 8, 9, 7, 6, 31, 21};
double lb[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
double ub[] = {0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3};
/* Matrix coefficient data */
int colbeg[] = {0, 2, 5, 8, 11,12,13,14,15, 17, 19};
int rowidx[] = {1,2,0,1,2,0,1,2,0,1,2, 2, 2, 2, 2, 0,2, 0,2};
double matval[] = {1,1,1,1,1,1,1,1,1,1,1, 1, 1, 1, 1, 1,1, 1,1};
/* MIP problem data */
char miptype[] = {'S','S','S','S','S','S','S','S','S','S'};
int mipcol[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
double sclim[] = {0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1};
/* Initialize Xpress */
if (XPRSinit(NULL)) {
printf("Failed to initialize Xpress.\n");
return -1;
}
XPRScreateprob(&prob); /* Create a new problem */
/* Load the problem matrix */
XPRSloadmip(prob, "FolioSC", ncol, nrow, rowtype, rhs, NULL,
obj, colbeg, NULL, rowidx, matval, lb, ub,
nmip, 0, miptype, mipcol, sclim, NULL, NULL, NULL, NULL);
XPRSchgobjsense(prob, XPRS_OBJ_MAXIMIZE); /* Set sense to maximization */
XPRSmipoptimize(prob, ""); /* Solve the problem */
XPRSgetintattrib(prob, XPRS_MIPSTATUS, &status); /* Get MIP sol. status */
if((status == XPRS_MIP_OPTIMAL) || (status == XPRS_MIP_SOLUTION))
{
XPRSgetdblattrib(prob, XPRS_MIPOBJVAL, &objval); /* Get objective value */
printf("Total return: %g\n", objval);
sol = (double *)malloc(ncol*sizeof(double));
XPRSgetsolution(prob, NULL, sol, 0, ncol-1); /* Get primal solution */
for(s=0;s<ncol;s++) printf("%d: %g%%\n", s, sol[s]*100);
}
XPRSdestroyprob(prob); /* Delete the problem */
XPRSfree(); /* Terminate Xpress */
return 0;
}
|
|
folioqp.c |
/********************************************************
Xpress Optimizer Example Problems
=================================
file folioqp.c
``````````````
Loading a small QP problem via XPRSloadqp.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003, rev. June 2010
********************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "xprs.h"
int main(int argc, char **argv)
{
XPRSprob prob;
int s, status;
double objval, *sol;
/* Problem parameters */
int ncol = 10;
int nrow = 3;
int nqt = 43;
/* Row data */
char rowtype[] = {'G','E','G'};
double rhs[] = {0.5, 1, 9};
/* Column data */
double obj[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
double lb[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
double ub[] = {0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3};
/* Matrix coefficient data */
int colbeg[] = {0, 3, 6, 9, 12, 14, 16, 18, 20, 22, 24};
int rowidx[] = {0,1,2,0,1, 2,0,1, 2,0,1, 2, 1,2, 1,2, 1,2, 1,2, 1, 2, 1,2};
double matval[] = {1,1,5,1,1,17,1,1,26,1,1,12, 1,8, 1,9, 1,7, 1,6, 1,31, 1,21};
/* QP problem data */
int qcol1[] = {0,
1,1,1,1,1,1,1,1,1,
2,2,2,2,2, 2,2,
3, 3,3, 3,3,
4,4,4,4,4,4,
5,5,5,5,5,
6,6,6,6,
7,7,7,
8,8,
9};
int qcol2[] = {0,
1,2,3,4,5,6,7,8,9,
2,3,4,5,6, 8,9,
3, 5,6, 8,9,
4,5,6,7,8,9,
5,6,7,8,9,
6,7,8,9,
7,8,9,
8,9,
9};
double qval[] = {0.1,
19,-2, 4,1, 1, 1,0.5, 10, 5,
28, 1,2, 1, 1, -2, -1,
22, 1, 2, 3, 4,
4,-1.5,-2, -1, 1, 1,
3.5, 2,0.5, 1,1.5,
5,0.5, 1,2.5,
1,0.5,0.5,
25, 8,
16};
for(s=0;s<nqt;s++) qval[s]*=2;
/* Initialize Xpress */
if (XPRSinit(NULL)) {
printf("Failed to initialize Xpress.\n");
return -1;
}
XPRScreateprob(&prob); /* Create a new problem */
/* Load the problem matrix */
XPRSloadqp(prob, "FolioQP", ncol, nrow, rowtype, rhs, NULL,
obj, colbeg, NULL, rowidx, matval, lb, ub,
nqt, qcol1, qcol2, qval);
XPRSchgobjsense(prob, XPRS_OBJ_MINIMIZE); /* Set sense to maximization */
XPRSlpoptimize(prob, ""); /* Solve the problem */
XPRSgetintattrib(prob, XPRS_LPSTATUS, &status); /* Get solution status */
if(status == XPRS_LP_OPTIMAL)
{
XPRSgetdblattrib(prob, XPRS_LPOBJVAL, &objval); /* Get objective value */
printf("Minimum variance: %g\n", objval);
sol = (double *)malloc(ncol*sizeof(double));
XPRSgetsolution(prob, NULL, sol, 0, ncol-1); /* Get primal solution */
for(s=0;s<ncol;s++) printf("%d: %g%%\n", s, sol[s]*100);
}
XPRSdestroyprob(prob); /* Delete the problem */
XPRSfree(); /* Terminate Xpress */
return 0;
}
|
|