модуль симплекс-метод
Текущий рейтинг темы: Нет
| Zanabazar
Новичок
Всего сообщений: 3 Рейтинг пользователя: 0
Дата регистрации на форуме: 6 мая 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 6 мая 2005 17:27
Кто нибудь, кто юзал этот модуль, скажите у Вас работает объект TIntSimplex | | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
 Откуда: Москва Всего сообщений: 3029 Рейтинг пользователя: 75 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 6 мая 2005 17:49
У меня лично работал. Хотя однажды мне прислали описание ситуации, когда он зацикливался (как позже выяснилось, из-за накопления погрешности при проверке решения на целые числа).
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | | |
| Zanabazar
Новичок
Всего сообщений: 3 Рейтинг пользователя: 0
Дата регистрации на форуме: 6 мая 2005
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 6 мая 2005 18:45
TSimplex пашет а TintSimplex зацикливается пример max F = X1+X2 при ограничениях -X1+3X2<=3 3X 1- X2<=3 X1,X2 - целые | | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
 Откуда: Москва Всего сообщений: 3029 Рейтинг пользователя: 75 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 7 мая 2005 14:57
Я понял, почему такое происходит, но пока не очень понимаю, как с этим бороться (тут разбираться надо). А происходит такое из-за идеальной симметрии задачи и неоднозначности ее решения: тут возможны 2 варианта решения: (2,1) и (1,2). Короче, вечером попробую еще посмотреть...
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | | |
| ipu
Новичок
Всего сообщений: 1 Рейтинг пользователя: 0
Дата регистрации на форуме: 15 мая 2007
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 15 мая 2007 16:56 Сообщение отредактировано: 15 мая 2007 16:57
У тебя метод Гомори не работает вообще, пробовал на нескольких примерах, даже на элементарных, прорешанных вручную.!!! | | | |
| Zerocool
Новичок
Всего сообщений: 2 Рейтинг пользователя: 0
Дата регистрации на форуме: 13 мая 2007
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 17 мая 2007 20:04
люди, помогите плиз!!!!!!!!!!!! У меня дипломная работа: расчет шихты; так вот, там симплексом считается оптимальный состав шихты. т.е. цена X ->min. Составляется список компонентов, т.е. иксов; каждый компонент имеет свой химический состав и по каждому хим. элементу составляется ограничение. С этим все в норме! Есть нюанс: не знаю перед, после расчета, или как, но нужно ,например, что-бы X1=0,4 а X2=0.33. Добавлять ограничение типа: 1*x1+0*x2+0*x3+0*x4=0,4 0*x1+1*x2+0*x3+0*x4=0,338 Получается ошибка с базисом. Я в тупике!!!!!
--- Жизнь-недоработанная "игра", часто патчи устанавливать приходится.
| | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
 Откуда: Москва Всего сообщений: 3029 Рейтинг пользователя: 75 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 17 мая 2007 21:33
ipu, видимо, прав... Советую проверить метод CreateBasis, возможно, ошибка в нем.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | | |
| Fitibaldi
Новичок
Всего сообщений: 1 Рейтинг пользователя: 0
Дата регистрации на форуме: 21 мая 2007
|
Профиль | ИгнорироватьNEW! Сообщение отправлено: 21 мая 2007 19:20 Сообщение отредактировано: 22 мая 2007 13:27
У меня проблема с целочисленом результате ! XXXX Pro, пожалуйста, если у тебя есть ,то пошли мне последную версию TIntSimplex по адресу : teodor .ognianov на сайте gmail .com Когда ввожу :
70*x1 + 30*x2 -> max 10*x1 + 4*x2 <= 40 6*x1 + 4*x2 <= 36
Возвращает : no solution :( но решение есть : 290, x1 = 2, x2 = 5
SetLength(L, 2); L[0] := 70; L[1] := 30; tedko := TIntSimplex.Create(L, true);
SetLength(a, 2); a[0] := 10; a[1] := 4; b := 40; tedko.AddCons(b, a, Less);
SetLength(a2, 2); a2[0] := 6; a2[1] := 4; b := 36; tedko.AddCons(b, a2, Less);
if (tedko.IntSolve = SIMPLEX_DONE) then begin writeln ('solution: ', tedko.getintmin); res := tedko.GetIntSolution;
for i := 0 to Length(res) - 1 do begin writeln ('i [', i, ']= ', res); // readln; end; end else writeln ('no solution');
tedko.Free;
write ('press enter to continue...'); readln;
--- Teodor Ognianov
| | | |
Время выполнения скрипта: 0.3227. Количество выполненных запросов: 18, время выполнения запросов 0.2764
|