数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 12123|回复: 18

[原创]求最值问题

[复制链接]
发表于 2003-7-31 03:48:09 | 显示全部楼层 |阅读模式
有一个报童,每天去卖报他从报社购买N份,进价每份A元,如果卖一份可得B元,如果卖不掉而退回报社得C元,已知C>B>A>0,求该报童如何进报才能获得最大利益?
发表于 2003-7-31 03:52:52 | 显示全部楼层

言简意赅!
不知道兄台是否做过?
发表于 2003-7-31 05:35:05 | 显示全部楼层

一看我就觉得给我时间,我能有思路,虽然我不能马上做出来
发表于 2003-7-31 18:41:36 | 显示全部楼层

这是一个经典问题
发表于 2003-7-31 19:01:16 | 显示全部楼层

可以用计算机模拟
这个问题是讲计算机模拟的经典题目
发表于 2003-7-31 19:09:27 | 显示全部楼层

光当```
这个教材上面有啊```
姜启源《数学模型》把这个题目安排在概率模型里面
不过偶很想知道有没有其他思路
发表于 2003-7-31 20:34:12 | 显示全部楼层

有意思无什么内容!
发表于 2003-8-2 18:50:03 | 显示全部楼层
我认为这个题目比较简单
首先纠正一下那个题目,
那个应该是b>c>a>0
设该天卖掉x份,
则赢利=卖掉的纯利+退回的纯利
负责编程的可以试着用编程做一下,很简单的
发表于 2003-8-2 20:04:13 | 显示全部楼层
偶做过的一道题:

报童问题:
报童购进报纸价格B,零售价A,卖不完退回价C.A>B>C.
当B=0.15   A=0.20   C=0.12  需求量均值500份,均方差50份正态分布,求报童每天要购进多少报纸才能使平均收入最高?最高收入是多少?如何用计算机实现?

分析:
报童在具有最大利润的份数外,再多购入一份报纸或者少购入一份报纸,所获得的利润(a-b)的概率与卖不出去赔钱(b-c)的概率都相等.
假设需要的份数为f(x),则跟据概论关系,f(x)从0到n的积分应该等于(a-b)/(b-c).
取一定的精度,累计相加从0到n,取到最大值就可以了。

笔算结果:
购进515.5份时收入最高。
最高收入的数学期望是:24.535元。

计算机模拟程序:
/*
  Author: dcyu
  Date: 2003-06-01
  IDE:Visual C++6.0

*/
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>

#define M_PI 3.14159265359

using namespace std;

double _random(void)
{
int a;
double r;

a=rand()%32767;
r=(a+0.00001)/32767.00;

return r;

}

double _sta2(double mu,double sigma)
{
double r1,r2;

r1=_random();
r2=_random();

return sqrt(-2*log(r1))*cos(2*M_PI*r2)*sigma+mu ;

}

int main()
{
        const double A = 0.20, B = 0.15, C =0.12;
        const int cnt = 10000;
        int Num, iCount, buy, left, sale, index;
        double Money, Max;

        srand( (unsigned)time( NULL ) );
        Max = -1000000.0;
       
        for(buy = 450; buy < 550; buy++)
        {
                Money = 0.0;
                for(iCount = 0; iCount < cnt; iCount++)
                {
                        Num = (int)( _sta2(500, 50) );
                        sale = buy > Num ? Num : buy;
                        left = buy > Num ? buy - Num : 0;
                        Money = Money + sale * ( A - B) - left * (B - C);
                       
                }
                Money = Money / (cnt + 0.0);
                Max = Max > Money ? Max : Money;
                index = Max > Money ? index : buy;
       
        }
       
        cout<<"Optimum: "<<index<<endl;
        cout<<"Best sale: "<<Max<<endl;

        return 0;
}
发表于 2003-8-3 04:09:31 | 显示全部楼层
dcyu,偶编程不强,只会matlab,请问是否真有必要学习c++?
如果学的话,是否能指点一二
Thank you!
进过你的主页,确实很强
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-5-21 12:21 , Processed in 0.054761 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表