コード例 #1
0
ファイル: matrix_bander.cpp プロジェクト: maickrau/haplotyper
SupportRenumbering makeBandedSimulatedAnnealing(const std::vector<SNPSupport>& supports, SupportRenumbering start, int iterations, double temperature, double temperatureMultiplier)
{
	SupportRenumbering best = start;
	double bestEnergy = getEnergy(renumberSupports(supports, best));
	SupportRenumbering current = best;
	double currentEnergy = bestEnergy;

    std::mt19937 mt {(size_t)std::chrono::system_clock::now().time_since_epoch().count()};
	std::uniform_real_distribution<double> changeCurrent {0, 1};

	for (int i = 0; i < iterations; i++)
	{
		SupportRenumbering newRenumbering = getNeighbor(current, supports);
		assert(newRenumbering.checkValidity());
		double newEnergy = getEnergy(renumberSupports(supports, newRenumbering));
		if (newEnergy < bestEnergy)
		{
			best = newRenumbering;
			bestEnergy = newEnergy;
			std::cerr << "iteration " << i << " new best " << bestEnergy << "\n";
		}
		if (changeCurrent(mt) < std::min(1.0, exp((currentEnergy-newEnergy)/temperature)))
		{
			current = newRenumbering;
			currentEnergy = newEnergy;
		}
		temperature *= temperatureMultiplier;
	}
	return best;
}
コード例 #2
0
void manager::showTreeGame() {
    std::cout << "showTreeGame()" << std::endl;

//    std::string out = tree_.Print();
    if (gameTreeView) {
        gameTreeView->raise();
        gameTreeView->activateWindow();
        return;
    }
    //create new window
//    std::string out = tree_.Print();
    std::cout << "GTREE" << std::endl
              << tree_.Print()
              << std::endl
              << "END" << std::endl;
    gameTreeView = new GAME_View(tree_);

//    connect();
//    connect();
    connect(this, SIGNAL(movePlayed()), gameTreeView, SLOT(updateTree()));
    connect(gameTreeView, SIGNAL(moveChanged()), this, SLOT(changeCurrent()));
    connect(gameTreeView, SIGNAL(finished(int)), this, SLOT(closeTreeGame()));

    gameTreeView->show();
}
コード例 #3
0
ファイル: moc_mainwindow.cpp プロジェクト: creamy/man-browser
int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QMainWindow::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: changeCurrent((*reinterpret_cast< const QModelIndex(*)>(_a[1]))); break;
        default: ;
        }
        _id -= 1;
    }
    return _id;
}
コード例 #4
0
ファイル: mainwindow.cpp プロジェクト: Rookiee/Qt_Codes
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QStandardItemModel *model = new QStandardItemModel(7, 4, this);
    for (int row = 0; row < 7; ++row) {
        for (int column = 0; column < 4; ++column) {
            QStandardItem *item = new QStandardItem(QString("%1")
                                                    .arg(row * 4 + column));
            model->setItem(row, column, item);
        }
    }
    tableView = new QTableView;
    tableView->setModel(model);
    setCentralWidget(tableView);

    // 获取视图的项目选择模型
    QItemSelectionModel *selectionModel = tableView->selectionModel();
    // 定义左上角和右下角的索引,然后使用这两个索引创建选择
    QModelIndex topLeft;
    QModelIndex bottomRight;
    topLeft = model->index(1, 1, QModelIndex());
    bottomRight = model->index(5, 2, QModelIndex());
    QItemSelection selection(topLeft, bottomRight);
    // 使用指定的选择模式来选择项目
    selectionModel->select(selection, QItemSelectionModel::Select);

    ui->mainToolBar->addAction(tr("当前项目"), this, SLOT(getCurrentItemData()));
    ui->mainToolBar->addAction(tr("切换选择"), this, SLOT(toggleSelection()));

    connect(selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
            this, SLOT(updateSelection(QItemSelection,QItemSelection)));
    connect(selectionModel, SIGNAL(currentChanged(QModelIndex,QModelIndex)),
            this, SLOT(changeCurrent(QModelIndex,QModelIndex)));

    // 多个视图共享选择
    tableView2 = new QTableView;
    tableView2->setWindowTitle("tableView2");
    tableView2->resize(400, 300);
    tableView2->setModel(model);
    tableView2->setSelectionModel(selectionModel);
    tableView2->show();
}
コード例 #5
0
ファイル: window.cpp プロジェクト: 3163504123/phantomjs
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    setWindowTitle("Selected items in a table model");

    model = new TableModel(8, 4, this);

    table = new QTableView(this);
    table->setModel(model);

    selectionModel = table->selectionModel();
    connect(selectionModel,
        SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
        this, SLOT(updateSelection(QItemSelection,QItemSelection)));
    connect(selectionModel,
        SIGNAL(currentChanged(QModelIndex,QModelIndex)),
        this, SLOT(changeCurrent(QModelIndex,QModelIndex)));

    statusBar();
    setCentralWidget(table);
}