?? mfsolver.h
字號:
#pragma once
#include "BasicData.h"
#include "stdafx.h"
#include <vector>
#include <list>
#include "C:\MATLAB6p5\extern\include\engine.h"
// Material Flow Solver
class MFSolver
{
private:
std::vector<Dealer> dealerSet; // 所有零售商的信息
std::vector<RDC> RDCSet; // 所有地包商的信息
std::list<Path> pathSet; // 所有路徑
std::list<int> candidateSet; // 候選的零售商
std::list<int> addSet; // 需要點對點滿載運輸的零售商
// 所有可配置選項
double max_load; // 最大載重量
double min_load; // 最小載重量
double speed; // 卡車時速
double short_threshold; // 短程和長途路程的分界線
public:
bool isOK; // 是否正確讀取文件
public:
// 給定數據文件,構造物流求解器
MFSolver(const std::string &fn);
// 析構
~MFSolver();
// 獲取站點 d 到路徑 p 的起點的距離
double GetDistance(const Path &p, const Dealer &d) const;
// 獲取站點 d 到路徑 p 最后一站的距離
double GetLength(const Path &p, const Dealer &d) const;
// 獲取地包商的運費標準
void GetCostStandard(const Path&p, double &s_cpm, double &s_cph, double &l_cpm, double &l_cps, double &storage_cost, double &router_cost) const;
// 計算將站點 d 添加到路徑 p 后的總開銷
double GetTotalCost(const Path &p, const Dealer &d) const;
// 計算將站點 d 添加到路徑 p 中需要增加的開銷
double GetDiffCost(const Path &p, const Dealer &d) const;
// 計算目標函數值,參數是路徑 p 和待添加的站點 d。
double GetObjectiveValue(const Path &p, const Dealer &d) const;
// 一次擴展。
void ExpandPath(Engine *ep, std::list<int> &candidateSet, bool useTimes = false);
// 計算所有物流路線。
void ComputeFlow(Engine *ep);
// 在Matlab窗口中用動畫的形式畫出線段
void DrawPath(Engine *ep, const Path &p, const Dealer &d) const;
// 打印所有路徑
void PrintResult(Engine *ep, CString &OutputBuf) const;
// 打印地包商和零售商的信息
void PrintInfo(Engine *ep) const;
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -