|
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 11
|
|||||||||||||||||||||
Как собрать этот проект?09.12.2013, 17:19. Показов 1156. Ответов 6
Метки нет (Все метки)
Програ по симплекс методу
/* simplex.cpp */ #include <iostream> #include <cmath> #include <fstream> #include <sstream> #include <string> #include "user_data.h" #include "simplex.h" using std::cout; using std::endl; void simplex::init() { int i, j; func = 0; sv = new double *[num_l]; for (i = 0; i < num_l; i++) sv[i] = new double [num_v * 2]; for (i = 0; i < num_l; i++) { for (j = 0; j < num_v; j++) sv[i][j] = system[i][j]; for (; j < num_v * 2; j++) if (i + num_v == j) if (way) sv[i][j] = 1; else sv[i][j] = -1; else sv[i][j] = 0; } istr = new double [num_v * 2]; bv = new double *[num_l]; for (i = 0; i < num_l; i++) { bv[i] = new double [2]; bv[i][0] = i + num_v; bv[i][1] = fm[i]; } for (i = 0; i < num_v * 2; i++) if (i < num_v) istr[i] = function[i] * -1; else istr[i] = 0; i_lcol = 0; for (i = 0; i < num_v * 2 - 1; i++) { if (istr[i] < 0) if (fabs(istr[i + 1]) > fabs(istr[i])) i_lcol = i + 1; } th = new double [num_l]; for (i = 0; i < num_l; i++) th[i] = bv[i][1] / sv[i][i_lcol]; i_lrow = 0; for (i = 0; i < num_l - 1; i++) if (th[i] > th[i + 1]) i_lrow = i + 1; alm = sv[i_lrow][i_lcol]; print_result_to_file(0); } bool simplex: lane_is_valid(){ int i; bool result = true; if (way) for (i = 0; i < num_v * 2; i++) if (istr[i] < 0) { result = false; break; } if (!way) for (i = 0; i < num_v * 2; i++) if (istr[i] >= 0) { result = false; break; } return result; } bool simplex::function_is_undefined() { int i; for (i = 0; i < num_l; i++) if (th[i] < 0) { return false; } return true; } void simplex::gen_plane() { int i, j, it_num = 0; double A, B; while (!plane_is_valid() && function_is_undefined()) { A = bv[i_lrow][1]; B = istr[i_lcol]; func -= A * B / alm; double *tmp_bv = new double [num_l]; bv [i_lrow][0] = i_lcol; A = bv[i_lrow][1]; for (i = 0; i < num_l; i++) { B = sv[i][i_lcol]; tmp_bv[i] = bv[i_lrow][1]; if (i != i_lrow) tmp_bv[i] = bv[i][1] - A * B / alm; else tmp_bv[i] /= alm; } for (i = 0; i < num_l; i++) bv[i][1] = tmp_bv[i]; double *tmp_istr = istr; B = istr[i_lcol]; for (i = 0; i < num_v * 2; i++) { A = sv[i_lrow][i]; tmp_istr[i] = istr[i] - A * B / alm; } istr = tmp_istr; double **tmp_sv = new double *[num_l]; for (i = 0; i < num_l; i++) tmp_sv[i] = new double [num_v * 2]; for (i = 0; i < num_l; i++) for (j = 0; j < num_v * 2; j++) { tmp_sv[i][j] = sv[i][j]; A = sv[i_lrow][j]; B = sv[i][i_lcol]; if (i == i_lrow) tmp_sv[i][j] /= alm; else tmp_sv[i][j] = sv[i][j] - A * B / alm; } sv = tmp_sv; i_lcol = 0; for (i = 0; i < num_l; i++) th[i] = bv[i][1] / sv[i][i_lcol]; i_lrow = 0; for (i = 0; i < num_l -1; i++) if (th[i] > th[i + 1]) i_lrow = i + 1; alm = sv[i_lrow][i_lcol]; it_num++; print_result_to_file(it_num); } if (!function_is_undefined()) cout << "\nЦелевая фукнция не ограничена, данная задача решений не имеет\n" << endl; else { cout << "\nf(x) = " << func << "\n" << endl; for (i = 0; i < num_l; i++) { cout << "x" << bv[i][0] + 1 << " = " << bv[i][1] << endl; } cout << "\nВсе вычисления были записаны в файл table.txt\n" << endl; } } void simplex: rint_result_to_file(int it_num) { int i, j; if (!it_num) { table << "Задана целевая функция:\n" << endl; std::stringstream f_x; f_x << "f(x) = "; for (i = 0; i < num_v; i++) { if (!i) f_x << function[i] << "x" << i + 1 << " "; else { if (function[i] < 0) f_x << "- " << fabs(function[i]) << "x" << i + 1 << " "; if (function[i] > 0) f_x << "+ " << function[i] << "x" << i + 1 << " "; } } std::string minmax; if (way) minmax = "max"; else minmax = "min"; f_x << "=> " << minmax << "\n" << endl; table << f_x.str(); table << "И система ограничений:\n" << endl; std::stringstream math_sys; std::string math_sign; for (i = 0; i < num_l; i++) { for (j = 0; j < num_v; j++) { if (!j) math_sys << system[i][j] << "x" << j + 1 << " "; else if (system[i][j] == 1) if (!j) math_sys << "x" << j + 1 << " "; else math_sys << "+ x" << j + 1 << " "; else if (system[i][j] == -1) if (!j) math_sys << "-x" << j + 1 << " "; else math_sys << "- x" << j + 1 << " "; else { if (system[i][j] < 0) math_sys << "- " << fabs(system[i][j])<< "x" << j + 1 << " "; else math_sys << "+ " << system[i][j] << "x" << i + 1 << " "; if (!sign[i]) math_sign = "<="; if (sign[i] == 1) math_sign = "="; if (sign[i] == 2) math_sign = ">="; } } math_sys << math_sign << " " << fm[i]; math_sys << endl; } std::string min_or_max; if (way) min_or_max = "максимум"; else min_or_max = "минимум"; table << math_sys.str() << endl; table << "Решим данную задачу на " << min_or_max << " методом симплексных таблиц.\nПостроим первый опорный план:\n" << endl; } for (i = 0; i < num_l; i++) { table << "x" << bv[i][0] + 1 << "\t" << bv[i][1] << "\t"; for (j = 0; j < num_v * 2; j++) table << sv[i][j] << "\t"; if (!plane_is_valid()) table << th[i]; table << "\n" << endl; } table << "f(x)\t" << func << "\t"; for (i = 0; i < num_v * 2; i++) table << istr[i] << "\t"; table << "\n"; if (plane_is_valid()) { if (plane_is_valid() && function_is_undefined()) table << "\nДанный план является оптимальным и не требует улучшения. Решение найдено." << endl; std::ofstream outfile ("table.txt"); outfile << table.str(); } else { std::string ln_or_gn; if (way) ln_or_gn = "неположительные"; else ln_or_gn = "положительные"; std::stringstream num_of_plane; if (!it_num) num_of_plane << "Первый опорный план"; else num_of_plane << it_num + 1 << "-й план также"; table << "\n" << num_of_plane.str() << " не является оптимальным, поскольку\nв индексной строке присутствуют " << ln_or_gn << " элементы.\nErо необходимо улучшить.\n" << endl; } }[/CPP]
0
|
|||||||||||||||||||||
| 09.12.2013, 17:19 | |
|
Ответы с готовыми решениями:
6
Как собрать этот проект? Как собрать проект
|
|
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 11
|
|
| 09.12.2013, 17:52 [ТС] | |
|
0
|
|
|
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
|
|
| 09.12.2013, 17:57 | |
|
только, что лень было по файлам расскидывать..
1
|
|
|
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 11
|
|
| 09.12.2013, 18:12 [ТС] | |
|
0
|
|
|
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
|
|
| 09.12.2013, 18:14 | |
|
1
|
|
| 09.12.2013, 18:14 | |
|
Помогаю со студенческими работами здесь
7
Как собрать готовый проект Как собрать проект из исходников
Как собрать 2 cpp и 1 h файлы в проект? Как собрать проект из исходников для COM порта? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|