### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
dag = DAG("dummy-dag", schedule=None, params={"param1": Param(type="string")})
        with pytest.raises(ParamValidationError, match="No value passed and Param has no default value"):
            dag.create_dagrun(
                run_id="test_dagrun_missing_param",
                state=State.RUNNING,
                execution_date=TEST_DATE,
            )
        dag = DAG("dummy-dag", schedule=None, params={"param1": Param(type="string")})
        with pytest.raises(
            ParamValidationError, match="Invalid input for param param1: None is not of type 'string'"
        ):
            dag.create_dagrun(
                run_id="test_dagrun_missing_param",
                state=State.RUNNING,
                execution_date=TEST_DATE,
                conf={"param1": None},
            )
        dag = DAG("dummy-dag", schedule=None, params={"param1": Param(type="string")})
        dag.create_dagrun(
            run_id="test_dagrun_missing_param",
            state=State.RUNNING,
            execution_date=TEST_DATE,
            conf={"param1": "hello"},
        )
    def test_return_date_range_with_num_method(self):