Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2015 19:27:47

alexandralexandr
Зарегистрирован: 2015-03-05
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Я совсем новичек в питоне и вот такая проблема не могли бы помочь.

def T_task(Z, U, C, addition):
X = [ for i in Z]


max_el = max() + 1

plan_ready = 0

while plan_ready==0:

min_el = max_el
min_i = -1
min_j = -1

for i in range(0, len(Z)):
for j in range(0, len(U)):
if X==0 and C < min_el:
min_el = C
min_i = i
min_j = j

X = min(Z, U)

Z -= X
U -= X

if Z == 0:
X = ]

if U == 0:
for i in X:
i = (-1 if i==0 else i)

plan_ready = 1
for i in X:
for j in i:
if j==0:
plan_ready = 0


for i in range(0, len(Z)):
for j in range(0, len(U)):
if X == -1:
X = 0


#Начальный план найден

while True:
#Определяем потенциалы
A =
B =

A = 0

not_zero_elems = 0
for i in range(0, len(Z)):
for j in range(0, len(U)):
if X != 0:
not_zero_elems += 1

epsilons = len(A)+len(B)-1-not_zero_elems

def set_betas(i):
nonlocal epsilons
potencials_seted = 0
for j in range(0, len(C)):
if X!=0 and B==None:
B = C - A
set_alphas(j)
potencials_seted += 1
if potencials_seted==0 and epsilons>0:
for j in reversed(range(0, len(C))):
if X==0:
X = ‘e’
epsilons -= 1
B = C - A
set_alphas(j)
break


def set_alphas(j):
nonlocal epsilons
potencials_seted = 0
for i in range(0, len(C)):
if X!=0 and A==None:
A = C - B
set_betas(i)
potencials_seted += 1
if potencials_seted==0 and epsilons>0:
for i in reversed(range(0, len(C))):
if X==0:
X = ‘e’
epsilons -= 1
A = C - B
set_betas(i)
break

set_betas(0)

#Потенциалы определены

#Подсчитываем псевдостоимость и определяем оптимален ли план

pC = [ for i in A]

start_i = -1
start_j = -1

for i in range(0, len(Z)):
for j in range(0, len(U)):
if pC>C:
start_i=i
start_j=j

if start_i == -1:
L = 0
for i in range(0, len(Z)-addition):
for j in range(0, len(U)):
if X!='e':
L += X*C
else:
X = 0

return (L, X)

#Цикл пересчёта

def cicle_gor(points):
i, j_was = points
for j in range(0, len(X)):
if i == start_i and j == start_j:
return points.copy()
if j!=j_was and X!=0:
cicle = cicle_vert(points.copy()+)
if cicle != None:
return cicle
return None

def cicle_vert(points):
i_was, j = points
for i in range(0, len(X)):
if i == start_i and j == start_j:
return points.copy()
if i!=i_was and X!=0:
cicle = cicle_gor(points.copy()+)
if cicle != None:
return cicle
return None

cicle = cicle_gor()

#Цикл найден
#Пересчитываем таблицу

o = min([ X for i,j in cicle ])

for i,j in cicle:
X+=o

for i,j in cicle:
X-=o


#Таблица пересчитанна


def ui():
Z_num = int(input('Введите колличество районов производства:'))
Z =
for i in range(Z_num):
Z.append(int(input('Введите объём производства ‘+str(i+1)+’-го района:')))

P_num = int(input('Введите колличество пунктов потребления:'))
P =
for j in range(P_num):
P.append(int(input('Введите объём потребления ‘+str(j+1)+’-го пункта:')))



C = [ for i in Z]

for i in range(len(Z)):
for j in range(len(P)):
C = int(input('Введите затраты на перевозку из ‘+
str(i+1)+’-го района в ‘+
str(j+1)+’-й пункт:'))

r=
for j in range(len(P)):
r.append(int(input('Введите величину ущерба из-за невыполнения запроса ‘+str(j+1)+’-го пункта:')))

C.append(r)
Z.append(5)

L, X = T_task(Z, P, C, 1)


print('Издержки: ‘+str(L))
print(’Оптимальный план:')
for i in range(Z_num):
for j in range(P_num):
print(str(X) + ‘ единиц объёма ’+
str(i+1)+'-го района перевезти в ‘+
str(j+1)+’-й пункт')
for j in range(P_num):
u = X
if u=='e':
u=0
print('Ущерб из-за невыполнения запроса ‘+str(j+1)+’-го пункта:'+str(u))



ui()

#P = #производительность
#Z = #план


#C = [ ,
# ,
# ,
# ]

вот ошибка которую выдает,НО выдает при введение каких то определенных данных,такое чувство что выше какого-то порога
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) on win32
Type “copyright”, “credits” or “license()” for more information.
>>> ================================ RESTART ================================
>>>
Введите колличество районов производства:3
Введите объём производства 1-го района:2
Введите объём производства 2-го района:1
Введите объём производства 3-го района:2
Введите колличество пунктов потребления:1
Введите объём потребления 1-го пункта:8
Введите затраты на перевозку из 1-го района в 1-й пункт:2
Введите затраты на перевозку из 2-го района в 1-й пункт:2
Введите затраты на перевозку из 3-го района в 1-й пункт:1
Введите величину ущерба из-за невыполнения запроса 1-го пункта:1
Traceback (most recent call last):
File “C:\Users\Александр\Downloads\kurs.py”, line 215, in <module>
ui()
File “C:\Users\Александр\Downloads\kurs.py”, line 197, in ui
L, X = T_task(Z, P, C, 1)
File “C:\Users\Александр\Downloads\kurs.py”, line 106, in T_task
pC = [ for i in A]
File “C:\Users\Александр\Downloads\kurs.py”, line 106, in <listcomp>
pC = [ for i in A]
File “C:\Users\Александр\Downloads\kurs.py”, line 106, in <listcomp>
pC = [ for i in A]
TypeError: unsupported operand type(s) for +: ‘NoneType’ and ‘int’
>>>

Офлайн

#2 Март 5, 2015 20:04:45

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Я совсем новичек в питоне и вот такая проблема не могли бы помочь.

Надо обратить код в теги. без этого сложно понять



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#3 Март 5, 2015 21:08:24

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Я совсем новичек в питоне и вот такая проблема не могли бы помочь.

Транспортная задача. Эх молодость, молодость

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version