任务说明:

l  市场调查,转写设计需求报告

l  设计软件流程,编程软件

l  整理设计资料,撰写软件设计文档

l  编程宣传资料,进行产品展示

软件功能要求:

l  生产中期计划的跨度可为1年,计划时间单位为天、周或旬(十天)可选。考虑生产成本、产能、库存成本和资金占用成本等因素。

l  销售预测数据、产能数据应可以灵活输入,生产计划数据不仅使用数据表格形式输出,最好也能用直方图形式输出。

l  生产成本、库存成本和资金占用成本可以不修改程序进行设置。

l  可以扩充其它功能(如经济批量计算或设定、考虑批生产的准备调整费用)。

条件:

l  在微机上运行,不需要借助网络。

l  编程语言不限。

l  要能够独立安装。

问题分析:

目的是为该公司制定生产和库存计划,使总成本费用(包括解雇员工与新雇员工的费用及库存费用)最小。

考虑如下模型。

某公司生产某种商品,目前公司有员工X个,生产能力是每人每天/周/旬(10天)Y件。现在已经有库存Z件,考虑在最长接下来M个月里(M最大为12),商品将会全部售出(即库存量为0)。

根据市场调查,预测市场接下来的M个月里对该商品的需求量如表1所示:

表1  市场接下来的月份里对商品的需求量

月份

1

2

3

4

5

6

….

需求量(件)

A1

A2

A3

A4

A5

A6

….

要求根据这份预测数据,对接下来的M个月的生产和库存制定计划,使总费用(包括解雇员工与新雇员工的费用,以及库存费用)达到最小。公司确定接下来制定计划的目标如下:

(1)    正常生产和加班生产

正常生产每人每月P件;而加班生产每人不超过Q件,且每加班生产一件增加费用W美元。

(2)    解雇或新雇员工

每解雇一个员工需要支付H美元,每新雇用一个员工,需要支付G美元的培训费。

(3)    库存

多余的产品可以存放在仓库中,每月每件产品的存储费为V美元。

根据以上所给条件,制定一个以总费用最少为目标的生产库存计划,并且要求在M个月之后的月底无库存。

关于如何制定生产和库存计划,使公司的总费用为最小,是一个整数规划问题。因此我们可以根据已知的数据进行规划约束求解。总费用包括解雇员工与新雇员工的费用,以及库存费用两个方面,并且在解雇员工与新雇员工在每月人数流动问题上进行了优化假设,设定变量,再求变量的约束条件,最后给出了生产和库存计划的模型,并对该模型的结果进行了分析。

【本文原址出自http://blog.csdn.net/u012662688/article/details/51726262,转载请注明】

#include<cstdio>
#include<iomanip>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<map>
#include<vector>
#include<windows.h>
using namespace std;
#define M 15    //避免数组越界
#define clr(a,b) memset(a,b,sizeof a)
using namespace std;
int month;//计划跨度月份数量
int tot_req;//总共计划全程需要多少产品
int left_req;//剩下的生产计划还需要多少产品
int require[M];//计划每个月的需求量
int pay[M];//每个月公司的总支出
int tmp_req[M];//用来存储当前最小花费的每个月的需求量
//int now_worker;//现在已有员工数量
int worker_num[M];//每个月员工的数量
int up[M];//每个月员工数量上限
int down[M];//每个月员工数量下限
int work_ability;//员工每天、周、旬内生产产品的数量,0表示天,1表示周,2表示旬
int per_kind;//采用的是天/周/旬哪类单位
int wage;//每个员工每个月的工资
int wage_mon[M];//每个月员工工资总费用
int pro_num[M];//每个月普通生产的总量
int over_fee;//每个员工加班生产1件产品的费用
int over_num[M];//每个月加班生产的总量
int over_mon[M];//每个月加班的总费用
int over_max;//每个员工最多加班生产的产品数
int hire;//雇佣1个新员工的费用
int fire;//解雇1个员工的费用
int hfire[M];//每个月雇佣解雇的总费用
int store_fee;//每月每件多余产品存储价格
int store_mon[M];//每个月存储的总费用
int tot_fee=0;//总费用
int store_num[M];//每个月的库存数量
int ans=0x3f3f3f3f;//最少花费
int cal(){int i;tot_fee=0;for(i=0;i<month;i++){pay[i]=wage_mon[i]+over_mon[i]+store_mon[i]+hfire[i];tot_fee+=pay[i];//总费用等于每个月员工工资总额+加班费总额+存储费总额+解雇培训费用总额}return tot_fee;
}
int final_req[M];
int final_worker_num[M];
int final_wage_mon[M];
int final_pro_num[M];
int final_over_num[M];
int final_over_mon[M];
int final_store_mon[M];
int final_store_num[M];
int final_hfire[M];
int final_pay[M];void rec(){int i=0;for(i=0;i<month;i++){final_req[i]=tmp_req[i];final_worker_num[i]=worker_num[i];final_wage_mon[i]=wage_mon[i];final_pro_num[i]=pro_num[i];final_over_num[i]=over_num[i];final_over_mon[i]=over_mon[i];final_store_mon[i]=store_mon[i];final_store_num[i]=store_num[i];final_hfire[i]=hfire[i];final_pay[i]=pay[i];}
}void dfs(int now){//printf("here\n");if(now==month){int t_ans=cal();if(t_ans<ans){ans=t_ans;rec();}return;}int cur_require=require[now]-store_num[now];tmp_req[now]=cur_require;//printf("%d\n",cur_require);int cur_worker_num=worker_num[now];//保存当月初始员工数量up[now]=(int)ceil(1.0*cur_require/work_ability)*2;//员工上限down[now]= (int)ceil(1.0*cur_require/(work_ability+over_max));//printf("%d %d\n",up[now],down[now]);for(worker_num[now]=down[now];worker_num[now]<=up[now];worker_num[now]++){pro_num[now]=worker_num[now]*work_ability;if(cur_require>pro_num[now]){over_num[now]=cur_require-pro_num[now];over_mon[now]=over_num[now]*over_fee;}else{over_num[now]=0;over_mon[now]=0;}worker_num[now+1]=worker_num[now];//下个月员工起始数量等于这个月员工数量wage_mon[now]=worker_num[now]*wage;//该月员工总工资费用if(worker_num[now]>cur_worker_num)hfire[now]=(worker_num[now]-cur_worker_num)*hire;//雇佣员工计算else hfire[now]=(cur_worker_num-worker_num[now])*fire;//解雇员工计算store_num[now+1]=(pro_num[now]+over_num[now]-cur_require);//这个月的需求等于这个月的需求-上个月剩余的库存store_mon[now]=store_num[now+1]*store_fee;if(store_num[now+1]<0)printf("<0%d\n",store_num[now+1]);dfs(now+1);}
}int check(char *x){int sig=isdigit(x[0]);if(!sig){printf("警告!非法输入!请输入正整数!\n");Sleep(10000);exit(0);}else if(atoi(x)<0){printf("警告!非法输入!请输入正整数!\n");Sleep(10000);exit(0);}return 1;
}int main(){freopen("D:\\in.txt","r",stdin);scanf("%d",&month);//printf("%d\n",ans);int i,j,k;char str[5][10000];for(i=0;i<month;i++){scanf("%s",str[0]);check(str[0]);require[i]=atoi(str[0]);tot_req+=require[i];}for(i=0;i<5;i++){scanf("%s",str[i]);check(str[i]);}store_num[0]=atoi(str[0]);worker_num[0]=atoi(str[1]);per_kind=atoi(str[2]);wage=atoi(str[3]);work_ability=atoi(str[4]);if(per_kind==0)work_ability*=22;//假设双休,每月30天else if(per_kind==1)work_ability*=4;else if(per_kind==2)work_ability*=3;for(i=0;i<5;i++){scanf("%s",str[i]);check(str[i]);}over_fee=atoi(str[0]);over_max=atoi(str[1]);hire=atoi(str[2]);fire=atoi(str[3]);store_fee=atoi(str[4]);dfs(0);printf("每个月初始需求量\n");for(i=0;i<month;i++){printf("%d%c",require[i],i==month-1?'\n':'\t');}freopen("D:\\out.txt","w",stdout);printf("总需求量\n");printf("%d\n",tot_req);printf("总费用\n");printf("%d\n",ans);int ttot=0;printf("每个月总支出\n");for(i=0;i<month;i++){printf("%d%c",final_pay[i],i==month-1?'\n':'\t');}printf("每个月实际需求量\n");for(i=0;i<month;i++){printf("%d%c",final_req[i],i==month-1?'\n':'\t');}printf("每个月生产量\n");for(i=0;i<month;i++){printf("%d%c",final_pro_num[i],i==month-1?'\n':'\t');ttot+=final_pro_num[i];}printf("每个月加班生产量\n");for(i=0;i<month;i++){printf("%d%c",final_over_num[i],i==month-1?'\n':'\t');}printf("每个月员工量\n");for(i=0;i<month;i++){printf("%d%c",final_worker_num[i],i==month-1?'\n':'\t');}printf("每个月解雇培训费\n");for(i=0;i<month;i++){printf("%d%c",final_hfire[i],i==month-1?'\n':'\t');}printf("每个月存储费\n");for(i=0;i<month;i++){printf("%d%c",final_store_mon[i],i==month-1?'\n':'\t');}printf("每个月员工工资\n");for(i=0;i<month;i++){printf("%d%c",final_wage_mon[i],i==month-1?'\n':'\t');}fclose(stdout);return 0;
}

研制一个生产计划编制的软件相关推荐

  1. matlab生产计划问题,用MATLAB解决综合生产计划编制过程中的优化问题

    第 18卷第 3期 2005年 6月 常 州 工 学 院 学 报 Journal of Changzhou Institute of Technology Vol. 18 No. 3 Jun. 200 ...

  2. SAP PP配置详解之五:生产计划编制

    1.计划策略 功能说明 计划策略包含了产品生产.采购的方法,采用何用方式进行计划.调度.制造和采购.计划策略由计划独立需求类型及客户需求类型共同控制消耗过程. 配置路径 IMG>生产>生产 ...

  3. aps - (Advanced Planning And Scheduling) 高级生产计划排程软件的架构和设计

    aps - (Advanced Planning And Scheduling) 高级生产计划排程软件的架构和设计 3 主资源和副资源 主资源简单的说就是某道工序在什么机器或生产线上生产,一般来说,一 ...

  4. 手机销量下降,企业该如何调整使用APS计划排产软件生产计划?

    据报道称:上半年,国内市场手机总体出货量累计1.36亿部,同比下降21.7%.2022年1-6月,智能手机出货量1.34亿部,同比下降21.7%,占同期手机出货量的98.2%.国产品牌的数据要更严重: ...

  5. 多品种、小批量生产计划的编制方法与质量控制措施

    当下中国制造业多集中在多品种小批量生产企业,这种生产方式开始占有越来越重要的地位. 随着市场竞争的加剧,现代企业所处的市场环境发生了深刻的变革,企业竞争越来越强调基于客户需求的竞争.因此,企业的生产方 ...

  6. SAP中重复制造生产计划编制——生产版本

    在重复制造生产计划编制流程中,最开始需要根据计划成品的计划独立需求,由MRP来跑出计划订单的建议,然后在MF50中,针对系统己经生成的计划订单建议进行调整.这种调整包含,时间,数量以及生产版本(生产线 ...

  7. 基于SSM生产计划排程管理系统

    项目下载地址:https://download.csdn.net/download/qq_36388734/11390210 ** 欢迎下载 ** 第1章作业车间调度问题 1.1问题的描述 作业车间调 ...

  8. 基于SSM的生产计划排程管理系统

    项目下载地址:https://download.csdn.net/download/qq_36388734/11390210 ** 欢迎下载 ** 第1章作业车间调度问题 1.1问题的描述 作业车间调 ...

  9. 生产计划为何难实施?

    01 为什么战略管理在中小企业没什么大作用? 因为工厂变化太快,企业市场话语权太小,必须跟着市场走,所以中小企业的制胜之道不是布局.战略,而是快速应变! 大学里讲的计划模式完全靠计算,这在中小企业行不 ...

最新文章

  1. Flash Player漏洞利用Exploiting Flash Reliably
  2. linux 下的服务
  3. Metasploit 之 webshell 提权
  4. 006_P名称空间的属性注入
  5. Nacos 快速开始、版本选择、预备环境准备、下载源码或者安装包、从 Github 上下载源码方式、下载编译后压缩包方式、配置nacos、配置集群、启动服务器、服务注册发现和配置管理、关闭服务器
  6. python自动发微信-python实现微信每日一句自动发送给喜欢的人
  7. 打开数据库_数据库客户端navicat遇到问题怎么办?
  8. opencv16-Sobel算子
  9. [转]DES加密 java与.net可以相互加密解密两种方法
  10. 真正的商用量子电脑!IBM推 Q System One
  11. Java虚拟机专题之类加载机制
  12. 柔性太阳能电池pdf_CIS太阳能电池.pdf
  13. 安装ADB Interface驱动
  14. 如何在北京购车外地上牌
  15. 行人重识别论文阅读11-BDTR 红外光行人重识别
  16. php里style标签,style标签怎么用?
  17. linux统计文本每列的最大字符,Linux 文本处理,文本工具,查看,分析,统计文本文件,grep,正则表达式...
  18. TI PFC+LLC解决方案在工业电源中的应用-电子研习社
  19. 既有住宅加装电梯数学建模问题
  20. 【NDN实验】ndnSIM: NDN simulator for NS-3 全文翻译

热门文章

  1. 双边分支网络:兼顾特征和分类的长尾问题解决方案
  2. 清华大学人工智能研究院开源“天授”强化学习平台
  3. 赠书福利 | 首本理论和实战结合的深度学习书籍
  4. 每周一起读 × 招募 | ACL 2019:基于知识增强的语言表示模型
  5. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task2:数据扩增方法
  6. adc采样时间_ADC采样原理
  7. 手把手带你领略双十一背后的核心组件Sentinel之流控规则
  8. BugKuCTF 加密 聪明的小羊
  9. Lost Numbers
  10. Connections between cities