Не уверен, что вы можете уменьшить сложность, но вы можете сократить время внутренних циклов.
u != v
на внешнем уровне, не выполняйте внутренние циклы, просто чтобы убедиться, что ничего не поделаешь , как это (для последнего условия)
sorted_experts = sorted(Experts)
for p1 in projects:
for u1 in Skills:
for v1 in Skills:
if u1!=v1: # do this check here
for ei,i1 in enumerate(sorted_experts):
for ej in range(ei+1,len(sorted_experts)):
j1 = sorted_experts[ej] # no need to test for indices
ycond = y[i1,u1,j1,v1,p1] # cache your condition variables
zcond = z[i1,u1,j1,v1,p1]
w = Wp[p1]
m.addConstr( ycond <= zcond )
m.addConstr( ycond <= w )
m.addConstr( ycond >= zcond + w - 1 )
Да, согласно Java API - это - константа, которую Вы ищете.
Для получения символьного типа используйте Character.getType(c)
статический метод, как так:
char c = '$';
System.out.println(Character.getType(c) == Character.CURRENCY_SYMBOL);
// prints true