IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 关于21年数学建模国赛C题转运方案附件填数matlab解决方案 -> 正文阅读

[C++知识库]关于21年数学建模国赛C题转运方案附件填数matlab解决方案

??在今年全国数学建模的比赛C题答案处理当中,我发现了一个非常棘手的问题,就是在我们求出答案后,求得的结果和附件中Excel表格的填写方式不同,求解过程中我们所求的答案转运商选择是一个关于403*24周的矩阵,订货量也同样是这样的数量矩阵。
请添加图片描述
??其中第一个矩阵是订货量的矩阵,第二个是数只有0-8转运商矩阵,对于下列情况我们就很难实现直接填写,这么庞大的一个数据直接一个一个填写也是不可能的事情。请添加图片描述
??可以观察答案列表是y坐标是公司的编号,而右侧x轴答案每周当中包含了八个编号,所以我们要根据根据我们答案中的两个矩阵的具体含义编写一个算法,使得求出来的总矩阵是符合这样一个格式的,使得我们可以直接粘贴复制。

前置知识点(作者:星夜孤帆):
matlab中xlsread函数的用法

function [Answer]=exchange(openfile,rows)
D=xlsread(openfile, 1, rows);
C=xlsread(openfile, 2, rows);
Answer=[];
choose=1;
for i=1:4
    if C(i)==0
        choose=choose+8;
    else
        Answer(choose+C(i)-1)=D(i);
        choose=choose+8;
    end
end

??我们创建一个函数来制作最后的答案矩阵,这个函数是按订货行选择行来操作的,其中D分别为原订货单上每行的数组,C为选择转运商代码矩阵的每行的数组,answer是我们最后转化格式的答案,读出xlsx上表格的数据,然后进行后续操作

??i是对每列的操作即每个周,首选对应C中的当前周选择的转运商,如果没有选择则答案数组中填写8个0,如果选择了某一转运商的话就填写对应C在当前周中的值,即C(i)为当前公司选择的当前转运商,choose为当前在answer中填写的位置,所以choose+C(i)-1就是此公司选择转运商在答案中正确的位置,让后让数位置的choose继续选择下一个周的数值

下面是测试的数据:

1.订货商订货量:
请添加图片描述

2.当前周转运商选择矩阵:
请添加图片描述
前置知识点(作者:jk_101与漂洋过海的油条):
matlab中sprintf函数的用法
matlab中size函数的用法

处理的中代码:

for j=1:6
    k=j+1;
    string1='B';string2=':E';
    rows=sprintf('%s%d%s%d',string1,k,string2,k);
    truerows=exchange('text.xlsx',rows);
    [~,k]=size(truerows);
    answer(j,1:k)=truerows;
end

??j为有多少公司一行一行的让矩阵分开输入进去,利用sprintf调整xlsread的row行参数,使得它能够一行一行的进行读取,列如当j=1时候,xlsread参数为’B2:E2’会读取此行的数据通过size获取数组长度即此矩阵的列长,对最后的答案矩阵进行按行赋值。(j,1:k)即对此公司每个周选择的转运商订货量赋值,第j家公司1到:k周的选择

answer结果矩阵部分结果:
请添加图片描述
??最后结果,中可以看见这六家公司在第一个周的填写情况,分别选择了 5 4 3 6 1 2转运商的标准答案格式,可直接利用此答案复制粘贴到附件当中。

对与不存在的0值,可以有两种方法去掉:
1.Excel选择取值0点取空
2.利用python处理空值点,下期介绍

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:36:23  更:2021-10-15 11:38:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:04:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码