2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Линейное программирование в MathCad
Сообщение21.11.2009, 14:50 
Аватара пользователя


18/11/09
7
Использую 14-ю версию (14.0.3.374). Делаю всё по туториалу. Ввел все ограничения, но минимум не находится. В чём ошибка? Я что-то упустил?
Изображение

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение21.11.2009, 15:03 
Заслуженный участник


11/05/08
32166
Я не разбираюсь в Маткаде, но. У Вас восемь переменных, ограничений же -- всего семь. Маловато будет. Даже для двух переменных надобно три ограничения, чтобы выделить ограниченную область.

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение21.11.2009, 15:57 
Аватара пользователя


02/03/08
176
Netherlands
У вас функция должна быть от всех $x_i$, и потом не $Minimize(f,a)$, а $Minimize(f,x_1,...)$ Чтобы облегчить жизнь MathCad-у перед Given можно задать ожидаемые $x_i$ (как вы сделали только с $x_0$).

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение21.11.2009, 16:17 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Тема переносится из математического раздела в соответствующий подраздел CS.

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение21.11.2009, 16:21 
Аватара пользователя


18/11/09
7
Dimoniada, спасибо, исправил и внес изменения. Теперь вот что пишет:
Изображение
Будут мысли? :)

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение21.11.2009, 21:25 


02/11/08
1193
А Вы уверены, что область допустимых значений не пустая? Проверьте. Скажем я выбрасываю одно из равенств в Вашей системе ограничений и решение находится в Маткаде. И еще я задавал в начале $x_8=0$.

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение22.11.2009, 01:54 
Аватара пользователя


18/11/09
7
Yu_K, спасибо. Перепроверил: равенства были неверно записаны. И тем не менее, ошибка не исчезла. Область пустой по идее быть не должна - т.к. это учебная задача, в которой нам на перед сообщили что решение есть.

Удивительно, но даже убрав все равенства программа по прежнему выдает ошибку. Скажите, как вы решаете? Возможно, я что-то принципиальное упускаю? Может у меня блок Given не верно работает? На сколько я понял, в MathCAD есть math region и text region. В Help'е сказано что Given должен быть написан в math region, но та и не разобрался в этом, и просто на листе написал Given...

Вот скриншот после исправления ошибки и исключения всех ограничений-равенств:
Изображение

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение22.11.2009, 06:10 


02/11/08
1193
У меня 11.02 версия - листинг от вашего отличается только векторной записью $Minimize(f,x)$. А проверить пустая или нет область поручите Маткаду - используйте $Find(x)$ - вместо $Minimize$. Поиск решения в Excel можете попробовать. Ну и лучше выложить документ на http://collab.mathsoft.com/~Mathcad2000 - будет быстрее.

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение22.11.2009, 16:35 
Аватара пользователя


18/11/09
7
Yu_K, спасибо. Запись так-же изменил на $Minimize(f,x)$, опять убрал одно огрничение - и внезапно всё действительно посчиталось... Но, т.к. мне нужно всё-таки его учитывать, постает другая проблема - может я неверно математически формализовал исходное условие?

Вы разбираетесь в линейном программировании? Не могли бы помочь (проверить)? Задача звучит так:
Предприятию необходимо выполнить $n$ видов изделий $P_{1}..P_{n}$ в количестве $N_{1}..N_{n}$ штук. Для этой цели используется $m$ типов станков $T_{1}..T_{m}$, каждый из которых может обработать изделие любого типа $P_{i}$. Производительность (кол-во изделий, обрабатываемых за еденицу времени) имеет величину $a_{i,j}$; себестоимость каждого изделия при обработке на том или ином станке имеет величину $c_{i,j}$. Запас мощности (рабочее время) каждого станка составляет $b_{1}..b_{m}$ едениц времени соотсветственно.

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


А вот условие:
Изображение

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение22.11.2009, 16:52 


02/11/08
1193
Вникать в суть задачи не очень хочется... проверьте есть хоть одна точка в системе ваших ограничений -

Yu_K в сообщении #264313 писал(а):
А проверить пустая или нет область поручите Маткаду - используйте $Find(x)$ - вместо $Minimize$. Поиск решения в Excel можете попробовать.

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение22.11.2009, 17:21 
Аватара пользователя


18/11/09
7
Yu_K, спасибо. Когда убираю какое-то ограничение (иногда не одно) - $Find(x)$ находит точку. Осталось только узнать, верно ли я составляю задачу... Тем не менее - спасибо вам большое, вы натолкнули меня на правильные мысли! :)

 Профиль  
                  
 
 Re: Линейное программирование в MathCad
Сообщение22.11.2009, 19:34 


02/11/08
1193
Есть методы поиска начального допустимого базисного решения и посмотрите описание симплекс-метода, там обычно такие методы описаны строго.

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

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



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

Сейчас этот форум просматривают: DariaRychenkova


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

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