/*****************************************************************/ /* */ /* Program to Solve the */ /* Multi-level Network Optimization Problem */ /* */ /* Heuristic Routine to Solve Problem (M) */ /* */ /* Author: Frederico R. B. da Cruz */ /* Department of Industrial Engineering and */ /* Operations Research */ /* University of Massachusetts at Amherst */ /* USA */ /* */ /* E-mail: fcruz@sml1.ecs.umass.edu */ /* */ /* Version: 3.00 */ /* */ /* Date: May/98 */ /* */ /*****************************************************************/ float Solve_M(int n_Nodes, int n_Levels, ListArcPtrType *AdjaNodInd, ListNodPtrType *RootNodLev); float Solve_M(int n_Nodes, int n_Levels, ListArcPtrType *AdjaNodInd, ListNodPtrType *RootNodLev) { int i, l; float Solution; ListArcPtrType ListArcPtr; ListNodPtrType ListNodPtr; Solution = 0; for ( i = 0; i < n_Nodes; i++ ) { ListArcPtr = AdjaNodInd[i]; while ( ListArcPtr != NULL ) { for ( l = 0; l < n_Levels; l++ ) { if ( ListArcPtr->APtr[l]->xij > ZERO ) Solution += ListArcPtr->APtr[l]->cij * ListArcPtr->APtr[l]->xij + ListArcPtr->APtr[l]->fij; } ListArcPtr = ListArcPtr->Next; } } for ( l = 0; l < n_Levels; l++ ) { ListNodPtr = RootNodLev[l]; while ( ListNodPtr != NULL ) { if ( ListNodPtr->NPtr->TransFlow > ZERO ) Solution += ListNodPtr->NPtr->fi; ListNodPtr = ListNodPtr->Next; } } /* fprintf(OUTFILE, "\nSolution M = %f\n", Solution); */ return(Solution); }