You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
1.2 KiB
88 lines
1.2 KiB
/*
|
|
|
|
Curve fitting problem 12.11(b) H P Williams "Model Building in Mathematical Programming"
|
|
|
|
Dr. H J Mackenzie
|
|
HARD software
|
|
hjm@hardsoftware.com
|
|
|
|
2006-01-23
|
|
|
|
*/
|
|
|
|
# set of points
|
|
|
|
set I;
|
|
|
|
# independent variable
|
|
|
|
param x {i in I};
|
|
|
|
# dependent variable
|
|
|
|
param y {i in I};
|
|
|
|
# output input values
|
|
|
|
printf {i in I} "x = %.1f; y = %.1f\n", x[i], y[i];
|
|
|
|
# define equation variables
|
|
|
|
var a;
|
|
|
|
var b;
|
|
|
|
var u {i in I}, >= 0;
|
|
|
|
var v {i in I}, >= 0;
|
|
|
|
var z;
|
|
|
|
# define objective function
|
|
|
|
minimize deviation: z;
|
|
|
|
# define equation constraint
|
|
|
|
s.t. equation {i in I} : b * x[i] + a + u[i] - v[i] = y[i];
|
|
|
|
# define deviation constrains
|
|
|
|
s.t. u_deviation {i in I} : z - u[i] >= 0;
|
|
s.t. v_deviation {i in I} : z - v[i] >= 0;
|
|
|
|
solve;
|
|
|
|
printf "y = %.4fx + %.4f Max deviation = %.4f\n", b, a, z;
|
|
|
|
/*
|
|
*
|
|
* DATA section
|
|
*
|
|
*/
|
|
|
|
data;
|
|
|
|
param : I : x y :=
|
|
1 0 1
|
|
2 0.5 0.9
|
|
3 1 0.7
|
|
4 1.5 1.5
|
|
5 1.9 2
|
|
6 2.5 2.4
|
|
7 3 3.2
|
|
8 3.5 2
|
|
9 4 2.7
|
|
10 4.5 3.5
|
|
11 5 1
|
|
12 5.5 4
|
|
13 6 3.6
|
|
14 6.6 2.7
|
|
15 7 5.7
|
|
16 7.6 4.6
|
|
17 8.5 6
|
|
18 9 6.8
|
|
19 10 7.3
|
|
;
|
|
|
|
end;
|