Решаване на задача от линейно програмиране по графичен метод – както е илюстрирано

BlogNot. Решаване на задача от линейно програмиране по графичен метод – както е илюстрирано.

Решаване на задача от линейно програмиране по графичен метод - как да илюстрирам в Mathcad?

Теорията е дадена например тук (лекция 3). Имайте предвид, че най-простият графичен метод решава задачата само за две неизвестни с линейна целева функция. Но за да нарисувам на хартия какво се случи, аз лично бих бил твърде мързелив.

Можете да го направите по-умно и по-автоматично, отколкото в примера, например, опитайте се автоматично да щриховате зоната на допустимите решения (ODR), но нека не усложняваме нещо просто.

Ето какъв алгоритъм да направите най-разбираем. Нека вземем класически проблем с линейно програмиране (LP):

Ограниченията върху неотрицателността на x1 , x2 са тривиални, а останалите се определят като функции на 2 променливи r1 , r2 , r3 . За да конструираме линейни графики, съответстващи на тези три ограничения, решаваме ги по отношение на променливата x2 като равенства, получаваме функциите f1(x1) , . f3(x1) :

Нека зададем целевата функция като z(x1,x2), дефинираме всеки 2 различни тестови стойности за нея, Level1 и Level2. Те ще са необходими, за да видите на графиката посоката на нарастване на функцията (векторградиент, перпендикулярен на двете линии и насочен от z(x1,x2)=Ниво1 към z(x1,x2)=Ниво2) :

За да стане по-ясно, нека преминем през двойни комбинации от ограничителни линии f1, f2, f3 и подготвим техните пресечни точки P12, P13, P23 за показване на диаграмата:

Следващата стъпка, всъщност, ще бъде извършена след чертането - трябва да изберете интервала [a,b] по оста X, който е подходящ за показване на областта на допустимите решения, както и всяка начална точка, разположена вътре в многоъгълника, образуван от всички праволинейни ограничения. След това, за надеждност, проверете всичкидали ограниченията за неравенство са изпълнени вътре в полигона ODD. Ако нещо не е изпълнено, първоначалното неравенство ще даде стойност не 1, а 0, което означава, че трябва да щриховате страната на правата линия, противоположна на Seed, ODR полигонът ще бъде отворен. Това не означава, че няма решение, за повече подробности вижте лекцията на първия линк:

Всичко е готово за изграждане на графика, ето колко визуално може да бъде:

В първия раздел на свойствата на диаграмата (можете да влезете в този прозорец, като щракнете двукратно върху диаграмата) са зададени линиите на мрежата, квадратчето за отметка „Същият мащаб“ и опцията „Показване на осите в центъра“. Вторият раздел ("Trace") трябваше да бъде коригиран по-подробно: криви 1 и 2 са червени линии с дебелина съответно 1 и 2, така че да може да се види посоката на градиента. Ако задачата беше минимална, щеше да е необходимо да се движите перпендикулярно на червените линии от дебели към тънки, имаме максимум, което означава от тънки към дебели. Криви 3-5 са черни линии и съответстват на нашите три ограничения. Графики 6-8 - точки със символ "кръг" с размер 3, те ще показват ъглите на полигона ODR. Графика 9 също е точка, изобразява се като лилав квадрат и контролира дали сме избрали правилния Seed. Графиката показва, че решението е точката P13 = (2,3) .

Изтеглете този пример в .zip архив с Mathcad 15 .xmcd документ (44 Kb)