【2023年全国数理モデリングコンテスト】質問Cコードと技術文書の共有

最初の質問コード

コード1_Q1_1.m

clc
clear
D=xlsread('合成表1','合成表1、2');
kind_u=unique(D(:,6));
kind_num=size(kind_u,1);%记录蔬菜的种类数
table=zeros(365*4,6);
for k=1:size(kind_u,1) %遍历每一种菜
    temp_day=D(1,3);
    temp=1;
    for i=1:size(D,1) %遍历每一行
        if D(i,6)==kind_u(k,1) %如果是要找的那种菜
            if D(i,3)~=temp_day %如果到第二天了
                temp=temp+1;
                temp_day=D(i,3);
            end
            table(temp,k)=table(temp,k)+D(i,7);
        end
    end
end


%% 箱线图
d1=table(table(:,1)~=0,1);
d2=table(table(:,2)~=0,2);
d3=table(table(:,3)~=0,3);
d4=table(table(:,4)~=0,4);
d5=table(table(:,5)~=0,5);
d6=table(table(:,6)~=0,6);
data=[d1;d2;d3;d4;d5;d6];
g1 = repmat({
    
    '花叶类'},size(d1,1),1);
g2 = repmat({
    
    '花菜类'},size(d2,1),1);
g3 = repmat({
    
    '水生根茎类'},size(d3,1),1);
g4 = repmat({
    
    '茄类'},size(d4,1),1);
g5 = repmat({
    
    '辣椒类'},size(d5,1),1);
g6 = repmat({
    
    '食用菌'},size(d6,1),1);
g = [g1; g2; g3; g4; g5; g6];
h=boxplot(data,g,'Colors','k','Symbol','o');
% hTitle = title('Miles per Gallon by Vehicle Origin');
hXLabel = xlabel('蔬菜分类');
hYLabel = ylabel('单日销量');
% 线宽
set(h,'LineWidth',1.5)
% 坐标轴美化
set(gca, 'Box', 'on', ...                                % 边框
'LineWidth', 1,...                                       % 线宽
'XGrid', 'off', 'YGrid', 'off', ...                      % 网格
'TickDir', 'in', 'TickLength', [.015 .015], ...          % 刻度
'XMinorTick', 'off', 'YMinorTick', 'off', ...            % 小刻度
'XColor', [.1 .1 .1],  'YColor', [.1 .1 .1])             % 坐标轴颜色
% 字体和字号
set(gca, 'FontName', '宋体')
% set([hXLabel, hYLabel], 'FontName', 'Times New Roman')
set(gca, 'FontSize', 12)
set([hXLabel, hYLabel], 'FontSize', 15)
% set(hTitle, 'FontSize', 11, 'FontWeight' , 'bold')
% 背景颜色
set(gcf,'Color',[1 1 1])

%箱子颜色
color=[0/255,96/255,115/255;
    9/255,147/255,150/255;
    145/255,211/255,192/255;
    235/255,215/255,165/255;
    238/255,155/255,0/255;
    204/255,102/255,2/255;
    188/255,62/255,3/255;
    174/255,32/255,18/255;
    155/255,34/255,39/255];
h = findobj(gca,'Tag','Box');
for j=1:length(h)
   patch(get(h(j),'XData'),get(h(j),'YData'),color(j,:),'FaceAlpha',.5);
end
% c = get(gca, 'Children'); %获取子对象(6个色块和点)
% %图注
% % hleg1 = legend(c(1:2:5,:), 'MSE','MAE','MAPE');
% % 绘制参照线
% Y=h(1,1).YData;
% X=h(1,1).XData;
% Y=unique(Y);
% X=unique(X);
% for i=1:size(Y,2)
%     line([0,X(1)],[Y(i),Y(i)],'Color','red','LineStyle','--','LineWidth',0.8);
%     hold on
% end
% c = get(gca, 'Children'); %获取子对象(6个色块和点)
% Ymax=unique(c(11,1).Children(33,1).YData);
% Xmax=min(c(11,1).Children(33,1).XData);
% Ymean=unique(c(11,1).Children(9,1).YData);
% Ymin=unique(c(11,1).Children(25,1).YData);
% line([0,X(1)],[Ymean,Ymean],'Color','red','LineStyle','--','LineWidth',0.8)
% hold on
% line([0,Xmax],[Ymax,Ymax],'Color','red','LineStyle','--','LineWidth',0.8)
% hold on
% line([0,Xmax],[Ymin,Ymin],'Color','red','LineStyle','--','LineWidth',0.8)
% hold on

