DECLARE_EXPORT string ProblemEarly::getDescription() const { assert(getDemand() && !getDemand()->getDelivery().empty()); Duration t(getDemand()->getDue() - getDemand()->getEarliestDelivery()->getDates().getEnd()); return string("Demand '") + getDemand()->getName() + "' planned " + string(t) + " before its due date"; }
//你要完成的功能总入口 void search_route(char *topo[5000], int edge_num, char *demand) { // DATA EXTRACTION: // Extract data from charater string array topo[][] to 2 dimensional array 'topoArray'. // string format: // linkID, sourceID, destinationID, cost (end of line is not \n!) int topoArray[edge_num][4]; int includingSet[MAX_INCLUDING_SET]; int cntPass; // record valid number of elements in includingSet. int sourceID = 0, destinationID = 0; memset(topoArray, 0, sizeof(topoArray)); // initialize to 0. memset(includingSet, 0, sizeof(includingSet)); getTopoArray(edge_num, topo, topoArray); getDemand(demand, includingSet, sourceID, destinationID, cntPass); //================================================================================ // CREAT ADJACENT LIST. EdgeNode* nodeArray[MAX_VERTEX_NUM]; // array containing the first element of each list. Index of the array is nodeID. memset(nodeArray,0,sizeof(nodeArray)); change2List(nodeArray,topoArray,edge_num); #ifdef ROUTEDEBUG testChange2List(nodeArray); #endif // DEBUG bool nodeArrayState[MAX_VERTEX_NUM]; memset(nodeArray,0,sizeof(nodeArrayState)); //priority_queue<int,vector<int>,greater<int> > pq; unsigned short result[] = {2, 6, 3};//示例中的一个解 for (int i = 0; i < 3; i++) record_result(result[i]); }
bool DAGraph::addLink(StarLink *link){ assert(link != NULL); int index = link->getIndex(); bool wasAdded = false; if (links_[index] == NULL) { // check if this link has already been added int nodeFromIndex = link->getNodeFromIndex(); int nodeToIndex = link->getNodeToIndex(); StarNode *nodeFrom = net_->getNodeWithLinks(nodeFromIndex); StarNode *nodeTo = net_->getNodeWithLinks(nodeToIndex); FPType demandTo = 0.0; if (nodes_[nodeToIndex] == NULL) { demandTo = mat_->getDemandByIndex(originIndex_, nodeToIndex); } else { demandTo = getDemand(nodeToIndex); } if ((nodeTo == NULL || !nodeTo->getIsZone() || demandTo > 0.0) && (nodeFrom == NULL || !nodeFrom->getIsZone() || nodeFrom->getIndex() == originIndex_)) { links_[index] = link; wasAdded = true; ++linkSize_; linkIndexes_.push_back(index); if (nodes_[nodeFromIndex] == NULL) { FPType demandFrom = mat_->getDemandByIndex(originIndex_, nodeFromIndex); DAGraphNode *newNode = new DAGraphNode(nodeFromIndex, demandFrom); nodes_[nodeFromIndex] = newNode; nodeIndexes_[nodeSize_] = nodeFromIndex; ++nodeSize_; } if (nodes_[nodeToIndex] == NULL) { DAGraphNode *newNode = new DAGraphNode(nodeToIndex, demandTo); nodes_[nodeToIndex] = newNode; nodeIndexes_[nodeSize_] = nodeToIndex; ++nodeSize_; } (nodes_[nodeToIndex])->incomeLinks.push_back(link); (nodes_[nodeFromIndex])->outLinks.push_back(link); } } return wasAdded; };