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, Супермодераторы



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

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


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

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