source: stable/1.13/Clp/examples/modify.cpp @ 1898

Last change on this file since 1898 was 1559, checked in by stefan, 10 years ago

merge split branch into trunk

  • Property svn:keywords set to Id
File size: 2.6 KB
Line 
1/* $Id: modify.cpp 1559 2010-06-05 19:42:36Z stefan $ */
2// Copyright (C) 2007, International Business Machines
3// Corporation and others.  All Rights Reserved.
4/*
5  This example shows the creation of a model from arrays, solution
6  and then changes to objective and adding a row
7*/
8#include "ClpSimplex.hpp"
9#include "CoinHelperFunctions.hpp"
10int main(int argc, const char *argv[])
11{
12     ClpSimplex  model;
13     // model is as exmip1.mps from Data/samples
14     int numberRows = 5;
15     int numberColumns = 8;
16     int numberElements = 14;
17     // matrix data - column ordered
18     CoinBigIndex start[9] = {0, 2, 4, 6, 8, 10, 11, 12, 14};
19     int length[8] = {2, 2, 2, 2, 2, 1, 1, 2};
20     int rows[14] = {0, 4, 0, 1, 1, 2, 0, 3, 0, 4, 2, 3, 0, 4};
21     double elements[14] = {3, 5.6, 1, 2, 1.1, 1, -2, 2.8, -1, 1, 1, -1.2, -1, 1.9};
22     CoinPackedMatrix matrix(true, numberRows, numberColumns, numberElements, elements, rows, start, length);
23
24     // rim data
25     double objective[8] = {1, 0, 0, 0, 2, 0, 0, -1};
26     double rowLower[5] = {2.5, -COIN_DBL_MAX, 4, 1.8, 3};
27     double rowUpper[5] = {COIN_DBL_MAX, 2.1, 4, 5, 15};
28     double colLower[8] = {2.5, 0, 0, 0, 0.5, 0, 0, 0};
29     double colUpper[8] = {COIN_DBL_MAX, 4.1, 1, 1, 4, COIN_DBL_MAX, COIN_DBL_MAX, 4.3};
30     // load problem
31     model.loadProblem(matrix, colLower, colUpper, objective,
32                       rowLower, rowUpper);
33     // mark integer (really for Cbc/examples/modify.cpp
34     model.setInteger(2);
35     model.setInteger(3);
36
37     // Solve
38     model.initialSolve();
39
40     // Solution
41     const double * solution = model.primalColumnSolution();
42     int i;
43     for (i = 0; i < numberColumns; i++)
44          if (solution[i])
45               printf("Column %d has value %g\n", i, solution[i]);
46
47     // Change objective
48     double * objective2 = model.objective();
49     objective2[0] = -100.0;
50
51     // Solve - primal as primal feasible
52     model.primal(1);
53
54     // Solution (array won't have changed)
55     for (i = 0; i < numberColumns; i++)
56          if (solution[i])
57               printf("Column %d has value %g\n", i, solution[i]);
58
59     // Add constraint
60     int column[8] = {0, 1, 2, 3, 4, 5, 6, 7};
61     double element2[8] = {1, 1, 1, 1, 1, 1, 1, 1};
62     model.addRow(8, column, element2, 7.8, COIN_DBL_MAX);
63
64     // Solve - dual as dual feasible
65     model.dual();
66
67     /* Solution
68        This time we have changed arrays of solver so -
69        array won't have changed as column array and we added a row
70        - but be on safe side
71     */
72     solution = model.primalColumnSolution();
73     for (i = 0; i < numberColumns; i++)
74          if (solution[i])
75               printf("Column %d has value %g\n", i, solution[i]);
76
77     return 0;
78}
Note: See TracBrowser for help on using the repository browser.