コード1_Q1_2.m

clc
clear
D=xlsread('合成表1','合成表1、2');
kind_u=unique(D(:,6));
kind_num=size(kind_u,1);%记录蔬菜的种类数
table=zeros(12,6);
for k=1:size(kind_u,1) %遍历每一种菜
    for m=1:12 %遍历每一个月
        for i=1:size(D,1) %遍历每一行
            if D(i,6)==kind_u(k,1) %如果是要找的那种菜
                if D(i,2)==m
                    table(m,k)=table(m,k)+D(i,3);
                end
            end
        end
    end
end

d1=table(table(:,1)~=0,1);
d2=table(table(:,2)~=0,2);
d3=table(table(:,3)~=0,3);
d4=table(table(:,4)~=0,4);
d5=table(table(:,5)~=0,5);
d6=table(table(:,6)~=0,6);
data=[d1;d2;d3;d4;d5;d6];
g1 = repmat({
    
    '花叶类'},size(d1,1),1);
g2 = repmat({
    
    '花菜类'},size(d2,1),1);
g3 = repmat({
    
    '水生根茎类'},size(d3,1),1);
g4 = repmat({
    
    '茄类'},size(d4,1),1);
g5 = repmat({
    
    '辣椒类'},size(d5,1),1);
g6 = repmat({
    
    '食用菌'},size(d6,1),1);
g = [g1; g2; g3; g4; g5; g6];
plot()
% hTitle = title('Miles per Gallon by Vehicle Origin');
hXLabel = xlabel('月份');
hYLabel = ylabel('月销量');

set(gca, 'FontName', '宋体')
% set([hXLabel, hYLabel], 'FontName', 'Times New Roman')
set(gca, 'FontSize', 12)
set([hXLabel, hYLabel], 'FontSize', 15)
% set(hTitle, 'FontSize', 11, 'FontWeight' , 'bold')
% 背景颜色
set(gcf,'Color',[1 1 1])
%箱子颜色
color=[0/255,96/255,115/255;
    9/255,147/255,150/255;
    145/255,211/255,192/255;
    235/255,215/255,165/255;
    238/255,155/255,0/255;
    204/255,102/255,2/255;
    188/255,62/255,3/255;
    174/255,32/255,18/255;
    155/255,34/255,39/255];

コード1_Q1_3.m

clc
clear
D=xlsread('合成表1','合成表1、2');
kind_u=unique(D(:,6));
kind_num=size(kind_u,1);%记录蔬菜的种类数
table=zeros(12,6);
for k=1:size(kind_u,1) %遍历每一种菜
    for m=1:12 %遍历每一个月
        for i=1:size(D,1) %遍历每一行
            if D(i,6)==kind_u(k,1) %如果是要找的那种菜
                if D(i,2)==m %如果是要找的那个月
                    if D(i,9)==2
                        table(m,k)=table(m,k)+1;
                    end
                end
            end
        end
    end
end

d1=table(table(:,1)~=0,1);
d2=table(table(:,2)~=0,2);
d3=table(table(:,3)~=0,3);
d4=table(table(:,4)~=0,4);
d5=table(table(:,5)~=0,5);
d6=table(table(:,6)~=0,6);
data=[d1;d2;d3;d4;d5;d6];
g1 = repmat({
    
    '花叶类'},size(d1,1),1);
g2 = repmat({
    
    '花菜类'},size(d2,1),1);
g3 = repmat({
    
    '水生根茎类'},size(d3,1),1);
g4 = repmat({
    
    '茄类'},size(d4,1),1);
g5 = repmat({
    
    '辣椒类'},size(d5,1),1);
g6 = repmat({
    
    '食用菌'},size(d6,1),1);
g = [g1; g2; g3; g4; g5; g6];
plot()
% hTitle = title('Miles per Gallon by Vehicle Origin');
hXLabel = xlabel('月份');
hYLabel = ylabel('月销量');

