модуль симплекс-метод
Текущий рейтинг темы: Нет
Zanabazar
Новичок
Всего сообщений: 3 Рейтинг пользователя: 0
Дата регистрации на форуме: 6 мая 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 6 мая 2005 17:27
Кто нибудь, кто юзал этот модуль, скажите у Вас работает объект TIntSimplex | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 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
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 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
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 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.0597. Количество выполненных запросов: 19, время выполнения запросов 0.0469
|