summaryrefslogtreecommitdiff
path: root/code/intqpipopt/intqpipoptExample1.sce
blob: cb5c648571fc81fb9b955f320f57b6d84d588693 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//Reference: K. Deep et al.,"A real coded genetic algorithm for solving integer and mixed integer optimization problems", Applied Mathematics and Computation, 212, p 505-518,2009
// min f(x) = x1^2 + x2^2 +x3^2 +x4^2 +x5^2 -8x1 - 2x2 - 3x3 - x4 -2x5
// Subject to
//       x1 + x2 + x3 + x4 + x5 <= 400;
//       x1 + 2x2 + 2x3 + x4 + 6x5 <= 800
//       2x1 + x2 + 6x3 <= 200
//       x3 + x4 + 5x5 <= 200
//       x1 + x2 + x3 + x4 + x5  >= 55
//       x1 + x2 + x3 + x4 >= 48
//       x2 + x4 + x5 >= 34
//       6x1 + 7x5 >= 104
// The known optimal solution is f*(x) = 807 at x* = [16. 22. 5. 5. 7.]
//=====================================================================
// Copyright (C) 2018 - IIT Bombay - FOSSEE
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution.  The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
// Author: Remya Kommadath
// Organization: FOSSEE, IIT Bombay
// Email: toolbox@scilab.in
//=====================================================================

clc; 
// Number of decision variables
nVar = 5;
// Num\ber of constraints
nCon = 8;
//integer constraints
intcon = 1:5;
//coefficients of the linear term
f = [-8 -2 -3 -1 -2];
// Hessian matrix
H = [2 0 0 0 0;
0 2 0 0 0
0 0 6 0 0
0 0 0 8 0
0 0 0 0 4];
// Bounds of the problem 
lb = zeros(1,nVar);
ub = 99*ones(1,nVar);
// Constraint matrix
A = [1 1 1 1 1;
1 2 2 1 6; 
2 1 6 0 0;
0 0 1 1 5;
-1 -1 -1 -1 -1
-1 -1 -1 -1 0;
0 -1 0 -1 -1;
-6 0 0 0 -7];
b = [400 800 200 200 -55 -48 -34 -104]';
// Initial guess to the solver
x0 = lb;
// Calling the solver
[xopt,fopt,exitflag,output] = intqpipopt(H,f,intcon,A,b,[],[],lb,ub,x0)

// Result representation
disp(x0, "The initial guess given to the solver")

select exitflag
case 0
    disp("Optimal Solution Found")
    disp(xopt',"The optimal solution determined by the solver")
    disp(fopt,"The optimal objective function")
case 1
    disp("InFeasible Solution")
case 2
    disp("Objective Function is Continuous Unbounded")
case 3
    disp("Limit Exceeded")
case 4
    disp("User Interrupt")
case 5
    disp("MINLP Error")
end