小编Lar*_*610的帖子

返回主视图控制器时,"仍然需要自动布局..."崩溃

我的应用程序启动了一个主菜单,它是被UIViewController调用的自定义子类LVSMainViewController.它嵌入在UINavigationController故事板中设置为初始VC的a中.LVSMainViewController实施-viewDidLayoutSubviews.

点击按钮会将用户带到应用程序的不同部分(不同的VC).用户通过连接到推送segue的按钮返回主菜单.但是,当应用程序再次加载主菜单VC时,它会崩溃并显示以下消息:

2014-08-28 16:11:14.122*断言失败 - [UIView layoutSublayersOfLayer:],/ SourceCache/UIKit_Sim/UIKit-2935.137/UIView.m:8803

2014-08-28 16:11:14.257*由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'将-viewDidLayoutSubviews发送到视图控制器后仍需要自动布局.LVSMainViewController的实现需要将-layoutSubviews发送到视图以调用自动布局.

SO上的其他帖子在以编程方式设置自动布局约束时报告相同的错误(我没有这样做,虽然我在故事板中使用自动布局)和/或使用时UITableView(我在主菜单VC中没有使用)或者它所代表的VC,尽管我在应用程序的其他地方使用它).(见这里这里.)

其他拼图:

  1. 我试着[self.view layoutSubviews];在最后添加-viewDidLayoutSubviews.当我这样做时它不会崩溃.但似乎是不明智的,因为苹果的文件说,

    您不应该直接调用此方法.如果要强制进行布局更新,请在下次绘图更新之前调用setNeedsLayout方法.

  2. 如果我[self.view setNeedsLayout];在最后添加-viewDidLayoutSubviews,应用程序崩溃,首先加载主菜单VC,而不是当我离开它并返回.

可能是什么造成的?

exception ios autolayout

6
推荐指数
2
解决办法
3113
查看次数

TSP,算法陷入局部最小值

我正在努力实现基于模拟退火的程序来解决旅行商问题。我得到的所有解决方案都不令人满意,我也不知道如何改善实施。显然,我不是在关注基准,而只是在寻找视觉上可接受的最短路径。如果有人能启发我,我将不胜感激。

# weight function, simple euclidean norm
def road(X,Y):
    sum = 0
    size = len(X) -1
    for i in range(0,size):
        sum +=math.sqrt((X[i]-X[i+1])**2 + (Y[i]-Y[i+1])**2)

    return sum   

def array_swap(X,Y,index_1,index_2):
    X[index_1],X[index_2] = X[index_2],X[index_1]
    Y[index_1],Y[index_2] = Y[index_2],Y[index_1]


def arbitrarty_swap(X,Y):
    ran = len(X)-1
    pick_1 = random.randint(0,ran)
    pick_2 = random.randint(0,ran)

    X[pick_1],X[pick_2] = X[pick_2],X[pick_1]
    Y[pick_1],Y[pick_2] = Y[pick_2],Y[pick_1]

    return pick_1, pick_2

N = 40

X = np.random.rand(N) * 100
Y = np.random.rand(N) * 100


plt.plot(X, Y, '-o')
plt.show()


best = road(X,Y)
X1 = X.copy()
Y1 = Y.copy() …
Run Code Online (Sandbox Code Playgroud)

python simulated-annealing traveling-salesman

3
推荐指数
1
解决办法
251
查看次数

MATLAB tic/toc中的被调用函数

在MATLAB中,我想为其他人编写的函数计时,它们的函数可能使用tic/ tocinternal.我想要自己的tic/ toc.但是如果内部函数调用tic,那么外部计时器将被重置.

我怎么能避免这个?我不想使用timeit因为timeit会多次调用内部函数,这是我不想要的.

MWE:

外部脚本:

tic

inner_function()

elapsed_time = toc;

fprintf('Function took %f seconds\n', elapsed_time)
Run Code Online (Sandbox Code Playgroud)

内功能:

function [] = inner_function()

    pause(2)

    tic
    toc

end
Run Code Online (Sandbox Code Playgroud)

然后:

>> outer_script
Elapsed time is 0.000024 seconds.
Function took 0.000232 seconds
Run Code Online (Sandbox Code Playgroud)

如果您注释掉tic/ tocinner_function()你这一点,这就是我想要的:

>> outer_script
Function took 2.000362 seconds
Run Code Online (Sandbox Code Playgroud)

只是为了更多的上下文,外部脚本是我的,我用它来测试我的学生写的函数.我想允许他们在他们的代码中使用tic/ toc但是他们想要,但我也希望能够独立地为他们的代码计时.

matlab timer

2
推荐指数
1
解决办法
736
查看次数

从 if-else 语句构建 MILP 约束

我需要从这个 if-else 语句构建一个 MILP(混合整数线性规划)约束:其中 beta 是一个常量。

if (a > b) then c = beta else c = 0
Run Code Online (Sandbox Code Playgroud)

如何构建 MILP 约束的语句。有没有什么技术可以解决这个问题。谢谢。

linear-programming integer-programming mixed-integer-programming

1
推荐指数
1
解决办法
4778
查看次数

MATLAB避免在命令窗口中进行矩阵包装

有没有办法阻止MATLAB在命令窗口中显示矩阵时将矩阵包装成多个块?这就是我的意思:

>> x = rand(10,1);
>> y = rand(10,1);
>> c = squareform(pdist([x y]))

c =

  Columns 1 through 6

         0    0.9160    0.4707    0.7161    0.6093    0.1555
    0.9160         0    0.8495    0.8984    0.6463    1.0714
    0.4707    0.8495         0    0.2459    0.2477    0.5541
    0.7161    0.8984    0.2459         0    0.2603    0.7970
    0.6093    0.6463    0.2477    0.2603         0    0.7306
    0.1555    1.0714    0.5541    0.7970    0.7306         0
    0.0881    0.9695    0.4311    0.6762    0.6012    0.1295
    0.4698    0.4566    0.4587    0.6057    0.3612    0.6245
    0.2442    1.1079    0.7006    0.9460    0.8534    0.1629
    0.8282    0.1355    0.7200    0.7629    0.5114    0.9832 …
Run Code Online (Sandbox Code Playgroud)

matlab matrix

0
推荐指数
1
解决办法
305
查看次数