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 вината
- Справка в нов брой
Понастоящем не можете да извършите това действие.
Влезли сте с друг раздел или прозорец. Презаредете, за да опресните сесията си. Излязохте от друг раздел или прозорец. Презаредете, за да опресните сесията си.
- Приложение Heli Maman · TechnionYP5779Team5-Diet-Tracker Wiki · GitHub
- КАК РАБОТИ ПЛОЧАТА - Порции Master Порции Master
- Цели, тайни за успех и съвети от Настя Каменски; обицяю, Миу, направи; Блог на талантливия майстор
- Опитах диетата за почистване на Master Beyoncé - & Това се случи - E! На линия
- Как да се храните като майстор по бойни изкуства и да увеличите силата на волята си; Mind Hacks WonderHowTo