Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

Симплексный метод   Найти похожие ветки 

 
Nick-From ©   (2004-03-26 13:01) [0]

Народ, есть программка или компонент у кого, чтоб эту муть решать?


 
Ega23 ©   (2004-03-26 13:06) [1]

Яндекс - найдётся всё!!!


 
Blackweber ©   (2004-03-26 13:29) [2]

Excel - у нас в институте лабы по Симплекс-методу


 
Ega23 ©   (2004-03-26 13:39) [3]

Blackweber ©   (26.03.04 13:29) [2]

Кстати - да, если это разовая лаба для ВУЗаб то лучше Excel не найдёшь. А если на работе потребовалось такой алгоритм втюхивать, то тебе программка готовая не поможет. По-любому самому разбираться придётся.


 
ИМХО ©   (2004-03-26 13:39) [4]

TSimplexMethod - на торри.


 
Nick-From ©   (2004-03-26 13:46) [5]

Ну да, я знаю, там типа такая фича есть - решатель по-моему нызывается. Но мне надо именно самому реализовать, т.к. решатель не сильно функциональный. Только что сказали, что можно решить комбинаторикой (генерить сочетания), но я не уверен.

В чем задача - Задача рационального распределения ресурсов.
Постановка задачи:
Есть n альтернатив (X1, X2, ... ,Xn) - ну например проекты, на которые планируется потратить бюджет организации.
Каждая альтернатива имеет свою стоимость - c (cost) и вес (приоритет, прибыльность) - b (benefit).
Есть бюджет - Sum - который и пойдет на финансирование этих альтернатив. Но он как правило меньше суммарной стоимости всех альтернатив. Отсюда и задача:

c1X1 + c2X2 + ... + ciXi + ... + cnXn <= Sum
b1X1 + b2X2 + ... + biXi + ... + bnXn -> Max
Xi = 0 или Xi = 1

Т.е. надо максимизировать прибыль, не выходя за рамки бюджета. Такую задачу и Excel и комбинаторика может решить - согласен.
Но нужно предусмотреть такие ограничения еще:

1. Xi - обязательно должна быть профинансирована.
2. Xi, Xj, ... , Xk - обязательно должны быть профинансированы.
3. Xm - обязательно должна быть НЕ профинансирована.
4. Xm, Xs, ... , Xf - обязательно должны быть НЕ профинансированы.
5. Скажем 2 и 4 сразу.

6. И условия группирования альтернатив - скажем объединяем альтернативы Xm, Xs, ... , Xf в группу и говорим, что только одна из альтернатив этой группы должна быть профинансирована.

Как решить? Седня пятница как раз, можт кто подскажет?


 
ИМХО ©   (2004-03-26 13:52) [6]

Тяпница как раз... грех не выпить... а то люди не поймут...


 
TUser ©   (2004-03-26 14:02) [7]

А альтернатив много? Если не очень, то прямой перебор поможет. Я первым делом подумал о рекурсии - на каждом шаге определяем все возможные проекты, которые можно сейчас добавить и передаем в само себя массив уже профинансированных альтернатив + массив еще не профинансированных. Там снова определяем все альтернативы, которые можно провинансировать на новом этапе работы и т.д. Прокатит, если альтернатив меньше тысячи. Если больше - надо думать о конкретных особенностях задачи и искать, на чем бы съэкономить. Вот так.


 
}|{yk ©   (2004-03-26 14:19) [8]

не мучайся в Excel все есть. Поиск решения посмотри - все классно и быстро решается. Можно написать макрос, выбрасывать в Excel и там запускать этот макрос. У меня книжка есть решение математических задач в Excel, тоненькая, но написано доходчиво. Правда, если перед этим прослушаешь курс мат. программирования


 
}|{yk ©   (2004-03-26 14:22) [9]

А вообще то гоню. У меня есть такая програмка. Мы спорили с со знакомыми , они написали симплекс метод на С++Bulder с использованием STL, а я решил ту же задаче в Excel. Правда у них это заняло месяц, а у меня два часа. Но они оформили это потом как курсовой. Эта програмка с исходниками у меня есть.


 
Sewix ©   (2004-03-26 15:12) [10]

вам нужны исходники программы
или просто нужно просто решить?
я делал курсовую "Симплексный метод с искусственным базисом" на Borland С++ 3.1. Если надо могу выслать на мыло


 
Nick-from ©   (2004-03-26 17:05) [11]

2 TUser © :) Трижды читал - не понял. Объясни по-подробнее пожалуйста. Я тоже думаю, что можно перебором решить. Альтернатив в идеале: 5-15, ну 20 шт. Ну даже если 50. Я так думал - без рекурсии:
1. Будем генерить все возможные сочетания альтернатив.
2. Из этих сочетаний отбираем те, которые подпадают под условие: c1X1 + c2X2 + ... + ciXi + ... + cnXn <= Sum
3. Из выбранных сочетаний выбираем те, которые удовлетворяют оставшимся условиям (не придумал пока как именно).
4. Из получившихся сочетаний ищем, то, которое дает максимум.
Ну в общем матрица получится, которая будет строки терять по мере прохождения алгоритма.

2 }|{yk © Excel уже читаю. Вышли прогу свою пожалуйста. Мне надо сделать двумя способами - в самой моей программе и с выгрузкой в Excel.

2 Sewix © Если не трудно, вышли пожалуйста, я в C не секу, но можт по теории разберусь.

А можт кто видел прогу Expert Choice, там есть такой модуль - Resources Aligner - мне надо такое же написать :)


 
Nick-From ©   (2004-03-27 15:30) [12]

up


 
TUser ©   (2004-03-27 19:39) [13]

Вот мать провайдера. Написал ответ - а mtu его не отправл [beep]. Короче, второй раз писать ланиво. Надо создать два массива - для хранения всех переменных и для хранения индексов тех, кто уже отобран. На вход получаем пустой массив. Стоимость -0. Далее делаем цикл по всем элементам. Определяем, можно ли их сейчас добавить в соотвествии с твоими правилами. сли можно - формируем массив из тех элементов, которые уже получены + данный. Передаем через рекурсию. Получаем результат. Для остальных элементов - также, минимум запопинаем. Массива передаваить черех var, тогда вместе с минимумом получим готовое значение массива. Для ускорения процесса можно передавать еще найденный в предыдущих переборах минимум (для первого вызова - просто все имеющиеся в распоряжении бабки) и при переборе не учитывать те варианты, стоимость которых + переданный свыше минимум больше максимума или больше минимума, найденного на пердыдущих итерациях перебора на данном уровне. Хотя для 15-ти вариантов такое ускорение несущественно.

PS. Сколько платят за такую работу? Я не программер, таких штук не далал, мне просто интересно.


 
Nick-from ©   (2004-03-28 18:26) [14]

Не, перебором и рекурсией не катит. Долго очень...
Никакой TSimplexMethod я не нашел.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.037 c
3-1080102227
Oldster
2004-03-24 07:23
2004.04.18
Информация о базе данных


1-1080722688
Eduard
2004-03-31 12:44
2004.04.18
Регулярные выражения


14-1080030832
Алексей
2004-03-23 11:33
2004.04.18
Где взять


3-1080059869
neVIP
2004-03-23 19:37
2004.04.18
Маркировка ячйки DBGrid


7-1076832791
yorik
2004-02-15 11:13
2004.04.18
Подсказка в трее.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский