1、决策支持系统作业最终决策支持系统导论期末作业 姓名:齐鹏 学号: 日期:2012年7月9日1、设某企业生产多种最终产品Y=(yij),各种产品的单价为Pi,它们的投入产出直接消耗系数为A=(aij),企业的资源(煤、电力、劳力)的约束方程为BXh(“”表示),其中,B=(bij)是资源消耗系数矩阵,X=(xi)是企业总产品向量,h是资源约束向量。为使企业净产值最大,其目标方程S=Piyimax,试安排生产计划(求总产品X和最终产品Y)。请设计该企业的生产计划决策支持系统,画出DSS运行结构图,并对总控程序、模型程序、数据库进行结构和功能说明。提示:该决策支持系统需要利用3个模型(投入产出模型、
2、线性规划模型和报表模型(打印投入产出表)和两个数据库(投入产出数据库和线性规划数据库)。在DSS总控程序中要详细说明何时调用哪个模型运行,何时存取哪个数据库中的数据,何时进行数据计算。该DSS需要两次调用投入产出模型:一次计算中间结果,一次计算最后结果。请注意,模型程序应该是一个标准程序,在一定的参数控制下,可得到中间结果,也可得到最终结果。该模型程序既适合于该问题的DSS,也适合于其他问题的DSS,不能是一个专用的模型程序。(40分)1、模型 1.投入产出模型:可以确定 与的关系,。 2.线性规划模型:根据约束方程BXh与目标方程S=Piyimax可以计算出最优的yi。 3.报表模型:根据最
3、终产品Y=(yij),X=(xi)是企业总产品自动生成报表。2、数据库 1.投入产出数据库字段名数据类型长度是否可为空int8是int8是int8是int8是int8是int16是int16是int16是int16是int16是float16是float16是float16是float16是float16是 2.线性规划数据库字段名数据类型长度是否可为空float8是float8是float8是float8是float8是h1float16是h2float16是h3float16是float16是hifloat16是float16是float16是float16是float16是float16
4、是3、DSS运行结构图2、考虑去卡拉OK厅唱歌的时候,是否要等待包间的问题。规定如下属性可用于描述该领域内的实例:(1)Others(其他地点):附近是否有其他卡拉OK厅;(2)WaitCond(等候条件):供顾客等候的地方是否舒适;(3)Weekend(周末):若是周六或周日,则为真;(4)Conssumers(顾客):店中有多少顾客(值为None(没人),Some(一些)或Full(满座);(5)Price(价格):价格范围(值为Cheep(便宜),Middle(中等),Expensive(较贵);(6)Raining(下雨):外面是否在下雨;(7)Reservation(预约):是否预约
5、过;(8)WaitEstimate(等候时间估计):估计的等候时间(值为010,1030,3060,60,单位为分钟)。训练集见表:实例 属性目标WillWaitOthersWCondWEndConsPriceRainResWEstX1Yes1No0No0Some0EX-1No0Yes10-10 1YesX2Yes1No0No0Full11CH1No0No030-60 -1NoX3No0Yes1No0Some0CH1No0No00-10 1YesX4Yes1No0Yes1Full1CH1Yes1No010-30 0YesX5Yes1No0Yes1Full1EX-1No0Yes160 -2NoX
6、6No0Yes1No0Some0MID0Yes1Yes10-10 1YesX7No0Yes1No0None-1CH1Yes1No00-10 1NoX8No0No0No0Some0MID0Yes1Yes10-10 1YesX9No0Yes1Yes1Full1CH1Yes1No060 -2NoX10Yes1Yes1Yes1Full1EX-1No0Yes110-30 0NoX11No0No0No0None-1CH1No0No00-10 1NoX12Yes1Yes1Yes1Full1CH1No0No030-60 -1Yes要求:建立BP神经网络模型,并进行容错性分析。(30分)一、 为训练集赋值 属性
7、值名属性1值属性2值属性3值属性4值OthersAYes1No0WCondBYes1No0WEndCYes1No0ConsDFull1Some0None-1PriceECheap1Middle0Expensive-1RainFYes1No0ResGYes1No0WEstH0-10110-30030-60-160-2WillWaitIYes1No0在Matlab的命令窗口中运行如下代码:p=1 1 0 1 1 0 0 0 0 1 0 1; 0 0 1 0 0 1 1 0 1 1 0 1; 0 0 0 1 1 0 0 0 1 1 0 1; 0 1 0 1 1 0 -1 0 1 1 -1 1; -1
8、 1 1 1 -1 0 1 0 1 -1 1 1; 0 0 0 1 0 1 1 1 1 0 0 0; 1 0 0 0 1 1 0 1 0 1 0 0; 1 -1 1 0 -2 1 1 1 -2 0 1 -1;t=1 0 1 1 0 1 0 1 0 0 0 1;net=newff(minmax(p),15 1,tansig,purelin,traincgb);=5;=300;=0.000001;net,tr=train(net,p,t);得到如下曲线图:容错性分析:实例 输入输出WillWait结果OthersWCondWEndConsPriceRainResWEstX11000-101 11等
9、X21001100 -10不等X30100100 11等X41011110 01等X51011-101 -20不等X60100011 11等X7010-1110 10不等X80000011 11等X90111110 -20不等X101111-101 00不等X11000-1100 10不等X121111100 -11等完成机器学习后,对样本进行改变条件输入,有如下3种情况:(1)缺1个条件的情况(2)缺2个条件的情况(3)介于中间的情况(1)实例 输入输出WillWait(1)输出WillWait(0)结果OthsWConWEnConPriceRaiResWEstX11100-101 10.8
10、4560.1526等(1)X21011100 -10.07230.9281不等(0)X30101100 10.86480.1352等(1)X41001110 00.86340.1366等(1)X51111-101 -20.23140.7686不等(0)X60110001 10.91250.0875等(1)X7011-1010 10.34100.6595不等(0)X80110011 10.97140.0286等(1)X90000110 -20.49280.5012不一定X101100101 00.56810.4319不一定X11111-1100 10.41230.5877不一定X12110000
11、0 -10.64280.3572不一定3、编制旅行商路径优化问题的遗传算法程序,并计算一个实例。(30分)一,问题描述:所谓旅行商问题,即给定几个城市,旅行商从中选择一条最短的路线,使他能够访问到每个城市一次,然后返回起点。二,运行结果:三、代码实现 下面是程序的主要核心代码:using System;using ;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using ;using System.Diagnostics;namespace TSPGA public p
12、artial class Form1 : Form private World _world = new World(); public Form1() InitializeComponent(); private void pictureBox1_MouseUp(object sender, MouseEventArgs e) Point point = new Point(e.X / (pictureBox1.Width / 200), e.Y / (pictureBox1.Height / 200); if (e.Button = MouseButtons.Left) _world.Ad
13、dPointNeedToVisit(point); cityNum.Text = _(); else _world.StartPoint = point; ReDrawPB(); private void Reset_Click(object sender, EventArgs e) _world.Reset(); ReDrawPB(); private void ReDrawPB() Bitmap bm = new Bitmap(pictureBox1.Width, pictureBox1.Height); using (Graphics g = Graphics.FromImage(bm)
14、 int x, y, radix; foreach (Point point in _world.PointsNeedToVisit) x = point.X * (pictureBox1.Width / 200); y = point.Y * (pictureBox1.Height / 200); radix = 5; g.DrawEllipse(Pens.DarkCyan, new Rectangle(x - radix, y - radix, 2 * radix, 2 * radix); if (_world.StartPoint != Point.Empty) x = _world.S
15、tartPoint.X * (pictureBox1.Width / 200); y = _world.StartPoint.Y * (pictureBox1.Height / 200); radix = 5; g.DrawEllipse(Pens.Red, new Rectangle(x - radix, y - radix, 2 * radix, 2 * radix); pictureBox1.Image = bm; private void pictureBox1_MouseMove(object sender, MouseEventArgs e) Point point = new P
16、oint(e.X / (pictureBox1.Width / 200), e.Y / (pictureBox1.Height / 200); infos1.Text = point.ToString(); private void Start_Click(object sender, EventArgs e) _world.Population = Int32.Parse(population.Text); _world.Generation = Int32.Parse(generation.Text); _world.CrossOverRate = Double.Parse(crossOv
17、erRate.Text); _world.MutationRate = Double.Parse(mutationRate.Text); drawVisitRoute(); /_world.Reset(); private void drawVisitRoute() ReDrawPB(); Bitmap bm = (Bitmap(); using (Graphics g = Graphics.FromImage(bm) Point startPoint = _world.StartPoint; if (startPoint = Point.Empty) MessageBox.Show(You
18、must define a start point.); return; Point pointsNeedToVisit = _world.PointsNeedToVisit; Stopwatch sw = new Stopwatch(); sw.Start(); int visitRoute = _world.GetVisitRoute(); sw.Stop(); infos3.Text = Used: + sw.ElapsedMilliseconds + ms.; List visitPoints = new List(); visitPoints.Add(startPoint); for
19、each (int index in visitRoute) visitPoints.Add(pointsNeedToVisitindex); int td = 0; Point tp = visitPoints0; for (int i = 1; i visitPoints.Count; i+) td += GetManhattanDis(tp, visitPointsi); tp = visitPointsi; totalDis.Text = Total Distace: + td; for (int i = 0; i visitPoints.Count; i+) Point p = ne
20、w Point(); p.X = visitPointsi.X * pictureBox1.Width / 200; p.Y = visitPointsi.Y * pictureBox1.Height / 200; visitPointsi = p; g.DrawLines(Pens.SeaShell, visitPoints.ToArray(); pictureBox1.Image = bm; private void random_Click(object sender, EventArgs e) _world.Reset(); Random rnd = new Random(); int
21、 c = Int32.Parse(cityNum.Text); _world.StartPoint = new Point(rnd.Next(0, 200), rnd.Next(0, 200); for (int i = 0; i c; i+) _world.AddPointNeedToVisit(new Point(rnd.Next(0, 200), rnd.Next(0, 200); ReDrawPB(); private static int GetManhattanDis(Point p1, Point p2) return Math.Abs(p1.X - p2.X) + Math.Abs(p1.Y - p2.Y);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1