GTx1 при главен · olivierzachGTx1 · GitHub
GitHub е дом на над 50 милиона разработчици, които работят заедно за хостване и преглед на код, управление на проекти и изграждане на софтуер заедно.

GitHub е мястото, където светът създава софтуер
Милиони разработчици и компании изграждат, доставят и поддържат своя софтуер на GitHub - най-голямата и най-модерна платформа за развитие в света.
GTx_6501/Домашна работа 7/diet_optimization_part2.py /
Няма дефиниции в този файл.
- Отидете на файл T
- Отидете на ред L
- Отидете на определение R
- Копирайте пътя
| " |
| ISYE6501 - Разширено моделиране на Google Анализ |
| Въпрос 15.2 |
| Във видеоклиповете видяхме „проблема с диетата“. |
| (Проблемът с диетата е един от първите мащабни проблеми с оптимизацията, които ще бъдат |
| учи на практика. Още през 30-те и 40-те армията искаше да се срещне с |
| хранителни нужди на своите войници, като същевременно минимизират разходите.) |
| В тази домашна работа можете да решите диетичен проблем с реални данни. |
| Данните са дадени във файла diet.xls. |
| 1. Формулирайте оптимизационен модел (линейна програма), за да намерите |
| най-евтината диета, която задоволява максималното и минималното ежедневно хранене |
| ограничения и го разрешете с помощта на PuLP. Включете кода и решението. |
| (Оптималното решение трябва да бъде диета от пуканки с въздух, пукани яйца, |
| портокали, сурова маруля айсберг, сурова целина и замразени броколи. UGH!) |
| 2. Моля, добавете към вашия модел следните ограничения |
| (което може да изисква добавяне на повече променливи) и решаване на новия модел: |
| а. Ако е избрана храна, тогава трябва да бъде избрана минимум 1/10 порция. |
| (Съвет: сега ще ви трябват две променливи за всяка храна i: |
| дали е избран и колко е част от диетата. |
| Също така ще трябва да напишете ограничение, за да ги свържете.) |
| б. Много хора не харесват целина и замразени броколи. |
| Така че може да бъде избран най-много един, но не и двете. |
| ° С. За да получите ежедневно разнообразие от протеини, |
| трябва да бъдат избрани поне 3 вида месо/птици/риба/яйца. |
| [Ако нещо е двусмислено (например, трябва ли да се обмисли супа от боб и бекон |
| Създадено на понеделник 2 юли 19:29:56 2018 |
| @author: zacholivier |
| Част 2 |
| " |
| # заредете необходимите библиотеки |
| #! pip инсталирайте целулоза |
| от внос на целулоза * |
| импортирайте панди като pd |
| # заредете данните за диетата |
| df = pd. read_excel ( |
| отворен ( |
| '/ Users/zacholivier/Desktop/GTX/Домашна работа 7/dietSummer2018.xls', |
| 'rb' |
| ), |
| sheet_name = 'Sheet1' |
| ) |
| # вижте данните |
| df. глава () |
| # чисти данни - вземете първите 64 реда, без да включвате най-долните данни |
| данни = df [0: 64] |
| # конвертиране в списък "списък в списък" |
| данни = данни. стойности . tolist () |
| # създаване на речник на основните храни |
| храни = [x [0] за x в данни] |
| калории = dict ([(x [0], float (x [3])) за x в данни]) |
| холестерол = dict ([(x [0], float (x [4])) за x в данни]) |
| totalFat = dict ([(x [0], float (x [5])) за x в данни]) |
| натрий = dict ([(x [0], float (x [6])) за x в данни]) |
| въглехидрати = dict ([(x [0], float (x [7])) за x в данни]) |
| fiber = dict ([(x [0], float (x [8])) за x в данни]) |
| protien = dict ([(x [0], float (x [9])) за x в данни]) |
| vitaminA = dict ([(x [0], float (x [10])) за x в данни]) |
| vitaminC = dict ([(x [0], float (x [11])) за x в данни]) |
| калций = dict ([(x [0], float (x [12])) за x в данни]) |
| желязо = dict ([(x [0], float (x [13])) за x в данни]) |
| # създаване на списък за мин и максимум (всички храни) |
| амин = [1500, 30, 20, 800, 130, 125, 60, 1000, 400, 700, 10] |
| amax = [2500, 240, 70, 2000, 450, 250, 100, 10000, 5000, 1500, 40] |
| # добавете колекция от контранти за всяка колона |
| B = [] |
| за j в диапазон (0, 11): |
| Б. добавяне (dict ([(x [0], float (x [j + 3])) за x в данни])) |
| # дефинирайте речника на разходите |
| разходи = dict ([(x [0], float (x [1])) за x в данни]) |
| # създайте рамката на проблема за оптимизация - проблем за минимизиране |
| problem2 = LpProblem ('PuLPTutorial', LpMinimize) |
| # дефинирайте променливите - непрекъснато |
| foodVars = LpVariable. диктовки ("храни", храни, 0) |
| # дефинирайте променливите - двоични |
| selectedVars = LpVariable. диктовки („Избрано“, храни, 0, 1, „Двоично“) |
| # речник на lp променливи |
| x = Lp Променлива. диктовки ("x", храни, 0) |
| # дефинирайте целевата функция |
| problem2 + = lpSum ([цена [f] * foodVars [f] за f в храни]) |
| # добавете количество контранти, по-голямо от .1 или по-малко от голямо количество - ако е избрано |
| за f в храните: |
| problem2 + = foodVars [f] 10000 * избранVars [f] |
| problem2 + = foodVars [f]> = .1 * избранVars [f] |
| # добавете ограничения за всички храни |
| за i в обхват (0, 11): |
| точка_B_x = целулоза. lpSum ([B [i] [j] * foodVars [j] за j в храни]) |
| условие1 = амин [i] + точка_B_x |
| проблем2 + = условие1 |
| за i в обхват (0, 11): |
| точка_B_x = целулоза. lpSum ([B [i] [j] * foodVars [j] за j в храни]) |
| условие2 = amax [i]> = + точка_B_x |
| проблем2 + = условие2 |
| # добавете противопоказания, за да ядете най-много една от група храни |
| problem2 + = selectedVars ['Замразени броколи'] + \ |
| selectedVars ['Целина, сурова'] 1, 'Най-много една броколи/целина' |
| # добавете контранти, в които се казва, че трябва да ядем поне 1 от групата храни |
| problem2 + = selectedVars ['Печено пиле'] + selectedVars ['Паширани яйца'] + \ |
| selectedVars ['Разбъркани яйца'] + selectedVars ['Frankfurter, Beef'] + \ |
| selectedVars ['Kielbasa, Prk'] + selectedVars ['Hamburger W/Toppings'] + \ |
| selectedVars ['Hotdog, Plain'] + selectedVars ['Pork'] + \ |
| selectedVars ['Болоня, Турция'] + selectedVars ['Шунка, нарязани, Екстралеан'] + \ |
| selectedVars ['Бял тон във вода'] \ |
| > = 3, „Най-малко три протеина“ |
| # решаване на проблема с оптимизацията! |
| проблем2. решаване () |
| # отпечатайте храните от оптималната диета |
| print ('Решение за оптимизация:') |
| за var в problem2. променливи (): |
| ако вар. varValue> 0: |
| ако str (var). find ('Избран'): |
| print (str (var. varValue) + "единици от" + str (var)) |
| # отпечатайте разходите за оптималната диета |
| print ("Общи разходи за храна = $%. 2f"% стойност (проблем2. цел)) |
- Копиране на редове
- Копирайте постоянната връзка
- Вижте git вината
- Справка в нов брой
Понастоящем не можете да извършите това действие.
Влезли сте с друг раздел или прозорец. Презаредете, за да опресните сесията си. Излязохте от друг раздел или прозорец. Презаредете, за да опресните сесията си.