决策支持系统作业(最终)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

决策支持系统导论
期末作业
姓名:齐鹏
学号:
日期:2012年7月9日
1、设某企业生产多种最终产品Y=(yij),各种产品的单价为Pi,它们的投入产出直接消耗系数为A=(aij),企业的资源(煤、电力、劳力)的约束方程为BX<=>h(“<=>”表示<、=、>),其中,B=(bij)是资源消耗系数矩阵,X=(xi)是企业总产品向量,h是资源约束向量。

为使企业净产值最大,其目标方程S=∑Piyi→max,试安排生产计划(求总产品X和最终产品Y)。

请设计该企业的生产计划决策支持系统,画出DSS运行结构图,并对总控程序、模型程序、数据库进行结构和功能说明。

提示:该决策支持系统需要利用3个模型(投入产出模型、线性规划模型和报表模型(打印投入产出表))和两个数据库(投入产出数据库和线性规划数据库)。

在DSS总控程序中要详细说明何时调用哪个模型运行,何时存取哪个数据库中的数据,何时进行数据计算。

该DSS 需要两次调用投入产出模型:一次计算中间结果,一次计算最后结果。

请注意,模型程序应该是一个标准程序,在一定的参数控制下,可得到中间结果,也可得到最终结果。

该模型程序既适合于该问题的DSS,也适合于其他问题的DSS,不能是一个专用的模型程序。

(40分)
一、模型
1.投入产出模型:可以确定与的关系,。

2.线性规划模型:根据约束方程BX<=>h与目标方程S=∑Piyi→max可以计算出最优的yi。

3.报表模型:根据最终产品Y=(yij),X=(xi)是企业总产品自动生成报表。

二、数据库
1.
2.
三、DSS 运行结构图 :供顾客等候的地方是否舒适; (没人),Some (一些)或,根据公式计算出X=(xi)
一、为训练集赋值
在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 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);
得到如下曲线图:
完成机器学习后,对样本进行改变条件输入,有如下3种情况:
(1)缺1个条件的情况
(2)缺2个条件的情况
(3)介于中间的情况
(1)
3、编制旅行商路径优化问题的遗传算法程序,并计算一个实例。

(30分)一,问题描述:所谓旅行商问题,即给定几个城市,旅行商从中选择一
条最短的路线,使他能够访问到每个城市一次,然后返回起
点。

二,运行结果:
三、代码实现
下面是程序的主要核心代码:
using System;
using ;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using ;
using System.Diagnostics;
namespace TSPGA
{
public partial 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.AddPointNeedToVisit(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))
{
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.StartPoint.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 Point(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(crossOverRate.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 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<Point> visitPoints = new List<Point>();
visitPoints.Add(startPoint);
foreach (int index in visitRoute)
{
visitPoints.Add(pointsNeedToVisit[index]);
}
int td = 0;
Point tp = visitPoints[0];
for (int i = 1; i < visitPoints.Count; i++)
{
td += GetManhattanDis(tp, visitPoints[i]);
tp = visitPoints[i];
}
totalDis.Text = "Total Distace: " + td;
for (int i = 0; i < visitPoints.Count; i++)
{
Point p = new Point();
p.X = visitPoints[i].X * pictureBox1.Width / 200;
p.Y = visitPoints[i].Y * pictureBox1.Height / 200;
visitPoints[i] = 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 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);
}
}
}。

相关文档
最新文档