<jupyter_start><jupyter_text>Assignment 3 - Exercise 3<NAME> - 201805995<jupyter_code>prob_statement = """Uma empresa est´a considerando 5 oportunidades de investimento distintas. A sa´ıda de caixa e o valor
presente l´ıquido (VPL) destes investimentos s˜ao dados na tabela abaixo (em milh˜oes de d´olares). A
empresa possui $40 milh˜oes para investimento no instante atual (instante 0); ela estima que em um
ano a partir de agora (instante 1) $20 milh˜oes estar˜ao dispon´ıveis para investimento. Os investimentos
podem ser comprados em qualquer fra¸c˜ao. Neste caso, a sa´ıda de caixa e o VPL s˜ao ajustados na
mesma propor¸c˜ao. Formule e resolva um PL que ajude a empresa a maximizar o VPL que pode ser
gerado investindo nos investimentos 1-5.
"""
def fix_statement(str_statement):
    list_replacements = [("¸c", "ç"), 
                         ("´a", "á"),
                         ("´e", "é"),
                         ("´ı", "í"),
                         ("´o", "ó"),
                         ("´u", "ú"),
                         ("˜a", "ã"),
                         ("˜o", "õ"),
                         ("$", "\\\$")]
    for replacement in list_replacements:
        str_statement = str_statement.replace(replacement[0], replacement[1])
    return str_statement
prob_statement = fix_statement(prob_statement)
print(prob_statement)<jupyter_output>Uma empresa está considerando 5 oportunidades de investimento distintas. A saída de caixa e o valor
presente líquido (VPL) destes investimentos são dados na tabela abaixo (em milhões de dólares). A
empresa possui \\$40 milhões para investimento no instante atual (instante 0); ela estima que em um
ano a partir de agora (instante 1) \\$20 milhões estarão disponíveis para investimento. Os investimentos
podem ser comprados em qualquer fração. Neste caso, a saída de caixa e o VPL são ajustados na
mesma proporção. Formule e resolva um PL que ajude a empresa a maximizar o VPL que pode ser
gerado investindo nos investimentos 1-5.<jupyter_text>Uma empresa está considerando 5 oportunidades de investimento distintas. A saída de caixa e o valorpresente líquido (VPL) destes investimentos são dados na tabela abaixo (em milhões de dólares). Aempresa possui \\$40 milhões para investimento no instante atual (instante 0); ela estima que em umano a partir de agora (instante 1) \\$20 milhões estarão disponíveis para investimento. Os investimentospodem ser comprados em qualquer fração. Neste caso, a saída de caixa e o VPL são ajustados namesma proporção. Formule e resolva um PL que ajude a empresa a maximizar o VPL que pode sergerado investindo nos investimentos 1-5.| Investimentos|1| 2| 3| 4| 5|| --- | --- | --- | --- | --- | --- ||Saída de caixa (instante 0)| 11| 53| 5 |5 |29||Saída de caixa (instante 1) |3 |6| 5| 1 |34||VPL| 13| 16| 10| 14| 39|<jupyter_code>import gurobipy as gp
from gurobipy import GRB, Model
# Create a new model
m = Model("Wyndor_Glass")
# Create variables
x1 = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="investment 1 (share)")
x2 = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="investment 2 (share)")
x3 = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="investment 3 (share)")
x4 = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="investment 4 (share)")
x5 = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="investment 5 (share)")
m.setObjective(x1 * 13 + x2 * 16 + x3 * 10 + x4 * 14 + x5 * 39,
               GRB.MAXIMIZE)
# Add constraints
m.addConstr(x1 * 11 + x2 * 53 + x3 * 5 + x4 * 5 + x5 * 29 <= 40, 'Funds on time 0')
m.addConstr(x1 * 3 + x2 * 6 + x3 * 5 + x4 * 1 + x5 * 34 <= 20, 'Funds on time 1')
m.addConstr(x1 <= 1, 'max share of investment 1')
m.addConstr(x2 <= 1, 'max share of investment 2')
m.addConstr(x3 <= 1, 'max share of investment 3')
m.addConstr(x4 <= 1, 'max share of investment 4')
m.addConstr(x5 <= 1, 'max share of investment 5')

m.optimize()
for v in m.getVars():
    print(f'{v.varName}, {v.x}')

print(f'Obj: {m.objVal}')<jupyter_output>investment 1 (share), 1.0
investment 2 (share), 0.20085995085995084
investment 3 (share), 1.0
investment 4 (share), 1.0
investment 5 (share), 0.2880835380835381
Obj: 51.449017199017206
{'fraction_non_alphanumeric': 0.11720456199951468, 'fraction_numerical': 0.050715845668527056, 'mean_word_length': 3.539647577092511, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '362372', 'license': 'MIT', 'n_tokens_mistral': 1654, 'n_tokens_neox': 1504, 'n_words': 520, 'path': 'L3E3.ipynb', 'repo_name': 'brunokiyoshi/optimization_modelling', 'size': '4136'}