GTx1 a mesternél · olivierzachGTx1 · GitHub
A GitHub több mint 50 millió fejlesztőnek ad otthont, amelyek együttesen működnek együtt kódok befogadásában és felülvizsgálatában, projektek kezelésében és szoftverek építésében.

A GitHub az, ahol a világ szoftvereket épít
Fejlesztők és vállalatok milliói építik, szállítják és tartják karban szoftverüket a GitHubon - a világ legnagyobb és legfejlettebb fejlesztői platformján.
GTx_6501/Házi feladat 7/diet_optimization_part2.py /
Nem található definíció ebben a fájlban.
- Ugrás a T fájlra
- Menj az L sorra
- Menj az R definícióhoz
- Útvonal másolása
| " " |
| ISYE6501 - Haladó elemzési modellezés |
| 15.2. Kérdés |
| A videókban láttuk a „diétás problémát”. |
| (A diétás probléma az egyik első nagyszabású optimalizálási probléma |
| a gyakorlatban tanult. Még az 1930-as és 40-es években a hadsereg találkozni akart a |
| a katonák táplálkozási szükségletei a költségek minimalizálása mellett.) |
| Ebben a házi feladatban valós adatokkal oldhatja meg a diéta problémáját. |
| Az adatokat a diet.xls fájl tartalmazza. |
| 1. Készítsen egy optimalizálási modellt (egy lineáris programot) a |
| legolcsóbb étrend, amely kielégíti a napi maximális és minimális táplálkozást |
| korlátokat, és oldja meg a PuLP használatával. Írja be a kódot és a megoldást. |
| (Az optimális megoldás a levegőben pattogatott pattogatott kukorica, buggyantott tojás étrendje lehet, |
| narancs, nyers jégsaláta, nyers zeller és fagyasztott brokkoli. UGH!) |
| 2. Kérjük, adja hozzá modelljéhez a következő korlátozásokat |
| (ami további változók hozzáadását igényelheti), és oldja meg az új modellt: |
| a. Ha ételt választanak, akkor legalább 1/10 adagot kell választani. |
| (Tipp: most két változóra lesz szükséged minden egyes ételhez: |
| hogy ezt választják-e, és mennyi része az étrendnek. |
| Az összekapcsoláshoz meg kell írnia egy korlátozást is.) |
| b. Sokan nem szeretik a zellert és a fagyasztott brokkolit. |
| Tehát legfeljebb egy választható ki, de nem mindkettő. |
| c. A fehérje mindennapos változatosságához, |
| legalább 3 féle húst/baromfit/halat/tojást kell kiválasztani. |
| [Ha valami kétértelmű (pl. Figyelembe kell venni a bab- és szalonnalevest? |
| Létrehozva: 2018. július 2., hétfő 19:29:56 |
| @author: zacholivier |
| 2. rész |
| " " |
| # töltse be a szükséges könyvtárakat |
| #! pip install cellulóz |
| cellulózimportból * |
| import pandák, mint pd |
| # töltse be az étrend adatait |
| df = pd. read_excel ( |
| nyisd ki ( |
| '/ Felhasználók/zacholivier/Asztal/GTX/Házi feladat 7/dietSummer2018.xls', |
| „rb” |
| ), |
| sheet_name = 'Sheet1' |
| ) |
| # nézze meg az adatokat |
| df. fej () |
| # tiszta adat - vegye az első 64 sort az alsó adatok nélkül |
| adatok = df [0: 64] |
| # konvertálás listára "lista a listán belül" |
| adatok = adatok. értékek. tolist () |
| # fő ételek szótár létrehozása |
| ételek = [x [0] x adatokhoz] |
| kalória = dict ([(x [0], float (x [3])) x-re az adatokban]) |
| koleszterin = dict ([(x [0], float (x [4])) x-re az adatokban]) |
| totalFat = dict ([(x [0], float (x [5])) x adatokhoz]) |
| nátrium = dict ([(x [0], float (x [6])) x adatokhoz]) |
| szénhidrát = dict ([(x [0], float (x [7])) x adatokhoz]) |
| rost = dict ([(x [0], float (x [8])) x-re az adatokban]) |
| protien = dict ([(x [0], float (x [9])) x adatokhoz]) |
| A-vitamin = dict ([(x [0], float (x [10])) x-re az adatokban]) |
| C-vitamin = dict ([(x [0], float (x [11])) x-re az adatokban]) |
| kalcium = dict ([(x [0], float (x [12])) x adatokhoz]) |
| vas = dict ([(x [0], float (x [13])) x adatokhoz]) |
| # lista létrehozása a percekhez és a maximumokhoz (minden étel) |
| amin = [1500, 30, 20, 800, 130, 125, 60, 1000, 400, 700, 10] |
| amax = [2500, 240, 70, 2000, 450, 250, 100, 10000, 5000, 1500, 40] |
| # hozzáfűzi az összes oszlopra vonatkozó korlátozások gyűjteményét |
| B = [] |
| j esetén a (0, 11) tartományban: |
| B. függelék (dict ([(x [0], float (x [j + 3])) x adatokhoz])) |
| # határozza meg a költségszótárat |
| költség = dict ([(x [0], float (x [1])) x adatokhoz]) |
| # hozza létre az optimalizálási probléma keretrendszerét - minimalizálási probléma |
| problem2 = LpProblem ('PuLPTutorial', LpMinimize) |
| # definiálja a változókat - folytonos |
| foodVars = LpVariable. dict ("ételek", ételek, 0) |
| # definiálja a bináris változókat |
| selectedVars = LpVariable. dikciók ("Kiválasztott", ételek, 0, 1, "Bináris") |
| # lp változók szótára |
| x = LpVáltozó. dikciók ("x", ételek, 0) |
| # definiálja a célfüggvényt |
| probléma2 + = lpSum ([költség [f] * foodVars [f] az élelmiszerekben szereplő f)] |
| # add a korlátozások összege nagyobb, mint 0,1 vagy kisebb, mint a nagy összeg - ha kiválasztják |
| f élelmiszerekben: |
| probléma2 + = foodVars [f] 10000 * választottVars [f] |
| probléma2 + = foodVars [f]> = .1 * választottVars [f] |
| # korlátozások hozzáadása az összes ételhez |
| i-re a (0, 11) tartományban: |
| dot_B_x = pép. lpSum ([B [i] [j] * foodVars [j] az j ételekben]] |
| feltétel1 = amin [i] + pont_B_x |
| probléma2 + = feltétel1 |
| i-re a (0, 11) tartományban: |
| dot_B_x = pép. lpSum ([B [i] [j] * foodVars [j] az j ételekben]] |
| feltétel2 = amax [i]> = + pont_B_x |
| probléma2 + = feltétel2 |
| # adjon hozzá olyan korlátozásokat, amelyek legfeljebb egy ételcsoport egyikét fogyasztják |
| probléma2 + = választott változatok ['Fagyasztott brokkoli'] + \ |
| selectedVars ['Zeller, Nyers'] 1, 'Legfeljebb egy brokkoli/Zeller' |
| # adjon hozzá olyan korlátozásokat, amelyek szerint legalább 1 ételt kell megennünk az ételcsoportból |
| probléma2 + = selectedVars ['Sült csirke'] + selectedVars ['Buggyantott tojás'] + \ |
| selectedVars ['Rántották'] + selectedVars ['Frankfurter, marhahús'] + \ |
| selectedVars ['Kielbasa, Prk'] + selectedVars ['Hamburger W/Toppings'] + \ |
| selectedVars ['Hotdog, Plain'] + selectedVars ['Pork'] + \ |
| selectedVars ['Bologna, Turkey'] + selectedVars ['Sonka, szeletelt, Extralean'] + \ |
| selectedVars ['Fehér tonhal a vízben'] \ |
| > = 3, "Legalább három fehérje" |
| # megoldja az optimalizálási problémát! |
| probléma2. megoldani () |
| # nyomtassa ki az optimális étrendet tartalmazó ételeket |
| print ('Optimalizálási megoldás:') |
| a var problémára2. változók (): |
| ha var. varValue> 0: |
| ha str (var). find ('Kiválasztott'): |
| print (str (var. varValue) + "egységek" + str (var)) |
| # nyomtassa ki az optimális étrend költségeit |
| print ("Az élelmiszer teljes költsége = $%. 2f"% érték (2. probléma. cél)) |
- Sorok másolása
- Másolja a permalinket
- Tekintse meg a hibát
- Hivatkozás az új számban
Jelenleg nem hajthatja végre ezt a műveletet.
Egy másik füllel vagy ablakkal jelentkezett be. Töltse be újra a munkamenet frissítéséhez. Kijelentkezett egy másik fülön vagy ablakban. Töltse be újra a munkamenet frissítéséhez.