Подключите нашего Telegram-бота для уведомлений о новых проектах

Разработка функций линейного программирования.

Разместить заказ
m
Заказчик
Отзывы фрилансеров: + 3 - 0
Зарегистрирован на сайте 3 года и 10 месяцев
Бюджет: 15 000 руб
186.77 $ — 166.48 €
Нужно написать универсальный класс для решения задачи линейного программирования на C# 
LPSolver. На чистом C#, без использования сторонних библиотек. Внутри класса нужно все типы ключей преобразовать в int и работать с массивами для максимальной производительности. 

Вот с таким интерфейсом
  // String – тип ключа
            // double – тип данных
            LPSolver<String, double> lPSolver = new LPSolver<string, double>();

            lPSolver.addLimitation("глина", 100, '<'); // добавляем ограничение в сторону <
            lPSolver.addLimitation("дерево", 200, '<');
            lPSolver.addLimitation("строители", 1000, '<');
            lPSolver.addLimitation("свободное место", 32, '<');
            lPSolver.addLimitation("деньги", 5000, '<');

            lPSolver.addLimitation("квартиры", 0, '>', true); // квартиры в сторону > ,а парамет true означает, что это целевой показатель,

            lPSolver.addVariable("деревянный дом"); // добавляем.переменную
            lPSolver.addVariable("глиняный дом", true); // true это целочисленная переменная

            // Добавляем связь переменных и ограничений
            lPSolver.addConnection("глина", "глиняный дом", 20);
            lPSolver.addConnection("глина", "деревянный дом", 0);

            lPSolver.addConnection("дерево", "глиняный дом", 0);
            lPSolver.addConnection("дерево", "деревянный дом", 60);

            lPSolver.addConnection("строители", "глиняный дом", 10);
            lPSolver.addConnection("строители", "деревянный дом", 30);

            lPSolver.addConnection("свободное место", "глиняный дом", 8);
            lPSolver.addConnection("свободное место", "деревянный дом", 5);

            lPSolver.addConnection("деньги", "глиняный дом", 300);
            lPSolver.addConnection("деньги", "деревянный дом", 600);

            lPSolver.addConnection("квартиры", "глиняный дом", 100);
            lPSolver.addConnection("квартиры", "деревянный дом", 200);

            Double результат_целевой_функции;
            Dictionary<string, double> готовые_переменные;
            Dictionary<string, double> остатки_условия;

            lPSolver.solve(out результат_целевой_функции, out готовые_переменные, out остатки_условия);

            String resultText = $"возможно построить квартир={результат_целевой_функции}";

            Console.WriteLine("Какие дома лучше строить:");

            foreach (var item in готовые_переменные)
            {
                Console.WriteLine($"{item.Key} : {item.Value}");
            }

            Console.WriteLine("Сколько останется ресурсов:");
            foreach (var item in остатки_условия)
            {
                Console.WriteLine($"{item.Key} : {item.Value}");
            }

            Console.WriteLine(resultText);

То есть в классе задаем ограничения, переменные и связь между ними, после решения получаем результат по каждой переменной и остатки.
Разделы:
Опубликован:
10.09.2021 | 14:44 [поднят: 10.09.2021 | 14:44] [последние изменения: 10.09.2021 | 15:10]
Откликнуться Посмотреть другие заказы Разместить заказ

Теги: нужен программист, ищу программиста, резюме программиста, требуется разработка и программирование игр

Наши партнеры
Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».