Hi everyone.
Can you pls help me with python code. I am trying to make an pulp linear programing simplex method. Here is my code:
> import streamlit as st
> import pandas as pd
> from pulp import *
>
> # Load some example data.
>
> data1 = st.cache(pd.read_excel)("ISHRANA_PERADI.xlsx", nrows=68, sheet_name='KRMIVA')
> data2 = st.cache(pd.read_excel)("ISHRANA_PERADI.xlsx", nrows=40, sheet_name='POTREBE_PERADI')
>
> st.write('Odaberite.', data2)
> selected_indices = st.multiselect('Odaberite ishrambeni :', data2.index, key='1')
> selected_rows = data2.loc[selected_indices]
> st.write('### Odabrani ishrambeni program:', selected_rows)
> row_index = selected_indices
> col_index = st.selectbox("Odaberite ogranicenje :", data2.columns, key='2')
>
>
> st.write('Odaberite Ĺľeljena Krmiva.', data1)
> selected_indices = st.multiselect('Odaberite redove:', data1.index, key='3')
> selected_rows = data1.loc[selected_indices]
> st.write('### Odabrani redovi, odnosno:', selected_rows)
>
> new_data = pd.DataFrame(selected_rows)
>
> filtered = st.multiselect("Odaberite parametre:", options=list(new_data.columns), default=list(new_data.columns), key='4')
>
> st.write(new_data[filtered])
> new_data2 = pd.DataFrame(filtered)
>
> decision_variables = []
> for rownum, row in new_data.iterrows():
> variable = str('x' + str(rownum))
> variable = pulp.LpVariable(str(variable), lowBound = 0, upBound = 1, cat= 'Integer')
> decision_variables.append(variable)
>
> print ("Ukupan_broj_decision_variabli: " + str(len(decision_variables)))
> print(decision_variables)
>
> # define the problem
> model = pulp.LpProblem('test',LpMinimize)
>
> objektivnaf = ""
> for rownum, row in new_data.iterrows():
> for i, schedule in enumerate(decision_variables):
> print(schedule)
>
> if len(str(schedule)) == 2:
> print(str(schedule)[1])
> a = str(schedule)[1]
> broj = int(a)
>
> if len(str(schedule)) > 2:
> print(str(schedule)[1])
> print(str(schedule)[2])
> a = str(schedule)[1]
> b = str(schedule)[2]
> broj = int(a + b)
>
> if rownum == broj:
> print("ispunjen")
> formula = row['Cijena']*schedule
> objektivnaf += lpSum(formula)
> model += objektivnaf
>
> print("Optimization function: " + str(objektivnaf))
> st.title("Funkcija je: ")
> st.title(objektivnaf)
>
> def racun(model, key):
> ogra1 = ""
> relation = st.selectbox(f"Odaberite znak {key}:", options=["==","<=", ">="], key="relat")
>
> if relation == "<=":
>
> if 'ME' in filtered:
> for rownum, row in new_data.iterrows():
> print(row)
>
> for i, schedule in enumerate(decision_variables):
> print(schedule)
>
> if len(str(schedule)) == 2:
> print(str(schedule)[1])
> a = str(schedule)[1]
> broj = int(a)
>
> if len(str(schedule)) > 2:
> print(str(schedule)[1])
> print(str(schedule)[2])
> a = str(schedule)[1]
> b = str(schedule)[2]
> broj = int(a + b)
>
> if rownum == broj:
> print("ispunjen")
> cell_value = data2.loc[row_index, col_index]
> print(f"The value at row {row_index} and column {col_index} is {cell_value}")
> st.write(cell_value)
>
> ogra1 = lpSum(row['ME']*schedule) <=cell_value
> model += ogra1
>
> print("Funkcija Ogranicenja: " + str(ogra1))
> st.write("JednaÄŤina OgraniÄŤenja je: ", str(ogra1))
>
> return ogra1
> racun(model, 5)
>
> opci = ["DA", "NE"]
> novagr = st.radio("Odaberite", opci)
> if novagr == "DA":
> racun(model, 5)
when I run it I got this error:
DuplicateWidgetID : There are multiple identical st.selectbox
widgets with key='relat'
.
```
File “C:\Users\BH TELECOM\Documents\Adnan\Kursevi\lineaf\nastavak10.py”, line 112, in
- racun(model, 5)File “C:\Users\BH TELECOM\Documents\Adnan\Kursevi\lineaf\nastavak10.py”, line 71, in racun*
- relation = st.selectbox(f"Odaberite znak ogranicenja {key}:“, options=[”==“,”<=", “>=”], key=“relat”)*
```
How to solve this? What could be a problem? thx in advance everyone.