set(gca, 'FontName', '宋体')
% set([hXLabel, hYLabel], 'FontName', 'Times New Roman')
set(gca, 'FontSize', 12)
set([hXLabel, hYLabel], 'FontSize', 15)
% set(hTitle, 'FontSize', 11, 'FontWeight' , 'bold')
% 背景颜色
set(gcf,'Color',[1 1 1])
%箱子颜色
color=[0/255,96/255,115/255;
    9/255,147/255,150/255;
    145/255,211/255,192/255;
    235/255,215/255,165/255;
    238/255,155/255,0/255;
    204/255,102/255,2/255;
    188/255,62/255,3/255;
    174/255,32/255,18/255;
    155/255,34/255,39/255];

実験結果

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します

技術文書

問題分析

質問 1 では、さまざまな野菜カテゴリーと単品販売の流通パターンと相互関係を分析する必要があります。この問題は 3 つの角度から分析できます。1)野菜の種類ごとの販売量の分布と野菜の種類と販売量の関係、2)野菜の種類ごとの販売量の月別分布、野菜の種類と販売量の相関関係、3)各種野菜の販売時期の分布、販売時期と返品金額の相関。各角度について、最初に箱ひげ図と折れ線グラフを使用して特殊診断の分布を表現し、次に分布テストを実行し、最後に対応する相関分析手法を選択して計算します。

質問2では、まず野菜の総販売量と原価プラス価格の関係を分析する必要がありますが、要は総販売量と原価利益率の関係を求めることになります。この問題に対して、統合フィッティング モデルを確立して、野菜品目ごとに多項式関数をフィッティングし、販売量とコスト利益率の関係を特徴付けます。第二に、翌週の各野菜カテゴリーの一日の総補充量と価格戦略を与える必要があり、販売量と原価利益率の関係モデルを取得した後、原価利益率を通じて販売量を計算することができます。そこで、スーパーマーケットの利益と各野菜品目の原価利益率を決定変数として最大化することを目標として、線形計画法モデル(LP)を構築した。このうち最大販売制約については、ARIMA アルゴリズムに基づいて野菜需要を予測し、その予測値を最大販売制約とする。そして、遺伝的アルゴリズム (GA) に基づいて LP モデルを解きます。

問3については、基本的に問2を踏まえて販売スペースと最低陳列個数の制限を追加するものです。このため、質問 2 の LP に基づいて、対応する制限が調整され、販売スペースと最小陳列数量が制限されます。解決フェーズでは、販売スペースの制約に適応するために 0 エンコーディングのメカニズムが設計され、染色体の正当性を維持するために解決不可能な修復メカニズムが設計されます。

質問 4 については、関連データの収集を設計する必要があります。この疑問は「会員割引の有無」「各商品の最適な保管期間」「返品理由」の観点から分析することができます。

仮説

1. 市場価格は需要と供給の関係によって完全に決定され、政策制御の影響を受けないとし、価格の上限と下限は制限されません。
2.突発的な不可抗力災害による食料買い占め等の事態が無いことを前提としています。
3. 同種食器の供給品質が安定しています。
4. 損失率は近い将来大きく変動しない。
5. 食器の卸売価格は大きく変動しません。

記号の説明

ここに画像の説明を挿入します

1 最初の質問

1.1 流通テストモデルの確立

相関テストを実行する前に、まずデータの分布をテストする必要があります。コルモゴロフ-スミルノフ分布検定は大規模サンプルのテストによく使用され、シャピロ-ウィルク分布検定は小規模サンプルのテストによく使用されます。
コルモゴロフ-スミルノフ分布検定モデルは次のように説明できます:
帰無仮説 (): データは正規分布に従う;
対立仮説 (): データは正規分布に従わない。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

1.2 相関モデルの確立

ここに画像の説明を挿入します
ここに画像の説明を挿入します

1.3 各種野菜の販売量分布と相関関係

ここに画像の説明を挿入します

最後に書きます

以下は、姉自身がコンパイルした完全なコードと実行結果です。必要な学生は相談してください~

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/Magnolia_He/article/details/132780966