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

Method optcost

constr.cpp:70–121  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

68 }
69
70 virtual double optcost( const double* const p )
71 {
72 double s1 = 0.0;
73 double s2 = 0.0;
74 double s3 = 0.0;
75 int i;
76
77 for( i = 0; i < 4; i++ )
78 {
79 s1 += p[ i ];
80 s2 += sqr( p[ i ]);
81 }
82
83 for( i = 4; i < 13; i++ )
84 {
85 s3 += p[ i ];
86 }
87
88 double cost = 5.0*s1-5.0*s2-s3;
89
90 const int n_con = 9;
91 double pn[ n_con ];
92 con_notmet = 0;
93
94 pn[ 0 ] = penalty( 2.0*p[0]+2.0*p[1]+p[9]+p[10]-10.0 );
95 pn[ 1 ] = penalty( 2.0*p[0]+2.0*p[2]+p[9]+p[11]-10.0 );
96 pn[ 2 ] = penalty( 2.0*p[1]+2.0*p[2]+p[10]+p[11]-10.0 );
97 pn[ 3 ] = penalty( -8.0*p[0]+p[9] );
98 pn[ 4 ] = penalty( -8.0*p[1]+p[10] );
99 pn[ 5 ] = penalty( -8.0*p[2]+p[11] );
100 pn[ 6 ] = penalty( -2.0*p[3]-p[4]+p[9] );
101 pn[ 7 ] = penalty( -2.0*p[5]-p[6]+p[10] );
102 pn[ 8 ] = penalty( -2.0*p[7]-p[8]+p[11] );
103
104 real_value = cost;
105
106 if( con_notmet > 0 )
107 {
108 const double ps = 1.0 + 1.0 / n_con;
109 double pns = 0.0;
110
111 for( i = 0; i < n_con; i++ )
112 {
113 const double v = pn[ i ];
114 pns = ( 1.0 + pns ) * ps + ( v + v * v + v * v * v ) * 0.33333;
115 }
116
117 cost += 1e10 * pns;
118 }
119
120 return( cost );
121 }
122};
123
124int main()

Callers 1

mainFunction · 0.45

Calls 1

sqrFunction · 0.85

Tested by

no test coverage detected