MCPcopy Create free account
hub / github.com/avaneev/biteopt / CTestOpt

Class CTestOpt

constr3.cpp:22–104  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20}
21
22class CTestOpt : public CBiteOptDeep
23{
24public:
25 int con_notmet;
26 double real_value;
27
28 virtual void getMinValues( double* const p ) const
29 {
30 int i;
31
32 for( i = 0; i < ::N; i++ )
33 {
34 p[ i ] = -10.0;
35 }
36 }
37
38 virtual void getMaxValues( double* const p ) const
39 {
40 int i;
41
42 for( i = 0; i < ::N; i++ )
43 {
44 p[ i ] = 10.0;
45 }
46 }
47
48 double penalty( const double v )
49 {
50 if( v > tol )
51 {
52 con_notmet++;
53 return( v - tol );
54 }
55
56 return( 0.0 );
57 }
58
59 virtual double optcost( const double* const p0 )
60 {
61 double p[ ::N ];
62 int i;
63
64 for( i = 0; i < ::N; i++ )
65 {
66 p[ i ] = applyRound( p0[ i ]);
67 }
68
69 double cost = sqr(p[0])+sqr(p[1])+p[0]*p[1]-14*p[0]-16*p[1]+sqr(p[2]-10)+
70 4*sqr(p[3]-5)+sqr(p[4]-3)+2*sqr(p[5]-1)+5*sqr(p[6])+
71 7*sqr(p[7]-11)+2*sqr(p[8]-10)+sqr(p[9]-7)+45;
72
73 const int n_con = 8;
74 double pn[ n_con ];
75 con_notmet = 0;
76
77 pn[ 0 ] = penalty( 4*p[0]+5*p[1]-3*p[6]+9*p[7]-105 );
78 pn[ 1 ] = penalty( 10*p[0]-8*p[1]-17*p[6]+2*p[7] );
79 pn[ 2 ] = penalty( -8*p[0]+2*p[1]+5*p[8]-2*p[9]-12 );

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected