Главная страница

Многокритериальная оптимизация


Скачать 163.21 Kb.
НазваниеМногокритериальная оптимизация
Дата09.11.2022
Размер163.21 Kb.
Формат файлаrtf
Имя файлаbibliofond.ru_864672.rtf
ТипДокументы
#778049
страница4 из 4
1   2   3   4


}(i = 0; i < 2; i++)(j = 0; j < 5; j++)

{(serv[i, j].CompareTo("Да") == 0) ser[i, j] = 1;(serv[i, j].CompareTo("Нет") == 0) ser[i, j] = 0;

}(i = 0; i < 2; i++)(j = 0; j < 5; j++)

{(udob[i, j].CompareTo("плохо") == 0) ud[i, j] = 0;(udob[i, j].CompareTo("хорошо") == 0) ud[i, j] = 0.33;(udob[i, j].CompareTo("очень хорошо") == 0) ud[i, j] = 0.66;(udob[i, j].CompareTo("отлично") == 0) ud[i, j] = 1;

}

#endregion

}upd()

{(int i = 0; i < 5; i++)(int j = 0; j < 5; j++)

{( ((hours * 12 * proiz[1, j]) >= limit && (hours * 12 * proiz[0, i]) >= limit) && ((hours * proiz[0, i] * effect[0, i]) <= energy && (hours * proiz[1, j] * effect[1, j]) <= energy) && (stoim[0, i] + stoim[1, j]) < 1000 )

{.Rows.Add();.Rows[dataGridView3.RowCount - 1].Cells[0].Value = String.Format("ST1{0} + ST2{1}", (i + 1), (j + 1)); //nazvan(proiz[0, i] > proiz[1, j]) dataGridView3.Rows[dataGridView3.RowCount - 1].Cells[1].Value = proiz[1, j]; //----dataGridView3.Rows[dataGridView3.RowCount - 1].Cells[1].Value = proiz[0, i]; //proizv.Rows[dataGridView3.RowCount - 1].Cells[2].Value = stoim[0, i] + stoim[1, j]; //stoim.Rows[dataGridView3.RowCount - 1].Cells[3].Value = effect[0, i] + effect[1, j];.Rows[dataGridView3.RowCount - 1].Cells[4].Value = (ser[0, i] + ser[1, j]) / 2;(nadej[0, i] > nadej[1, j]) dataGridView3.Rows[dataGridView3.RowCount - 1].Cells[5].Value = nadej[1, j]; //----dataGridView3.Rows[dataGridView3.RowCount - 1].Cells[5].Value = nadej[0, i];.Rows[dataGridView3.RowCount - 1].Cells[6].Value = (ud[0, i] + ud[1, j]) / 2;

}

}

} // заполнение таблицы подходями по ограничениям альтернативамиvoid button1_Click(object sender, EventArgs e)

{(); // обращение к методу заполнения таблицы

// проверка на заполненность экспертных оценок(comboBox1.Text == "" || comboBox2.Text == "" || comboBox5.Text == "" || comboBox3.Text == "" || comboBox6.Text == "" || comboBox8.Text == "" || comboBox4.Text == "" || comboBox7.Text == "" || comboBox9.Text == "" || comboBox10.Text == "" || comboBox31.Text == "" || comboBox37.Text == "" || comboBox38.Text == "" || comboBox39.Text == "" || comboBox40.Text == "") MessageBox.Show("Заполните все поля оценок!");

{= Convert.ToInt32(textBox1.Text);= Convert.ToInt32(textBox2.Text);= Convert.ToInt32(textBox3.Text);= Convert.ToInt32(textBox4.Text);.ReadOnly = true;.ReadOnly = true;.ReadOnly = true;.ReadOnly = true;.Enabled = false;.Enabled = true;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;.Enabled = false;[0, 0] = 1;[0, 1] = Convert.ToDouble(comboBox11.Text);[0, 2] = Convert.ToDouble(comboBox12.Text);[0, 3] = Convert.ToDouble(comboBox16.Text);[0, 4] = Convert.ToDouble(comboBox17.Text);[0, 5] = Convert.ToDouble(comboBox21.Text);[1, 0] = Convert.ToDouble(comboBox1.Text);[1, 1] = 1;[1, 2] = Convert.ToDouble(comboBox13.Text);[1, 3] = Convert.ToDouble(comboBox15.Text);[1, 4] = Convert.ToDouble(comboBox18.Text);[1, 5] = Convert.ToDouble(comboBox24.Text);[2, 0] = Convert.ToDouble(comboBox2.Text);[2, 1] = Convert.ToDouble(comboBox5.Text);[2, 2] = 1;[2, 3] = Convert.ToDouble(comboBox14.Text);[2, 4] = Convert.ToDouble(comboBox19.Text);[2, 5] = Convert.ToDouble(comboBox25.Text);[3, 0] = Convert.ToDouble(comboBox3.Text);[3, 1] = Convert.ToDouble(comboBox6.Text);[3, 2] = Convert.ToDouble(comboBox8.Text);[3, 3] = 1;[3, 4] = Convert.ToDouble(comboBox20.Text);[3, 5] = Convert.ToDouble(comboBox29.Text);[4, 0] = Convert.ToDouble(comboBox4.Text);[4, 1] = Convert.ToDouble(comboBox7.Text);[4, 2] = Convert.ToDouble(comboBox9.Text);[4, 3] = Convert.ToDouble(comboBox10.Text);[4, 4] = 1;[4, 5] = Convert.ToDouble(comboBox30.Text);[5, 0] = Convert.ToDouble(comboBox31.Text);[5, 1] = Convert.ToDouble(comboBox37.Text);[5, 2] = Convert.ToDouble(comboBox38.Text);[5, 3] = Convert.ToDouble(comboBox39.Text);[5, 4] = Convert.ToDouble(comboBox40.Text);[5, 5] = 1;

}

}void button2_Click(object sender, EventArgs e) //Reshenie

