/*generating model type: 2, size: 1, mr-density: 1, ro-density: 1, varianceBound: 0.00 */
#include "model.h"
#define M_COUNT 31
#define O_COUNT 1
#define R_COUNT 30
struct ddpStruct
{
   float oWeight[O_COUNT+1];
   float oAttainment[O_COUNT+1];
   float oAtRiskProp[O_COUNT+1];
   float rAPL[R_COUNT+1];
   float rLikelihood[R_COUNT+1];
   float mCost[M_COUNT+1];
   float roImpact[R_COUNT+1][O_COUNT+1];
   float mrEffect[M_COUNT+1][R_COUNT+1];
};
ddpStruct *ddpData;
void setupModel(void)
{
ddpData = (ddpStruct *) malloc(sizeof(ddpStruct));
  ddpData->mCost[1]=2000.00;
  ddpData->mCost[2]=750.00;
  ddpData->mCost[3]=75.00;
  ddpData->mCost[4]=25.00;
  ddpData->mCost[5]=750.00;
  ddpData->mCost[6]=0.00;
  ddpData->mCost[7]=0.00;
  ddpData->mCost[8]=25.00;
  ddpData->mCost[9]=2500.00;
  ddpData->mCost[10]=100.00;
  ddpData->mCost[11]=25.00;
  ddpData->mCost[12]=100.00;
  ddpData->mCost[13]=900.00;
  ddpData->mCost[14]=0.00;
  ddpData->mCost[15]=2600.00;
  ddpData->mCost[16]=900.00;
  ddpData->mCost[17]=0.00;
  ddpData->mCost[18]=200.00;
  ddpData->mCost[19]=750.00;
  ddpData->mCost[20]=0.00;
  ddpData->mCost[21]=2500.00;
  ddpData->mCost[22]=75.00;
  ddpData->mCost[23]=1250.00;
  ddpData->mCost[24]=25.00;
  ddpData->mCost[25]=0.00;
  ddpData->mCost[26]=10000.00;
  ddpData->mCost[27]=0.00;
  ddpData->mCost[28]=750.00;
  ddpData->mCost[29]=100.00;
  ddpData->mCost[30]=750.00;
  ddpData->mCost[31]=100.00;
  ddpData->rAPL[1]=1.00;
  ddpData->rAPL[2]=1.00;
  ddpData->rAPL[3]=1.00;
  ddpData->rAPL[4]=1.00;
  ddpData->rAPL[5]=1.00;
  ddpData->rAPL[6]=1.00;
  ddpData->rAPL[7]=1.00;
  ddpData->rAPL[8]=1.00;
  ddpData->rAPL[9]=1.00;
  ddpData->rAPL[10]=1.00;
  ddpData->rAPL[11]=1.00;
  ddpData->rAPL[12]=1.00;
  ddpData->rAPL[13]=1.00;
  ddpData->rAPL[14]=1.00;
  ddpData->rAPL[15]=1.00;
  ddpData->rAPL[16]=1.00;
  ddpData->rAPL[17]=1.00;
  ddpData->rAPL[18]=1.00;
  ddpData->rAPL[19]=1.00;
  ddpData->rAPL[20]=1.00;
  ddpData->rAPL[21]=1.00;
  ddpData->rAPL[22]=1.00;
  ddpData->rAPL[23]=1.00;
  ddpData->rAPL[24]=1.00;
  ddpData->rAPL[25]=1.00;
  ddpData->rAPL[26]=1.00;
  ddpData->rAPL[27]=1.00;
  ddpData->rAPL[28]=1.00;
  ddpData->rAPL[29]=1.00;
  ddpData->rAPL[30]=1.00;
  ddpData->oWeight[1]=1.00;
  ddpData->roImpact[1][1]=0.90;
  ddpData->roImpact[3][1]=0.10;
  ddpData->roImpact[4][1]=0.90;
  ddpData->roImpact[7][1]=0.90;
  ddpData->roImpact[8][1]=0.90;
  ddpData->roImpact[9][1]=0.70;
  ddpData->roImpact[11][1]=0.90;
  ddpData->roImpact[14][1]=0.90;
  ddpData->roImpact[15][1]=0.30;
  ddpData->roImpact[16][1]=0.90;
  ddpData->roImpact[18][1]=0.30;
  ddpData->roImpact[19][1]=0.90;
  ddpData->roImpact[20][1]=0.10;
  ddpData->roImpact[23][1]=0.30;
  ddpData->roImpact[26][1]=0.10;
  ddpData->roImpact[29][1]=0.70;
  ddpData->mrEffect[15][1]=1.00;
  ddpData->mrEffect[21][1]=0.70;
  ddpData->mrEffect[4][2]=1.00;
  ddpData->mrEffect[15][2]=0.90;
  ddpData->mrEffect[21][2]=0.70;
  ddpData->mrEffect[27][4]=0.80;
  ddpData->mrEffect[28][4]=0.90;
  ddpData->mrEffect[19][4]=1.00;
  ddpData->mrEffect[11][4]=0.10;
  ddpData->mrEffect[18][4]=1.00;
  ddpData->mrEffect[20][5]=0.40;
  ddpData->mrEffect[23][5]=0.30;
  ddpData->mrEffect[13][5]=0.40;
  ddpData->mrEffect[6][5]=0.20;
  ddpData->mrEffect[28][6]=1.00;
  ddpData->mrEffect[12][6]=0.30;
  ddpData->mrEffect[20][6]=0.90;
  ddpData->mrEffect[11][6]=0.80;
  ddpData->mrEffect[3][6]=0.10;
  ddpData->mrEffect[14][6]=0.70;
  ddpData->mrEffect[22][6]=0.90;
  ddpData->mrEffect[4][7]=1.00;
  ddpData->mrEffect[31][7]=0.10;
  ddpData->mrEffect[25][7]=1.00;
  ddpData->mrEffect[14][8]=0.70;
  ddpData->mrEffect[30][8]=0.30;
  ddpData->mrEffect[4][8]=0.10;
  ddpData->mrEffect[29][8]=1.00;
  ddpData->mrEffect[27][8]=1.00;
  ddpData->mrEffect[16][8]=1.00;
  ddpData->mrEffect[17][8]=0.20;
  ddpData->mrEffect[16][9]=1.00;
  ddpData->mrEffect[26][9]=1.00;
  ddpData->mrEffect[21][9]=0.40;
  ddpData->mrEffect[29][9]=0.10;
  ddpData->mrEffect[13][10]=0.80;
  ddpData->mrEffect[30][10]=0.80;
  ddpData->mrEffect[26][10]=0.20;
  ddpData->mrEffect[9][10]=0.90;
  ddpData->mrEffect[22][10]=0.10;
  ddpData->mrEffect[20][10]=1.00;
  ddpData->mrEffect[29][10]=0.70;
  ddpData->mrEffect[27][10]=0.30;
  ddpData->mrEffect[16][10]=0.10;
  ddpData->mrEffect[27][11]=1.00;
  ddpData->mrEffect[25][11]=0.70;
  ddpData->mrEffect[13][11]=0.90;
  ddpData->mrEffect[23][12]=0.90;
  ddpData->mrEffect[2][12]=0.80;
  ddpData->mrEffect[29][12]=0.20;
  ddpData->mrEffect[7][12]=0.90;
  ddpData->mrEffect[21][12]=1.00;
  ddpData->mrEffect[5][12]=0.20;
  ddpData->mrEffect[26][12]=1.00;
  ddpData->mrEffect[8][13]=0.10;
  ddpData->mrEffect[31][13]=0.80;
  ddpData->mrEffect[26][13]=0.90;
  ddpData->mrEffect[14][13]=0.70;
  ddpData->mrEffect[24][13]=0.40;
  ddpData->mrEffect[7][14]=0.10;
  ddpData->mrEffect[21][14]=0.20;
  ddpData->mrEffect[13][14]=0.10;
  ddpData->mrEffect[18][14]=0.10;
  ddpData->mrEffect[13][15]=0.90;
  ddpData->mrEffect[11][15]=0.30;
  ddpData->mrEffect[16][15]=1.00;
  ddpData->mrEffect[25][16]=0.90;
  ddpData->mrEffect[26][16]=1.00;
  ddpData->mrEffect[17][16]=1.00;
  ddpData->mrEffect[6][17]=0.80;
  ddpData->mrEffect[15][17]=0.40;
  ddpData->mrEffect[23][17]=1.00;
  ddpData->mrEffect[13][17]=0.70;
  ddpData->mrEffect[25][17]=0.80;
  ddpData->mrEffect[30][17]=1.00;
  ddpData->mrEffect[21][17]=1.00;
  ddpData->mrEffect[8][17]=1.00;
  ddpData->mrEffect[10][17]=0.10;
  ddpData->mrEffect[16][17]=0.90;
  ddpData->mrEffect[28][17]=0.20;
  ddpData->mrEffect[19][17]=0.30;
  ddpData->mrEffect[25][18]=0.90;
  ddpData->mrEffect[28][18]=0.70;
  ddpData->mrEffect[22][18]=0.10;
  ddpData->mrEffect[29][19]=0.80;
  ddpData->mrEffect[10][20]=0.20;
  ddpData->mrEffect[27][21]=0.40;
  ddpData->mrEffect[18][21]=0.70;
  ddpData->mrEffect[22][21]=0.20;
  ddpData->mrEffect[2][21]=0.90;
  ddpData->mrEffect[29][21]=0.70;
  ddpData->mrEffect[14][22]=0.10;
  ddpData->mrEffect[31][22]=0.90;
  ddpData->mrEffect[21][22]=0.80;
  ddpData->mrEffect[17][25]=1.00;
  ddpData->mrEffect[22][25]=0.40;
  ddpData->mrEffect[2][25]=0.80;
  ddpData->mrEffect[31][25]=1.00;
  ddpData->mrEffect[13][25]=0.70;
  ddpData->mrEffect[22][26]=0.20;
  ddpData->mrEffect[16][26]=0.10;
  ddpData->mrEffect[30][26]=0.90;
  ddpData->mrEffect[15][26]=0.20;
  ddpData->mrEffect[11][26]=0.40;
  ddpData->mrEffect[9][26]=0.20;
  ddpData->mrEffect[23][26]=0.30;
  ddpData->mrEffect[25][27]=0.20;
  ddpData->mrEffect[22][27]=1.00;
  ddpData->mrEffect[4][27]=0.20;
  ddpData->mrEffect[26][27]=0.70;
  ddpData->mrEffect[30][27]=0.40;
  ddpData->mrEffect[20][27]=0.10;
  ddpData->mrEffect[8][27]=0.90;
  ddpData->mrEffect[17][27]=0.20;
  ddpData->mrEffect[21][27]=1.00;
  ddpData->mrEffect[5][27]=0.30;
  ddpData->mrEffect[28][27]=1.00;
  ddpData->mrEffect[24][27]=0.40;
  ddpData->mrEffect[24][28]=1.00;
  ddpData->mrEffect[16][28]=0.40;
  ddpData->mrEffect[26][28]=1.00;
  ddpData->mrEffect[30][29]=0.40;
  ddpData->mrEffect[15][29]=0.20;
  ddpData->mrEffect[8][29]=0.40;
  ddpData->mrEffect[29][29]=0.40;
  ddpData->mrEffect[8][30]=1.00;
  ddpData->mrEffect[24][30]=0.30;
  ddpData->mrEffect[27][30]=1.00;
}
void model(float *cost, float *att, float m[])
{
	float costTotal, attTotal;
ddpData->rLikelihood[1] = ddpData->rAPL[1] * (1 - m[15] * ddpData->mrEffect[15][1])* (1 - m[21] * ddpData->mrEffect[21][1]);
ddpData->rLikelihood[2] = ddpData->rAPL[2] * (1 - m[4] * ddpData->mrEffect[4][2])* (1 - m[15] * ddpData->mrEffect[15][2])* (1 - m[21] * ddpData->mrEffect[21][2]);
ddpData->rLikelihood[3] = ddpData->rAPL[3] ;
ddpData->rLikelihood[4] = ddpData->rAPL[4] * (1 - m[11] * ddpData->mrEffect[11][4])* (1 - m[18] * ddpData->mrEffect[18][4])* (1 - m[19] * ddpData->mrEffect[19][4])* (1 - m[27] * ddpData->mrEffect[27][4])* (1 - m[28] * ddpData->mrEffect[28][4]);
ddpData->rLikelihood[5] = ddpData->rAPL[5] * (1 - m[6] * ddpData->mrEffect[6][5])* (1 - m[13] * ddpData->mrEffect[13][5])* (1 - m[20] * ddpData->mrEffect[20][5])* (1 - m[23] * ddpData->mrEffect[23][5]);
ddpData->rLikelihood[6] = ddpData->rAPL[6] * (1 - m[3] * ddpData->mrEffect[3][6])* (1 - m[11] * ddpData->mrEffect[11][6])* (1 - m[12] * ddpData->mrEffect[12][6])* (1 - m[14] * ddpData->mrEffect[14][6])* (1 - m[20] * ddpData->mrEffect[20][6])* (1 - m[22] * ddpData->mrEffect[22][6])* (1 - m[28] * ddpData->mrEffect[28][6]);
ddpData->rLikelihood[7] = ddpData->rAPL[7] * (1 - m[4] * ddpData->mrEffect[4][7])* (1 - m[25] * ddpData->mrEffect[25][7]);
ddpData->rLikelihood[8] = ddpData->rAPL[8] * (1 - m[4] * ddpData->mrEffect[4][8])* (1 - m[14] * ddpData->mrEffect[14][8])* (1 - m[16] * ddpData->mrEffect[16][8])* (1 - m[17] * ddpData->mrEffect[17][8])* (1 - m[27] * ddpData->mrEffect[27][8])* (1 - m[29] * ddpData->mrEffect[29][8]);
ddpData->rLikelihood[9] = ddpData->rAPL[9] * (1 - m[16] * ddpData->mrEffect[16][9])* (1 - m[21] * ddpData->mrEffect[21][9])* (1 - m[26] * ddpData->mrEffect[26][9])* (1 - m[29] * ddpData->mrEffect[29][9]);
ddpData->rLikelihood[10] = ddpData->rAPL[10] * (1 - m[9] * ddpData->mrEffect[9][10])* (1 - m[13] * ddpData->mrEffect[13][10])* (1 - m[16] * ddpData->mrEffect[16][10])* (1 - m[20] * ddpData->mrEffect[20][10])* (1 - m[22] * ddpData->mrEffect[22][10])* (1 - m[26] * ddpData->mrEffect[26][10])* (1 - m[27] * ddpData->mrEffect[27][10])* (1 - m[29] * ddpData->mrEffect[29][10]);
ddpData->rLikelihood[11] = ddpData->rAPL[11] * (1 - m[13] * ddpData->mrEffect[13][11])* (1 - m[25] * ddpData->mrEffect[25][11])* (1 - m[27] * ddpData->mrEffect[27][11]);
ddpData->rLikelihood[12] = ddpData->rAPL[12] * (1 - m[2] * ddpData->mrEffect[2][12])* (1 - m[5] * ddpData->mrEffect[5][12])* (1 - m[7] * ddpData->mrEffect[7][12])* (1 - m[21] * ddpData->mrEffect[21][12])* (1 - m[23] * ddpData->mrEffect[23][12])* (1 - m[26] * ddpData->mrEffect[26][12])* (1 - m[29] * ddpData->mrEffect[29][12]);
ddpData->rLikelihood[13] = ddpData->rAPL[13] * (1 - m[8] * ddpData->mrEffect[8][13])* (1 - m[14] * ddpData->mrEffect[14][13])* (1 - m[24] * ddpData->mrEffect[24][13])* (1 - m[26] * ddpData->mrEffect[26][13]);
ddpData->rLikelihood[14] = ddpData->rAPL[14] * (1 - m[7] * ddpData->mrEffect[7][14])* (1 - m[13] * ddpData->mrEffect[13][14])* (1 - m[18] * ddpData->mrEffect[18][14])* (1 - m[21] * ddpData->mrEffect[21][14]);
ddpData->rLikelihood[15] = ddpData->rAPL[15] * (1 - m[11] * ddpData->mrEffect[11][15])* (1 - m[13] * ddpData->mrEffect[13][15])* (1 - m[16] * ddpData->mrEffect[16][15]);
ddpData->rLikelihood[16] = ddpData->rAPL[16] * (1 - m[17] * ddpData->mrEffect[17][16])* (1 - m[25] * ddpData->mrEffect[25][16])* (1 - m[26] * ddpData->mrEffect[26][16]);
ddpData->rLikelihood[17] = ddpData->rAPL[17] * (1 - m[6] * ddpData->mrEffect[6][17])* (1 - m[8] * ddpData->mrEffect[8][17])* (1 - m[10] * ddpData->mrEffect[10][17])* (1 - m[13] * ddpData->mrEffect[13][17])* (1 - m[15] * ddpData->mrEffect[15][17])* (1 - m[16] * ddpData->mrEffect[16][17])* (1 - m[19] * ddpData->mrEffect[19][17])* (1 - m[21] * ddpData->mrEffect[21][17])* (1 - m[23] * ddpData->mrEffect[23][17])* (1 - m[25] * ddpData->mrEffect[25][17])* (1 - m[28] * ddpData->mrEffect[28][17]);
ddpData->rLikelihood[18] = ddpData->rAPL[18] * (1 - m[22] * ddpData->mrEffect[22][18])* (1 - m[25] * ddpData->mrEffect[25][18])* (1 - m[28] * ddpData->mrEffect[28][18]);
ddpData->rLikelihood[19] = ddpData->rAPL[19] * (1 - m[29] * ddpData->mrEffect[29][19]);
ddpData->rLikelihood[20] = ddpData->rAPL[20] * (1 - m[10] * ddpData->mrEffect[10][20]);
ddpData->rLikelihood[21] = ddpData->rAPL[21] * (1 - m[2] * ddpData->mrEffect[2][21])* (1 - m[18] * ddpData->mrEffect[18][21])* (1 - m[22] * ddpData->mrEffect[22][21])* (1 - m[27] * ddpData->mrEffect[27][21])* (1 - m[29] * ddpData->mrEffect[29][21]);
ddpData->rLikelihood[22] = ddpData->rAPL[22] * (1 - m[14] * ddpData->mrEffect[14][22])* (1 - m[21] * ddpData->mrEffect[21][22]);
ddpData->rLikelihood[23] = ddpData->rAPL[23] ;
ddpData->rLikelihood[24] = ddpData->rAPL[24] ;
ddpData->rLikelihood[25] = ddpData->rAPL[25] * (1 - m[2] * ddpData->mrEffect[2][25])* (1 - m[13] * ddpData->mrEffect[13][25])* (1 - m[17] * ddpData->mrEffect[17][25])* (1 - m[22] * ddpData->mrEffect[22][25]);
ddpData->rLikelihood[26] = ddpData->rAPL[26] * (1 - m[9] * ddpData->mrEffect[9][26])* (1 - m[11] * ddpData->mrEffect[11][26])* (1 - m[15] * ddpData->mrEffect[15][26])* (1 - m[16] * ddpData->mrEffect[16][26])* (1 - m[22] * ddpData->mrEffect[22][26])* (1 - m[23] * ddpData->mrEffect[23][26]);
ddpData->rLikelihood[27] = ddpData->rAPL[27] * (1 - m[4] * ddpData->mrEffect[4][27])* (1 - m[5] * ddpData->mrEffect[5][27])* (1 - m[8] * ddpData->mrEffect[8][27])* (1 - m[17] * ddpData->mrEffect[17][27])* (1 - m[20] * ddpData->mrEffect[20][27])* (1 - m[21] * ddpData->mrEffect[21][27])* (1 - m[22] * ddpData->mrEffect[22][27])* (1 - m[24] * ddpData->mrEffect[24][27])* (1 - m[25] * ddpData->mrEffect[25][27])* (1 - m[26] * ddpData->mrEffect[26][27])* (1 - m[28] * ddpData->mrEffect[28][27]);
ddpData->rLikelihood[28] = ddpData->rAPL[28] * (1 - m[16] * ddpData->mrEffect[16][28])* (1 - m[24] * ddpData->mrEffect[24][28])* (1 - m[26] * ddpData->mrEffect[26][28]);
ddpData->rLikelihood[29] = ddpData->rAPL[29] * (1 - m[8] * ddpData->mrEffect[8][29])* (1 - m[15] * ddpData->mrEffect[15][29])* (1 - m[29] * ddpData->mrEffect[29][29]);
attTotal = ddpData->oAttainment[1] + ddpData->oAttainment[2] + ddpData->oAttainment[3] + ddpData->oAttainment[4] + ddpData->oAttainment[5] + ddpData->oAttainment[6] + ddpData->oAttainment[7] + ddpData->oAttainment[8] + ddpData->oAttainment[9] + ddpData->oAttainment[10] + ddpData->oAttainment[11] + ddpData->oAttainment[12] + ddpData->oAttainment[13] + ddpData->oAttainment[14] + ddpData->oAttainment[15] + ddpData->oAttainment[16] + ddpData->oAttainment[17] + ddpData->oAttainment[18] + ddpData->oAttainment[19] + ddpData->oAttainment[20] + ddpData->oAttainment[21] + ddpData->oAttainment[22] + ddpData->oAttainment[23] + ddpData->oAttainment[24] + ddpData->oAttainment[25] + ddpData->oAttainment[26] + ddpData->oAttainment[27] + ddpData->oAttainment[28] + ddpData->oAttainment[29] ;
costTotal = m[1] * ddpData->mCost[1] + m[2] * ddpData->mCost[2] + m[3] * ddpData->mCost[3] + m[4] * ddpData->mCost[4] + m[5] * ddpData->mCost[5] + m[6] * ddpData->mCost[6] + m[7] * ddpData->mCost[7] + m[8] * ddpData->mCost[8] + m[9] * ddpData->mCost[9] + m[10] * ddpData->mCost[10] + m[11] * ddpData->mCost[11] + m[12] * ddpData->mCost[12] + m[13] * ddpData->mCost[13] + m[14] * ddpData->mCost[14] + m[15] * ddpData->mCost[15] + m[16] * ddpData->mCost[16] + m[17] * ddpData->mCost[17] + m[18] * ddpData->mCost[18] + m[19] * ddpData->mCost[19] + m[20] * ddpData->mCost[20] + m[21] * ddpData->mCost[21] + m[22] * ddpData->mCost[22] + m[23] * ddpData->mCost[23] + m[24] * ddpData->mCost[24] + m[25] * ddpData->mCost[25] + m[26] * ddpData->mCost[26] + m[27] * ddpData->mCost[27] + m[28] * ddpData->mCost[28] + m[29] * ddpData->mCost[29] ;
  *cost = costTotal;
	*att = attTotal;
}
