Сообщение Re[3]: Это линейное программирование или можно как-то проще? от 28.05.2020 21:43
Изменено 28.05.2020 21:59 andyp
Re[3]: Это линейное программирование или можно как-то проще?
Здравствуйте, Ватакуси, Вы писали:
В>Да, можно этот пересечение куба и плоскости (для произвольного N) выразить уравнением?
Это не нужно. Можешь действовать так:
Преобразуй координаты в y_i, чтобы перейти к гиперкубу для ограничений. Тогда неравенства ограничений примут вид
0 ≤ y_i ≤ 1.
Выбери любую вершину, например из всех нулей. Рассчитай в ней целевую функцию . Перебирай соседние N вершин, пока не найдешь вершину, где целевая функция больше. Переходи в нее. Повторяй для N-1 новых соседних вершин. Если во всех соседних вершинах целевая функция не больше, чем в текущей, то максимум найден.
Координаты вершин гиперкуба — вектора из 0 и 1. Соседние вершины получаются изменением одной из координат, например для N = 4 соседями вершины с нулевыми координатами будут
1 0 0 0
0 1 0 0
0 0 1 0
1 0 0 1
Все. Вот такая простая вариация симплекс-метода для гиперкуба получается.
В>Да, можно этот пересечение куба и плоскости (для произвольного N) выразить уравнением?
Это не нужно. Можешь действовать так:
Преобразуй координаты в y_i, чтобы перейти к гиперкубу для ограничений. Тогда неравенства ограничений примут вид
0 ≤ y_i ≤ 1.
Выбери любую вершину, например из всех нулей. Рассчитай в ней целевую функцию . Перебирай соседние N вершин, пока не найдешь вершину, где целевая функция больше. Переходи в нее. Повторяй для N-1 новых соседних вершин. Если во всех соседних вершинах целевая функция не больше, чем в текущей, то максимум найден.
Координаты вершин гиперкуба — вектора из 0 и 1. Соседние вершины получаются изменением одной из координат, например для N = 4 соседями вершины с нулевыми координатами будут
1 0 0 0
0 1 0 0
0 0 1 0
1 0 0 1
Все. Вот такая простая вариация симплекс-метода для гиперкуба получается.
Re[3]: Это линейное программирование или можно как-то проще?
Здравствуйте, Ватакуси, Вы писали:
В>Да, можно этот пересечение куба и плоскости (для произвольного N) выразить уравнением?
Это не нужно. Можешь действовать так:
Преобразуй координаты в y_i, чтобы перейти к гиперкубу для ограничений. Тогда неравенства ограничений примут вид
0 ≤ y_i ≤ 1.
Выбери любую вершину, например из всех нулей. Рассчитай в ней целевую функцию . Перебирай соседние N вершин, пока не найдешь вершину, где целевая функция больше. Переходи в нее. Повторяй для N-1 новых соседних вершин. Если во всех соседних вершинах целевая функция не больше, чем в текущей, то максимум найден.
Координаты вершин гиперкуба — вектора из 0 и 1. Соседние вершины получаются изменением одной из координат, например для N = 4 соседями вершины с нулевыми координатами будут
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Все. Вот такая простая вариация симплекс-метода для гиперкуба получается.
В>Да, можно этот пересечение куба и плоскости (для произвольного N) выразить уравнением?
Это не нужно. Можешь действовать так:
Преобразуй координаты в y_i, чтобы перейти к гиперкубу для ограничений. Тогда неравенства ограничений примут вид
0 ≤ y_i ≤ 1.
Выбери любую вершину, например из всех нулей. Рассчитай в ней целевую функцию . Перебирай соседние N вершин, пока не найдешь вершину, где целевая функция больше. Переходи в нее. Повторяй для N-1 новых соседних вершин. Если во всех соседних вершинах целевая функция не больше, чем в текущей, то максимум найден.
Координаты вершин гиперкуба — вектора из 0 и 1. Соседние вершины получаются изменением одной из координат, например для N = 4 соседями вершины с нулевыми координатами будут
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Все. Вот такая простая вариация симплекс-метода для гиперкуба получается.