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

Method optcost

constr3.cpp:59–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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 );
80 pn[ 3 ] = penalty( 3*sqr(p[0]-2)+4*sqr(p[1]-3)+2*sqr(p[2])-7*p[3]-120 );
81 pn[ 4 ] = penalty( 5*sqr(p[0])+8*p[1]+sqr(p[2]-6)-2*p[3]-40 );
82 pn[ 5 ] = penalty( 0.5*sqr(p[0]-8)+2*sqr(p[1]-4)+3*sqr(p[4])-p[5]-30 );
83 pn[ 6 ] = penalty( sqr(p[0])+2*sqr(p[1]-2)-2*p[0]*p[1]+14*p[4]-6*p[5] );
84 pn[ 7 ] = penalty( -3*p[0]+6*p[1]+12*sqr(p[8]-8)-7*p[9] );
85
86 real_value = cost;
87
88 if( con_notmet > 0 )
89 {
90 const double ps = 1.0 + 1.0 / n_con;
91 double pns = 0.0;
92
93 for( i = 0; i < n_con; i++ )
94 {
95 const double v = pn[ i ];
96 pns = ( 1.0 + pns ) * ps + ( v + v * v + v * v * v ) * 0.33333;
97 }
98
99 cost += 1e10 * pns;
100 }
101
102 return( cost );
103 }
104};
105
106int main()

Callers 1

mainFunction · 0.45

Calls 2

applyRoundFunction · 0.85
sqrFunction · 0.85

Tested by

no test coverage detected