Помощь в написании студенческих работ
Антистрессовый сервис

Список использованных источников

РефератПомощь в написанииУзнать стоимостьмоей работы

Min_is = new double; // предельные (минимальные) значения индекса согласия. Private double for_mins (int _1, int _2, double ocenki) // получение индексов несогласия. Public void Elektra (double ocenki, double VesaKr) // выполнение метода электра. Исходный код формы «Многокритериальная оптимизация». Исходный код формы «Однокритериальная оптимизация». If (Convert.ToInt32(dbDataSet.Cars.Rows… Читать ещё >

Список использованных источников (реферат, курсовая, диплом, контрольная)

  • 1. Вентцель Е. С. Исследование операций: задачи, принципы, методология.-2-е изд., стер. М.: Наука. Гл. ред. Физ.-мат. Лит., 1988.
  • 2. Акимов, С. В. Проблемы автоматизации структурно-параметрического синтеза / С. В. Акимов. — СПб.: Челябинск, 2006. — 58 с.
  • 3. Горбунов, В. М. Теория принятия решений. Учебное пособие / В. М. Горбунов. Томск: Национальный исследовательский томский политехнический университет, 2010. 67 с.
  • 4. Матузко, Ю. О. Теория принятия решений. Учебно-методическое пособие / Ю. О. Матузко. Запорожье: Запорожская государственная инженерная академия, 2009. 61 с.
  • 5. Лесин, В. В. Основы методов оптимизации / В. В. Лесин, Ю. П. Лисовец. — М.: Изд-во МАИ, 1995. — 344 с.
  • 6. Шикин, Е. В. Исследование операций / Е. В. Шикин, Г. Е. Шикина. М.: ТК Велби, Изд-во Проспект, 2006. 280 с.
  • 7. Федоров, A. Microsoft Visual Studio 2010: первое знакомство / А. Федоров. М.: Books Gui, 2009. — 92 с.
  • 8. Ногин В. Д. Принятие решений в многокритериальной среде: количественный подход. / В. Д. Ногин — М.: ФИЗМАТЛИТ, 2005, 176 с.
  • 9. Подиновский, В.В. Парето-оптимальные решения многокритериальных задач. / В. В. Подиновский, В. Д. Ногин. М.: Наука. Главная редакция физико-математической литературы, 1982. — 256 с.

Приложение А

(обязательное) Исходный код главной формы.

using System;

using System. Collections;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace OPR.

