2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Получение значений в LPSolve
Сообщение08.02.2019, 08:50 
Аватара пользователя


16/02/14
46
Добрый день!

Помогите, пожалуйста. Мало вижу русскоязычной информации про LPSolve. Вызываю его в своем приложении. Сначала формирую файл с задачей линейного программирования. Потом вызываю экзешник, потом вывожу решение в текстовый файл. Не знаю, как можно более гибко работать с полученным решением. Потому что у меня кое-что меняется в условиях задачи (в коэффициентах). То есть сами задачи формируются в цикле. И решаются в цикле. Получается, 100000 моделей и 100000 текстовых файлов. Приходится каждый открывать вручную и копировать параметры и соответствующее им решение в общий файл, чтобы можно было сравнить и проанализировать. Если бы я могла присваивать значения из решения в переменные, то я могла бы выводить их в общий файл (excel, например), с соответствующими коэффициентами. И было бы проще проводить дальнейший анализ.
Код:
int count = 0;
for (...)
                std::string command, num, filename;
                num = std::to_string(count);
                filename = "model" + num + ".lp";
                const char* fn = filename.c_str();
                FILE* file;
                fopen_s(&file, fn, "w");
                fprintf(file, "%f x12 + %f x13 + %f x14 + %f x15 - %f <= ksi;\n",....)
                .....
                fclose(file);
                command = "lp_solve -s " + filename + " >" + num + ".txt";
                const char* cmnd = command.c_str();
                system(cmnd);
                count++;

 Профиль  
                  
 
 Re: Получение значений в LPSolve
Сообщение08.02.2019, 10:13 


16/08/05
1121
Какие-то разделители ведь присутствуют в текстовом выводе решения lpsolve: пробел, перевод строки, точка с запятой, запятая? Вот на основе этих разделителей и организовать логику загрузки полученных данных решений. Но сомнительно использовать для анализа данных excel. У него количество строк на лист ограничено 64000, а у Вас 100000 моделей. Логичнее загружать такой объем данных для дальнейшей обработки в какую-то базу данных (например sqlite, firebird и т.п.), и уже в дальнейшем делать аналитические sql-выборки из неё.

 Профиль  
                  
 
 Re: Получение значений в LPSolve
Сообщение09.02.2019, 16:43 
Аватара пользователя


16/02/14
46
Вывод так выглядит. Да, можно по пробелам и переводу строки. Или даже искать имя переменной в файле. Каждое один раз встречается. Просто я думаю, что сам LPSolve решение в переменных хранит. А потом уже формирует файл с выводом. Вроде как-то возможно использовать команды LPSolve в своем приложении. Может, у кого-то есть опыт работы с командами LPSolve в своем коде? Информация в основном на английском. Я пока научилась только в своем приложении запускать экзешник и выводить в файл. Но как-то это не гибко.


Вывод:

Value of objective function: 0.13445992

Actual values of the variables:
ksi 0.13446
x12 7.55973e-006
x13 7.125e-006
x14 7.875e-006
x15 7.875e-006
x22 4.011e-006
x23 8.001e-006
x24 1.1928e-005
x25 1.57185e-005
x31 7.125e-006
x32 7.875e-006
x33 7.875e-006
x34 7.125e-006
x35 7.73471e-006

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group