рефераты рефераты
Главная страница > Курсовая работа: Сравнительный анализ методов оптимизации  
Курсовая работа: Сравнительный анализ методов оптимизации
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Сравнительный анализ методов оптимизации

Исходя из графика ОДЗ, можно определить, что оптимальным решением является отрезок прямой , входящий в

ОДЗ, проверим: 2,5*2+2=7.

x1 = 2,5, x2 = 2 f(x)=14.


Заключение

Целью данного курсового проекта было изучение методов оптимизации функции. Методов одномерной оптимизации: метод дихотомии, золотого сечения; многомерной безусловной оптимизации: покоординатный циклический спуск, метод Хука – Дживса, правильный симплекс, деформированный симплекс, а также методов условной оптимизации Метод преобразования целевой функции, метод штрафных функций, табличный симплекс – метод.


Список используемой литературы

1.  А.Г.Трифонов. Постановка задачи оптимизации и численные методы ее решения;

2.  Б. Банди. Методы оптимизации. Вводный курс., 1988;

3.  Мендикенов К.К. Лекции


Приложение А

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace lab1

{

public partial class Form1 : Form

{

class global

{

private global() { }

public static double a = 0.64;

public static double b = 1.77;

public static double e = 0.0001;

public static double al = 0.00001;

public static double x = 0;

public static double y = 0;

public static int iter = 0;

}

public Form1()

{ InitializeComponent(); }

private void textBox1_TextChanged(object sender, EventArgs e)

{global.e = Convert.ToDouble(textBox1.Text); }

private void textBox2_TextChanged(object sender, EventArgs e)

{ global.al = Convert.ToDouble(textBox2.Text); }

public double F(double x)

{ return (Math.Pow((2.5 - x), 2) + 3.1 * x); }

public double Z(double x, double y)

{ return (2.5 * Math.Pow(x, 2) + 2 * x * y + 3.1 * Math.Pow(y, 2) -2* x-3*y); }

public double Dixotom()

{

global.iter = 1;

global.a = Convert.ToDouble(textBox4.Text);

global.b = Convert.ToDouble(textBox3.Text);

richTextBox1.Text = richTextBox1.Text+"a="+Convert.ToString(global.a)+"; b="+Convert.ToString(global.b)+(char)13;

while (true)

{

double x1 = (global.a+global.b)/2-global.al;

double x2 = (global.a + global.b) / 2 + global.al;

if (F(x1) < F(x2)) global.b = x2; else global.a = x1;

richTextBox1.Text = richTextBox1.Text + Convert.ToString(global.iter) + ") x1=" + Convert.ToString(x1) + "; x2=" + Convert.ToString(x2) + "; f(x1)=" + Convert.ToString(F(x1)) + "; f(x2)=" + Convert.ToString(F(x2)) + "; a=" + Convert.ToString(global.a) + "; b=" + Convert.ToString(global.b) + (char)13;

global.iter++;

if (Math.Abs(global.b - global.a) < global.e) break;

} return (global.a + global.b) / 2;

}

public double Zolot()

{ global.iter = 1;

global.a = Convert.ToDouble(textBox4.Text);

global.b = Convert.ToDouble(textBox3.Text);

richTextBox1.Text = richTextBox1.Text + "a=" + Convert.ToString(global.a) + "; b=" + Convert.ToString(global.b) + (char)13;

double x2 = global.a+0.618*(global.b - global.a) ;

double x1 = global.a + (1-0.618) * (global.b - global.a);

while (true)

{

if (Math.Abs(global.b - global.a) < global.e) break;

richTextBox1.Text = richTextBox1.Text + Convert.ToString(global.iter) + ") a=" + Convert.ToString(global.a) + "; b=" + Convert.ToString(global.b) + "; x1=" + Convert.ToString(x1) + "; x2=" + Convert.ToString(x2) + "; f(x1)=" + Convert.ToString(F(x1)) + "; f(x2)=" + Convert.ToString(F(x2)) + (char)13;

if (F(x2) > F(x1))

{ global.b = x2; x2 = x1; x1 = global.a + 0.372 * (global.b - global.a); }

else { global.a = x1; x1 = x2; x2 = global.a + 0.618 * (global.b - global.a); }

global.iter++;

}

return (global.a + global.b) / 2;

}

private void button1_Click(object sender, EventArgs e)

{ richTextBox1.Text = "";

global.al = Convert.ToDouble(textBox2.Text);

global.e = Convert.ToDouble(textBox1.Text);

if (radioButton1.Checked) global.x = Dixotom();

if (radioButton2.Checked) global.x = Zolot();

label2.Text = "Минимум: x*=" + Convert.ToString(global.x) + "; y(x*)=" + Convert.ToString(F(global.x)) + ", число итераций: "+Convert.ToString(global.iter-1);

}

public void Spusk(double x,double y)

{

while (true)//идем вправо

{ x = x + global.al; if (Z(x, y) > Z(x - global.al, y)) break; global.iter++;

richTextBox2.Text = richTextBox2.Text + Convert.ToString(global.iter)+ ") x=" + Convert.ToString(x) + "; y=" + Convert.ToString(y) + "; z(x,y)=" + Convert.ToString(Z(x, y)) + "; al=" + Convert.ToString(global.al) + (char)13;

x = x - global.al;//возвращаемся на неудачный шаг

while (true)//идем влево

{ x = x - global.al; if (Z(x, y) > Z(x + global.al, y)) break; global.iter++;

richTextBox2.Text = richTextBox2.Text + Convert.ToString(global.iter) + ") x=" + Convert.ToString(x) + "; y=" + Convert.ToString(y) + "; z(x,y)=" + Convert.ToString(Z(x, y)) + "; al=" + Convert.ToString(global.al) + (char)13; }

x = x + global.al;//возвращаемся на неудачный шаг

global.x=x; global.y=y;

SpuskV(x, y);

}

public void SpuskV(double x, double y)

{

while (true)//идем вверх

{ y = y + global.al; if (Z(x, y) > Z(x, y - global.al)) break; global.iter++;

richTextBox2.Text = richTextBox2.Text + Convert.ToString(global.iter) + ") x=" + Convert.ToString(x) + "; y=" + Convert.ToString(y) + "; z(x,y)=" + Convert.ToString(Z(x, y)) + "; al=" + Convert.ToString(global.al) + (char)13; }

y = y - global.al;//возвращаемся на неудачный шаг

while (true)//идем вниз

{ y = y - global.al; if (Z(x, y) > Z(x, y + global.al)) break; global.iter++;

richTextBox2.Text = richTextBox2.Text + Convert.ToString(global.iter) + ") x=" + Convert.ToString(x) + "; y=" + Convert.ToString(y) + "; z(x,y)=" + Convert.ToString(Z(x, y)) + "; al=" + Convert.ToString(global.al) + (char)13; }

y = y + global.al;//возвращаемся на неудачный шаг

global.x = x; global.y = y;

if (global.al/2 > global.e) { global.al = global.al / 2; Spusk(x, y); }

}

public void Hyg(double x, double y)

{ while (true)

{int min=Vibor(x, y);

if (min == 1) { x = x + 2 * global.e; y = y + 2 * global.e; if (Z(x - 2 * global.e, y - 2 * global.e) < Z(x, y)) break; }

if (min == 2) { x = x - 2 * global.e; y = y + 2 * global.e; if (Z(x + 2 * global.e, y - 2 * global.e) < Z(x, y)) break; }

if (min == 3) { x = x - 2 * global.e; y = y - 2 * global.e; if (Z(x + 2 * global.e, y + 2 * global.e) < Z(x, y)) break; }

if (min == 4) { x = x + 2 * global.e; y = y - 2 * global.e; if (Z(x - 2 * global.e, y + 2 * global.e) < Z(x, y)) break; }

global.iter++;

richTextBox2.Text = richTextBox2.Text + Convert.ToString(global.iter) + ") x=" + Convert.ToString(x) + "; y=" + Convert.ToString(y) + "; z(x,y)=" + Convert.ToString(Z(x, y)) +(char)13; }

global.x = x; global.y = y;

}

public int Vibor(double x, double y)

{ int min = 0;

if (Z(x + global.e, y + global.e) < Z(x, y)) min = 1;

if (Z(x + global.e, y - global.e) < Z(x, y)) min = 2;

if (Z(x - global.e, y - global.e) < Z(x, y)) min = 3;

if (Z(x - global.e, y + global.e) < Z(x, y)) min = 4;

return min; }

public void Sym(double x, double y)

{ double x0 = x; double y0 = y; double x1 = x0 + global.al; double y1 = y0;

double x2 = x0 + (global.al) / 2; double y2 = y0 + global.al * Math.Sin(60);

richTextBox2.Text = richTextBox2.Text + Convert.ToString(global.iter) + ") z(x0,y0)=" + Convert.ToString(Z(x0, y0)) + " z(x1,y1)=" + Convert.ToString(Z(x1, y1)) + " z(x2,y2)=" + Convert.ToString(Z(x2, y2)) + " al=" + Convert.ToString(global.al) + (char)13;

while (true)

{ //поиск наименьшего

double mx0 = x0; double my0 = y0; double mx1 = x1; double my1 = y1; double mx2 = x2; double my2 = y2;

double z1 = Z(mx0, my0); double z2 = Z(mx1, my1); double z3 = Z(mx2, my2);

if ((z1 < z2) && (z2 < z3) && (z3 > z1)) { x0 = mx0; x1 = mx1; x2 = mx2; y0 = my0; y1 = my1; y2 = my2; }

if ((z1 < z2) && (z2 > z3) && (z3 > z1)) { x0 = mx0; x1 = mx2; x2 = mx1; y0 = my0; y1 = my2; y2 = my1; }

if ((z1 > z2) && (z2 < z3) && (z3 < z1)) { x0 = mx1; x1 = mx2; x2 = mx0; y0 = my1; y1 = my2; y2 = my0; }

if ((z1 > z2) && (z2 < z3) && (z3 > z1)) { x0 = mx1; x1 = mx0; x2 = mx2; y0 = my1; y1 = my0; y2 = my2; }

if ((z1 < z2) && (z2 > z3) && (z3 < z1)) { x0 = mx2; x1 = mx0; x2 = mx1; y0 = my2; y1 = my0; y2 = my1; }

if ((z1 > z2) && (z2 > z3) && (z3 < z1)) { x0 = mx2; x1 = mx1; x2 = mx0; y0 = my2; y1 = my1; y2 = my0; }

//проверка на выход

if (global.al <= global.e) break;

while (true)

{ //отражение относительно 3

double kx= (x0+x1)-x2; double ky = (y0 + y1) - y2;

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

рефераты
Новости