{.Enabled = false;(int i = 0; i < 6; i++) // вычисление суммы оценок по каждому критерию(int j = 0; j < 6; j++)[i] = k[i] + marks1[i, j];ksum = 0; // сумма всех оценок(int j = 0; j < 6; j++)= k[j] + ksum;(int i = 0; i < 6; i++) // вычисление веса критерия[i] = k[i] / ksum;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Text = Convert.ToString(k[0]);.Text = Convert.ToString(k[1]);.Text = Convert.ToString(k[2]);.Text = Convert.ToString(k[3]);.Text = Convert.ToString(k[4]);.Text = Convert.ToString(k[5]);pro = 0;sto = 0;ene = 0;ser = 0;nad = 0;udo = 0;(int i = 0; i < dataGridView3.RowCount; i++) // нахождение суммарного значения по каждому критерию

{= pro + Convert.ToDouble(dataGridView3.Rows[i].Cells[1].Value);= sto + Convert.ToDouble(dataGridView3.Rows[i].Cells[2].Value);= ene + Convert.ToDouble(dataGridView3.Rows[i].Cells[3].Value);= ser + Convert.ToDouble(dataGridView3.Rows[i].Cells[4].Value);= nad + Convert.ToDouble(dataGridView3.Rows[i].Cells[5].Value);= udo + Convert.ToDouble(dataGridView3.Rows[i].Cells[6].Value);

}(int i = 0; i < dataGridView3.RowCount; i++) // заполнение массива безразмерных оценок

{[i, 0] = Convert.ToDouble(dataGridView3.Rows[i].Cells[1].Value) / pro * k[0];[i, 1] = Convert.ToDouble(dataGridView3.Rows[i].Cells[2].Value) / sto * k[1];[i, 2] = Convert.ToDouble(dataGridView3.Rows[i].Cells[3].Value) / ene * k[2];[i, 3] = Convert.ToDouble(dataGridView3.Rows[i].Cells[4].Value) / ser * k[3];[i, 4] = Convert.ToDouble(dataGridView3.Rows[i].Cells[5].Value) / nad * k[4];[i, 5] = Convert.ToDouble(dataGridView3.Rows[i].Cells[6].Value) / udo * k[5];

}tem = 0;(int i = 0; i < dataGridView3.RowCount; i++) // получение оценки для каждой альтернативы

{= mas[i, 0] + mas[i, 1] + mas[i, 2] + mas[i, 3] + mas[i, 4] + mas[i, 5];.Rows[i].Cells[7].Value = tem;

}= Convert.ToDouble(dataGridView3.Rows[0].Cells[7].Value); // присваиваем временному значению первый элемент таблицы для поиска наилучшей альтернативы(int i = 1; i < dataGridView3.RowCount; i++) // перебор таблицы в поиске наибольшей оценки(tem < Convert.ToDouble(dataGridView3.Rows[i].Cells[7].Value)) { tem = Convert.ToDouble(dataGridView3.Rows[i].Cells[7].Value); t = i; }

// когда найдена наибольшая оценка, данная альтернатива подсвечивается красным[7, t].Style.BackColor = Color.Red;[6, t].Style.BackColor = Color.Red;[5, t].Style.BackColor = Color.Red;[4, t].Style.BackColor = Color.Red;[3, t].Style.BackColor = Color.Red;[2, t].Style.BackColor = Color.Red;[1, t].Style.BackColor = Color.Red;[0, t].Style.BackColor = Color.Red;.Text = Convert.ToString(dataGridView3.Rows[t].Cells[0].Value);.Visible = true;.Visible = true;.Visible = true;.Visible = true;

}void button3_Click(object sender, EventArgs e) // формирование отчёта

{.Enabled = false;(StreamWriter sw = new StreamWriter("report.txt", false, System.Text.Encoding.Default)) // создание и открытие файла для записи

{.WriteLine("Исходные данные");.WriteLine("");.Write("Производительность в год: ");.WriteLine(limit);.Write("Часов в месяц: ");.WriteLine(hours);.Write("Ограничения по стоимости: ");.WriteLine(money);.Write("Потребляемая мощность в месяц: ");.WriteLine(energy);.WriteLine("");.WriteLine("В процессе выпонения программы были учтены мнения эксперта о важности каждого из критериев.");.WriteLine("На основе полученных результатов можем сделать вывод, что наилучшая альтернатива:");.WriteLine(dataGridView3.Rows[t].Cells[0].Value);.Write("Производительность: ");.WriteLine(dataGridView3.Rows[t].Cells[1].Value);.Write("Стоимость: ");.WriteLine(dataGridView3.Rows[t].Cells[2].Value);.Write("Энергоэффективность: ");.WriteLine(dataGridView3.Rows[t].Cells[3].Value);.Write("Надёжность: ");.WriteLine(dataGridView3.Rows[t].Cells[5].Value);.Write("Оценка: ");.WriteLine(dataGridView3.Rows[t].Cells[7].Value);

}

}
}

}
1   2   3   4


написать администратору сайта