我的应用程序启动了一个主菜单,它是被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,尽管我在应用程序的其他地方使用它).(见这里或这里.)
其他拼图:
我试着[self.view layoutSubviews];
在最后添加-viewDidLayoutSubviews
.当我这样做时它不会崩溃.但似乎是不明智的,因为苹果的文件说,
您不应该直接调用此方法.如果要强制进行布局更新,请在下次绘图更新之前调用setNeedsLayout方法.
如果我[self.view setNeedsLayout];
在最后添加-viewDidLayoutSubviews
,应用程序崩溃,首先加载主菜单VC,而不是当我离开它并返回.
可能是什么造成的?
我正在努力实现基于模拟退火的程序来解决旅行商问题。我得到的所有解决方案都不令人满意,我也不知道如何改善实施。显然,我不是在关注基准,而只是在寻找视觉上可接受的最短路径。如果有人能启发我,我将不胜感激。
# 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) 在MATLAB中,我想为其他人编写的函数计时,它们的函数可能使用tic
/ toc
internal.我想要自己的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
/ toc
在inner_function()
你这一点,这就是我想要的:
>> outer_script
Function took 2.000362 seconds
Run Code Online (Sandbox Code Playgroud)
只是为了更多的上下文,外部脚本是我的,我用它来测试我的学生写的函数.我想允许他们在他们的代码中使用tic
/ toc
但是他们想要,但我也希望能够独立地为他们的代码计时.
我需要从这个 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
有没有办法阻止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)