⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfsolver.h

📁 研究多个dc对应多个dealer时得物流配送系统的优化问题
💻 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 + -