{.

public partial class Form1: Form.

{.

public Form1().

{.

InitializeComponent ();

}.

public double[,] Parametri;

public double[,] x;

public ArrayList alternativi = new ArrayList ();

private void Form1_Load (object sender, EventArgs e).

{.

// TODO: данная строка кода позволяет загрузить данные в таблицу «dbDataSet.Cars». При необходимости она может быть перемещена или удалена.

this.carsTableAdapter.Fill (this.dbDataSet.Cars);

dataGridView1.RowHeadersWidth = 120;

for (int i=0; i.

dataGridView1.Rows[i]. HeaderCell. Value = dataGridView1[1,i]. Value+" «;

}.

public double[,] ReadFromTable (DataGridView dg).

{.

double[,] matr = new double[dg.RowCount, dg. ColumnCount];

for (int i = 0; i < matr. GetLength (0); i++).

for (int j = 0; j < matr. GetLength (1); j++).

matr[i, j] = Convert. ToDouble (dg[j, i]. Value);

return matr;

}.

private void однокритериальнаяОптимизацияToolStripMenuItem_Click (object sender, EventArgs e).

{.

Form opt1 = new OdnOpt ();

opt1.Visible = true;

}.

private void многокритериальнаяОптимизацияToolStripMenuItem_Click (object sender, EventArgs e).

{.

Form opt2 = new MnogOpt (this);

opt2.Visible = true;

}.

}.

}.

Приложение Б.

(обязательное) Исходный код формы «Однокритериальная оптимизация».

using System;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace OPR.

{.

public partial class OdnOpt: Form.

{.

int nom;

public OdnOpt ().

{.

InitializeComponent ();

}.

private void button1_Click (object sender, EventArgs e).

{.

if (textBox1.Text ≠ «»).

{.

bool f = true;

int min = int. MaxValue;

string[] opt = new string[7];

listBox1.Items.Clear ();

listBox1.Items.Add («Наилучший автомобиль: «);

for (int i = 0; i < dbDataSet.Cars.Rows.Count; i++).

{.

if (Convert.ToInt32(dbDataSet.Cars.Rows[i][2]. ToString ()) > Convert. ToInt32(textBox1.Text)).

{.

f = false;

if (Convert.ToInt32(dbDataSet.Cars.Rows[i][2]. ToString ()) < min).

{.

opt[0] = dbDataSet.Cars.Rows[i][0]. ToString ();

opt[1] = dbDataSet.Cars.Rows[i][1]. ToString ();

opt[2] = dbDataSet.Cars.Rows[i][2]. ToString ();

opt[3] = dbDataSet.Cars.Rows[i][3]. ToString ();

opt[4] = dbDataSet.Cars.Rows[i][4]. ToString ();

opt[5] = dbDataSet.Cars.Rows[i][5]. ToString ();

opt[6] = dbDataSet.Cars.Rows[i][6]. ToString ();

min = Convert. ToInt32(opt[2]);

nom = i;

}.

}.

}.

if (f).

{.

listBox1.Items.Add («Нет подходящих автомобилей»);

}.

else.

{.

listBox1.Items.Add (opt[1] + «стоимостью: «+ min + «млн.руб;»);

listBox1.Items.Add («Характеристики: «);

listBox1.Items.Add («Объем двигателя: «+ opt[3] + «л»);

listBox1.Items.Add («Тип автомобиля: «+ opt[4]);

listBox1.Items.Add («Наличие кондиционера: «+ opt[5]);

listBox1.Items.Add («Оценка пользователя: «+ opt[6]);

}.

}.

}.

private void OdnOpt_Load (object sender, EventArgs e).

{.

// TODO: данная строка кода позволяет загрузить данные в таблицу «dbDataSet.Cars». При необходимости она может быть перемещена или удалена.

this.carsTableAdapter.Fill (this.dbDataSet.Cars);

}.

private void textBox1_KeyPress (object sender, KeyPressEventArgs e).

{.

if (e.KeyChar ≠ 8 && (e.KeyChar 57)).

e.Handled = true;

}.

}.

}.

Приложение В.

(обязательное) Исходный код формы «Многокритериальная оптимизация».

using System;

using System. Collections;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace OPR.

{.

public partial class MnogOpt: Form.

{.

Form1 f1;

public double a, b;

public MnogOpt (Form1 f).

{.

Initi…

}.

public class MnogokrOptimiz.

{.

double[,] x;

public ArrayList alt = new ArrayList ();

public ArrayList av = new ArrayList ();

public MnogokrOptimiz (double[,] x, ArrayList alternativi).

{.

this.x = x; // оценки экспертов по критериям.

this.alt = alternativi;

}.

//** МЕТОД РАНГА**//.

public double[] SymmaOcenokKriter ().

{.

double[] sum = new double[x.GetLength (1)];

for (int j = 0; j < x. GetLength (1); j++).

for (int i = 0; i < x. GetLength (0); i++).

sum[j] = sum[j] + x[i, j];

return sum;

}.

public double SymmaVsehOcenok (double[] massiv).

{.

double sum = 0;

for (int i = 0; i < massiv. Length; i++).

sum = sum + massiv[i];

return sum;

}.

public double[] MetodRanga ().

{.

double[] massiv = new double[x.GetLength (1)];

massiv = SymmaOcenokKriter ();

double sum = SymmaVsehOcenok (massiv);

double[] VesaKriter = new double[massiv.Length];

for (int i = 0; i < massiv. Length; i++).

VesaKriter[i] = massiv[i] / sum;

return VesaKriter;

}.

//**МЕТОД ПАРЕТО**//.

public void MetodPareto (double[,] ocenki).

{.

int i1, i2;

for (int i = 0; i < alt. Count — 1; i++).

for (int j = i + 1; j < alt. Count; j++).

{.

i1 = Convert. ToInt32(alt[i]);

i2 = Convert. ToInt32(alt[j]);

if (ocenki[i1, 0] >= ocenki[i2, 0] && ocenki[i1, 1] >= ocenki[i2, 1] && ocenki[i1, 2] >= ocenki[i2, 2] && ocenki[i1, 3] >= ocenki[i2, 3] &&.

ocenki[i1, 4] >= ocenki[i2, 4]).

{.

alt.RemoveAt (j);

}.

if (ocenki[i1, 0] <= ocenki[i2, 0] && ocenki[i1, 1] <= ocenki[i2, 1] && ocenki[i1, 2] <= ocenki[i2, 2] && ocenki[i1, 3] <= ocenki[i2, 3] &&.

ocenki[i1, 4] <= ocenki[i2, 4]).

{.

alt.RemoveAt (i);

i = 0;

}.

}.

}.

public double[,] mis, mins;

public double[] min_is, max_ins;

//**МЕТОД ЭЛЕКТРА**//.

public void Elektra (double[,] ocenki, double[] VesaKr) // выполнение метода электра.

{.

mis = new double[ocenki.GetLength (0), ocenki. GetLength (0)]; // матрица индексов согласия.

for (int i = 0; i < ocenki. GetLength (0); i++).

for (int j = 0; j < ocenki. GetLength (0); j++).

mis[i, j] = for_mis (i, j, ocenki, VesaKr); // элемент матрицы равен элементу, полученному в методе for_mis.

mins = new double[ocenki.GetLength (0), ocenki. GetLength (0)]; // матрица индексов несогласия.

for (int i = 0; i < ocenki. GetLength (0); i++).

for (int j = 0; j < ocenki. GetLength (0); j++).

mins[i, j] = for_mins (i, j, ocenki); // элемент матрицы несогласия равен элементу, полученному в методе for_mis.

min_is = new double[mis.GetLength (0)]; // предельные (минимальные) значения индекса согласия.

double min = double. MaxValue;

for (int i = 0; i < mis. GetLength (0); i++).

{.

min = double. MaxValue;

for (int j = 0; j < mis. GetLength (1); j++).

if (mis[i, j] < min).

min = mis[i, j];

min_is[i] = min;

// MessageBox. Show (min_is[i] + «min»);

}.

max_ins = new double[mins.GetLength (0)]; // предельные (максимальные) значения индекса несогласия.

double max = 0;

for (int i = 0; i < mins. GetLength (0); i++).

{.

max = 0;

for (int j = 0; j < mins. GetLength (1); j++).

if (mins[i, j] > max).

max = mins[i, j];

max_ins[i] = max;

//MessageBox.Show (max_ins[i]+" max");

}.

}.

private double for_mis (int _1, int _2, double[,] ocenki, double[] VesKr) // метод для вычисления индексо согласия.

{.

double ves = 0;

for (int i = 0; i < ocenki. GetLength (1); i++).

if (ocenki[_1, i] >= ocenki[_2, i]) // если критерий выше или равен.

{.

ves = ves + VesKr[i]; // суммируем веса этих критериев.

}.

return (ves);

}.

private double for_mins (int _1, int _2, double[,] ocenki) // получение индексов несогласия.

{.

double max = 0;

for (int i = 0; i < ocenki. GetLength (1); i++).

if (ocenki[_1, i] <= ocenki[_2, i]) // если критерий не лучше.

{.

if (max < ocenki[_2, i] - ocenki[_1, i]).

{.

max = ocenki[_2, i] - ocenki[_1, i]; // находим максимум между разностями оценок в безразмерной форме.

}.

}.

return (max);

}.

public int[] best (double a, double b).

{.

int fl = 0;

int k = 0;

int j = 0;

int[] nom = new int[min_is.Length];

for (int i = 0; i < nom. Length; i++).

nom[i] = 1000;

for (int i = 0; i < (min_is.Length)&&j.

{.

if (i == Convert. ToInt32(alt[j])).

{.

fl = 0;

if (min_is[i] > a && max_ins[i] < b).

{.

fl++;

nom[k] = i; // определение номера лучшего автомобиля.

k++;

}.

j++;

}.

}.

return nom;

}.

public int Max (ArrayList massiv).

{.

int nMax = 0;

double max = Convert. ToDouble (massiv[0]);

for (int i = 0; i < massiv. Count; i++).

if (Convert.ToDouble (massiv[i]) > max).

{.

max = Convert. ToDouble (massiv[i]);

nMax = i;

}.

return nMax;

}.

}.

class Perevod.

{.

public double[,] ocenki;

public Perevod (int m, int n).

{.

ocenki = new double[n, m];

}.

public double Max (double[] kriteriy).

{.

double max = kriteriy[0];

for (int i = 1; i < kriteriy. Length; i++).

if (kriteriy[i] > max) max = kriteriy[i];

return max;

}.

public double Min (double[] kriteriy).

{.

double min = kriteriy[0];

for (int i = 1; i < kriteriy. Length; i++).

if (kriteriy[i] < min) min = kriteriy[i];

return min;

}.

public void BezrazmVid (double[] kriteriy, int i, bool isMax).

{.

double max = Max (kriteriy);

double min = Min (kriteriy);

if (isMax == false).

for (int j = 0; j < kriteriy. Length; j++).

ocenki[j, i] = min/kriteriy[j];

else.

for (int j = 0; j < kriteriy. Length; j++).

ocenki[j, i] = kriteriy[j] / max;

}.

public void DaNet (string[] kriteriy, int i).

{.

for (int j = 0; j < kriteriy. Length; j++).

if (kriteriy[j] == «да») ocenki[j, i] = 0.67;

else ocenki[j, i] = 0.33;

}.

public void Tip (string[] kriteriy, int i).

{.

for (int j = 0; j < kriteriy. Length; j++).

if (kriteriy[j] == «грузовой») ocenki[j, i] = 0.67;

else ocenki[j, i] = 0.33;

}.

public void PerevodPoshksle (string[] kriteriy, int i).

{.

for (int j = 0; j < kriteriy. Length; j++).

{.

if (kriteriy[j] == «отлично») ocenki[j, i] = 0.9;

if (kriteriy[j] == «хорошо») ocenki[j, i] = 0.7;

if (kriteriy[j] == «удовлетворительно») ocenki[j, i] = 0.5;

if (kriteriy[j] == «плохо») ocenki[j, i] = 0.3;

if (kriteriy[j] == «очень плохо») ocenki[j, i] = 0.1;

}.

}.

}.

private void button2_Click (object sender, EventArgs e).

{.

Form inf = new Info (this);

inf.Visible = true;

}.

}.

}.

Приложение Г.

(обязательное) Исходный код формы «Дополнительно».

using System;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace OPR.

{.

public partial class Info: Form.

{.

MnogOpt f2;

public Info (MnogOpt f).

{.

InitializeComponent ();

f2 = f;

}.

private void Info_Load1(object sender, EventArgs e).

{.

// TODO: данная строка кода позволяет загрузить данные в таблицу «dbDataSet.Cars». При необходимости она может быть перемещена или удалена.

this.carsTableAdapter.Fill (this.dbDataSet.Cars);

PrintElectra ();

Print ();

}.

public void Print ().

{.

dataGridView5.RowCount = 1;

dataGridView5.ColumnCount = 5;

dataGridView5.RowHeadersVisible = false;

for (int i = 0; i < dataGridView5. ColumnCount; i++).

dataGridView5[i, 0]. Value = f2. VesaKrit[i];

dataGridView3.RowCount = f2.ocenki.GetLength (0);

dataGridView3.ColumnCount = f2.ocenki.GetLength (1);

dataGridView3.RowHeadersVisible = false;

dataGridView3.ColumnHeadersVisible = false;

for (int i = 0; i < f2.ocenki.GetLength (1); i++).

dataGridView3.Columns[i]. Width = 75;

for (int i = 0; i < f2.ocenki.GetLength (0); i++).

for (int j = 0; j < f2.ocenki.GetLength (1); j++).

dataGridView3[j, i]. Value = f2. ocenki[i, j];

dataGridView1.RowCount = f2.alter.Length;

for (int i = 0; i < dataGridView1. RowCount; i++).

dataGridView1.Rows[i]. HeaderCell. Value = f2. pareto[i, 0];

dataGridView1.RowHeadersWidth = 142;

dataGridView1.ColumnCount = 5;

for (int i = 0; i < f2.pareto.GetLength (0); i++).

for (int j = 1; j < f2.pareto.GetLength (1); j++).

dataGridView1[j — 1, i]. Value = f2. pareto[i, j];

}.

public void PrintElectra ().

{.

dataGridView6.RowCount = f2.alter.Length;

dataGridView6.ColumnCount = 1;

int ii = 0;

for (int i = 0; i < f2. pr_is.GetLength (0)&&ii.

if (f2.alter[ii] == i).

{.

dataGridView6[0, ii]. Value = f2. pr_is[i];

ii++;

}.

dataGridView6.RowHeadersVisible = false;

dataGridView6.ColumnHeadersVisible = false;

dataGridView6.Columns[0]. Width = 75;

ii = 0;

dataGridView2.RowCount = f2.alter.Length;

dataGridView2.ColumnCount = f2.ms.GetLength (1);

for (int i = 0; i < f2.ms.GetLength (0)&&ii.

if (f2.alter[ii] == i).

{.

for (int j = 0; j < f2.ms.GetLength (1); j++).

dataGridView2[j, ii]. Value = f2. ms[i, j];

ii++;

}.

dataGridView2.RowHeadersVisible = false;

dataGridView2.ColumnHeadersVisible = false;

for (int i = 0; i < f2.ms.GetLength (1); i++).

dataGridView2.Columns[i]. Width = 75;

ii = 0;

dataGridView4.RowCount = f2.alter.Length;

dataGridView4.ColumnCount = f2.mns.GetLength (1);

for (int i = 0; i < f2.mns.GetLength (0)&&ii.

if (f2.alter[ii] == i).

{.

for (int j = 0; j < f2.mns.GetLength (1); j++).

dataGridView4[j, ii]. Value = f2. mns[i, j];

ii++;

}.

dataGridView4.RowHeadersVisible = false;

dataGridView4.ColumnHeadersVisible = false;

for (int i = 0; i < f2.mns.GetLength (1); i++).

dataGridView4.Columns[i]. Width = 75;

label4.Text = f2.a.ToString ();

label7.Text = f2.b.ToString ();

ii = 0;

dataGridView7.RowCount = f2.alter.Length;

dataGridView7.ColumnCount = 1;

for (int i = 0; i < f2. pr_ins.GetLength (0)&&ii.

if (f2.alter[ii] == i).

{.

dataGridView7[0, ii]. Value = f2. pr_ins[i];

ii++;

}.

dataGridView7.RowHeadersVisible = false;

dataGridView7.ColumnHeadersVisible = false;

dataGridView7.Columns[0]. Width = 75;

}.

}.

}.

Показать весь текст
Заполнить форму текущей работой